此次做業屬於哪一個課程 | C語言程序設計 |
---|---|
此次做業要求在哪 | 要求 |
我在這個課程的目標是 | 學會運用字符排序 |
這個做業在那個具體方面幫助我實現目標 | 字符串的計數和排序 |
參考文獻 | c語言教科書和大佬博客 |
本題要求實現一個字符串逆序的簡單函數。
函數接口定義:數組
void f( char *p );
函數f對p指向的字符串進行逆序操做。要求函數f中不能定義任何數組,不能調用任何字符串處理函數。
裁判測試程序樣例:函數
#include <stdio.h> #define MAXS 20 void f( char *p ); void ReadString( char *s ); /* 由裁判實現,略去不表 */ int main() { char s[MAXS]; ReadString(s); f(s); printf("%s\n", s); return 0; } /* 你的代碼將被嵌在這裏 */
輸入樣例:學習
Hello World!
輸出樣例:測試
!dlroW olleH
![](https://img2018.cnblogs.com/blog/1580673/201904/1580673-20190419165419649-1061845468.png)
本題要求實現一個函數,將兩個字符串鏈接起來。
函數接口定義:設計
char *str_cat( char *s, char *t );
函數str_cat應將字符串t複製到字符串s的末端,而且返回字符串s的首地址。
裁判測試程序樣例:3d
#include <stdio.h> #include <string.h> #define MAXS 10 char *str_cat( char *s, char *t ); int main() { char *p; char str1[MAXS+MAXS] = {'\0'}, str2[MAXS] = {'\0'}; scanf("%s%s", str1, str2); p = str_cat(str1, str2); printf("%s\n%s\n", p, str1); return 0; } /* 你的代碼將被嵌在這裏 */
輸入樣例:指針
abc def
輸出樣例:code
abcdef abcdef
char *str_cat( char *s, char *t ) { int len; len=strlen(s); strcat(s+len,t); return s; }
截圖
blog
本題要求編寫程序,根據輸入學生的成績,統計並輸出學生的平均成績、最高成績和最低成績。建議使用動態內存分配來實現。
輸入格式:
輸入第一行首先給出一個正整數N,表示學生的個數。接下來一行給出N個學生的成績,數字間以空格分隔。
輸出格式:
按照如下格式輸出:排序
average = 平均成績 max = 最高成績 min = 最低成績 結果均保留兩位小數。
輸入樣例:
3 85 90 95
輸出樣例:
average = 90.00 max = 95.00 min = 85.00
#include <stdio.h> #include <stdlib.h> int main () { int n,i; double average,max,min,sum; double *p; scanf("%d",&n); if ((p=(double*)calloc(n,sizeof (int)))==NULL) { printf("Not able to allocate memory.\n"); exit(1); } for (i=0;i<n;i++) { scanf("%lf",p+i); } max=*(p+0); min=*(p+0); for(i=1;i<n;i++) { if(max<*(p+i)){ max=*(p+i); } if(min>*(p+i)) { min=*(p+i); } } sum=0; for(i=0;i<n;i++) { sum=+*(p+i); } average=sum/n; printf("average = %.2f\n",average); printf("max = %.2f\n",max); printf("min = %.2f\n",min); free(p); return 0; }
截圖
本題要求編寫程序,讀入5個字符串,按由小到大的順序輸出。
輸入格式:
輸入爲由空格分隔的5個非空字符串,每一個字符串不包括空格、製表符、換行符等空白字符,長度小於80。
輸出格式:
按照如下格式輸出排序後的結果:
After sorted: 每行一個字符串
輸入樣例:
red yellow blue green white
輸出樣例:
After sorted: blue green red white yellow
#include<stdio.h> #include<string.h> int main() { int i, g; char a[5][80],b[80]; for(i = 0;i < 5;i++) scanf("%s", &a[i]); } for(i = 1;i < 5;i++) { for(jg= 0;g < 5-i;g++) { if(strcmp(a[g],a[g+1])>0) { strcpy(b,a[g]); printf("After sorted:\n"); for(i = 0;i < 5;i++) { printf("%s\n", a[i]); } return 0; }
截圖
周/日期 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較困惑的問題 |
---|---|---|---|---|
3/9-3/15 | 3d | 100 | 文件創建及其文件的利用 | 無 |
3/15-3/18 | 4d | 150 | 二位數組和暴力解法 | 最大子數組最優的解法是什麼,如何下降時間複雜度 |
3/18-3/19 | 5d | 250 | 選擇排序法 | 我沒有徹底消化選擇排序法的思路 |
3/25-3/29 | 5d | 250 | 冒泡排序不會 | 指針也不會 |
3/29-4/5 | 5d | 300 | 指針的具體用法 | 函數和指針的結合 |
4/5-4/12 | 6d | 350 | 字符數組和指針的結合 | 綜合運用的方法 |
4/12-419 | 6d | 400 | 指針函數和數組函數 | 拓展函數 |