😀android
這個做業屬於那個課程 | C語言程序設計ll |
這個做業要求在哪裏 | https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2824 |
我在這個課程的目標是 | 我但願可以經過學習這一節內容,解決各類類型排序問題 |
這個做業在那個具體方面幫助我實現目標 | 出現了未接觸的函數語句,幫助我自學查詢百度,學習視頻 |
參考文獻 | http://www.bilibili.com/video/av8302677?p=19&share_medium=android&share_source=qq&bbid=Pl0-DWgKPA1uDzcAfAB8infoc&ts=1553754700001 |
本題目要求編寫程序統計一行字符中單詞的個數。所謂「單詞」是指連續不含空格的字符串,各單詞之間用空格分隔,空格數能夠是多個。編程
輸入給出一行字符。數組
在一行中輸出單詞個數。ide
Let's go to room 209.函數
5學習
#include<stdio.h> #include<string.h> int main() { int len, i, num; char a[1000]; gets(a); len = strlen(a); if (a[0] == ' ') num = 0; else num = 1; for (i = 0; i<len - 1; i++) { if (a[i] == ' ' && a[i + 1] != ' ') num++; } printf("%d", num); return 0; }
問題1:將數組寫成a[100]顯示錯誤(見錯誤截圖)
解決辦法:定義的長度過小,隨意輸入單詞很容易超出數組長度範圍設計
正確截圖:
3d
錯誤截圖:
指針
本題要求編寫程序,輸入若干英文單詞,對這些單詞按長度從小到大排序後輸出。若是長度相同,按照輸入的順序不變。調試
輸入爲若干英文單詞,每行一個,以#做爲輸入結束標誌。其中英文單詞總數不超過20個,英文單詞爲長度小於10的僅由小寫英文字母組成的字符串。
輸出爲排序後的結果,每一個單詞後面都額外輸出一個空格。
blue red yellow green purple #
red blue green yellow purple
#include<stdio.h> #include<string.h> int main(void) { char a[21][11] = { '\0' }; char s[11] = { '\0' }; int i, j = 0, len; while (1) { scanf("%s", a[i]); if (a[i][0] == '#') break; i++; } len = i; for (i = 0; i < len-1; i++) { for (j = 1; j < len - i; j++) { if (strlen(a[j - 1]) > strlen(a[j])) { strcpy(s, a[j - 1]); strcpy(a[j - 1], a[j]); strcpy(a[j], s); } } } for (i = 0; i < len; i++) printf("%s ", a[i]); return 0; }
#include<stdio.h> #include<stdlib.h> #include<string.h> int main(void) { FILE *fp; char a[21][11] = { '\0' }; char s[11] = { '\0' }; int i, j = 0, len; fp=fopen("D:\\C做業\\xiongyating.txt","r+"); while (1) { scanf("%s", a[i]); fscanf(fp,"%s", &a[i]); if (a[i][0] == '*') break; i++; } len = i; for (i = 0; i < len-1; i++) { for (j = 1; j < len - i; j++) { if (strlen(a[j - 1]) > strlen(a[j])) { strcpy(s, a[j - 1]); strcpy(a[j - 1], a[j]); strcpy(a[j], s); } } } for (i = 0; i < len; i++) printf("%s ", a[i]); fprintf(fp,"\n"); for(i = 0; i < len; i++) fprintf(fp,"%s ", a[i]); fclose(fp); return 0; }
問題1:開始想的太簡單,雖然知道她的思路可是卻忽略了他是一整串字符去比較長度(見錯誤截圖1)
解決辦法:參考其餘博主,再自行編寫改寫代碼尋找問題
問題2:起初想達到while語句循環用的是len>0出現了錯誤(見錯誤圖2)
解決方法:檢查發現len沒有賦初始值,沒法去進行判斷
問題3:對於改寫成文件形式代碼,開始出現了的錯誤就是不能使最終答案按正確形式從文件打印出(見錯誤截圖3)
解決方法:將後面多加了一個for語句使數據從文件中輸出
正確截圖:
錯誤截圖1:
錯誤截圖2:
錯誤截圖3:
周/日期 | 這周所花時間 | 代碼行數 | 學到的知識點 | 目前比較迷惑的問題 | |
---|---|---|---|---|---|
第一題 | 3/26-3/27 | 2h | 25行 | 字符串與字符的區別對待 | gets語句的使用 |
第二題 | 3/26-3/28 | 8h | 38行 | strcpy語句用法 | 如何看到題目就知道要用二維數組 |
本週學習了數組比較字符串長短排序,學到兩個新的語句:strlen()計算字符串長度,strcpy()用來覅之字符串的庫函數。可是感受對strcpy()仍是有點陌生。
預習了一下指針,其實寒假就看了一下指針的,可是當時真心沒看懂,腦袋大的我如今依舊以爲它挺難的,對於指針的預習我搜了相關視頻學習,包括老師提供的視頻,可是沒太明白。
結對編程這個想法我以爲是很好,可是咱們並無達到那種效果,就目前我對結對編程的見解都是感到不習慣,會在思考的時候被對方一問問題,本身就一塊兒懵了, 而後本身原本想的是啥也記不得了,因此我會在想是否是要先寫完,再去交流兩我的的想法與問題。