這個做業屬於哪一個課程 | C語言程序設計ll |
這個做業要求在哪裏 | https://edu.cnblogs.com/campus/zswxy/software-engineering-class1-2018/homework/2825 |
我在這個課程的目標是 | 但願能深刻字符數組和字符串函數,使用字符串編程,鞏固本身的基礎知識 |
這個做業在哪一個具體方面幫助我實現目標 | 這個做業讓我瞭解了字符數組和字符串函數的使用,還有一些沒學過的函數須要本身查資料 |
參考文獻 | 7.3判斷迴文的內容以及百度字符數組和使用字符串編程所用到的函數 |
本題目要求編寫程序統計一行字符中單詞的個數。所謂「單詞」是指連續不含空格的字符串,各單詞之間用空格分隔,空格數能夠是多個。編程
輸入給出一行字符。數組
在一行中輸出單詞個數。函數
Let's go to room 209.
5
#include<stdio.h> #include<string.h> int main (void) { int j,i=0,k=0; char str[1000]; gets(str); j=strlen(str); if(str[0]==' ') { k=0; } else { k=1; } for(i=0;i<j-1;i++) { if(str[i]==' '&&str[i+1]!=' ') { k++; } } printf("%d",k); return 0; }
問題1:編程過程當中將‘ ’和‘\0’混淆,致使答案部分正確
解決方法:翻閱書籍,查百度,發現‘\0’是字符串的結束符號,和‘ ’不一樣
問題2:使用getchar,致使運行結果一直錯誤
解決方法:改用gets,二者不一樣,getchar是讀入一個字符,而gets是讀入一個字符串學習
本題要求編寫程序,輸入若干英文單詞,對這些單詞按長度從小到大排序後輸出。若是長度相同,按照輸入的順序不變。設計
輸入爲若干英文單詞,每行一個,以#做爲輸入結束標誌。其中英文單詞總數不超過20個,英文單詞爲長度小於10的僅由小寫英文字母組成的字符串。3d
輸出爲排序後的結果,每一個單詞後面都額外輸出一個空格。指針
blue red yellow green purple #
red blue green yellow purple
#include <stdio.h> #include <string.h> int main(void) { char str[20][10]; char a[10],b[20]; int i,j,k=0; while(a>0) { scanf("%s",a); if(a[0]=='#') { break; } else { strcpy(str[k],a); k++; } } for(i=0;i<k-1;i++) for(j=1;j<k-i;j++) { if(strlen(str[j-1])>strlen(str[j])) { strcpy(b,str[j-1]); strcpy(str[j-1],str[j]); strcpy(str[j],b); } } for(i=0;i<k;i++) { printf("%s ",str[i]); } return 0; }
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(void) { FILE *fp; char str[20][10]; char a[10],b[20]; int i,j,k=0; if((fp=fopen("F:\\yangzixin.txt","r+"))==NULL) { printf("File open error!\n"); exit(0); } while(a>0) { fscanf(fp,"%s",a); scanf("%s",a); if(a[0]=='.') { break; } else { strcpy(str[k],a); k++; } } for(i=0;i<k-1;i++) { for(j=1;j<k-i;j++) { if(strlen(str[j-1])>strlen(str[j])) { strcpy(b,str[j-1]); strcpy(str[j-1],str[j]); strcpy(str[j],b); } } } fprintf(fp,"\n"); for(i=0;i<k;i++) { printf("%s ",str[i]); fprintf(fp,"%s ",str[i]); } fclose(fp); return 0; }
問題1:只給了k初始值,沒有進行下一步計算,致使運行無結果
解決方法:本身調試發現錯誤,但不太會改,就參考了一下大佬的代碼,加上條件
問題2:圖2直接按照上面的for語句寫,代碼中for語句條件沒考慮清楚
解決方法:仔細閱讀代碼,經過調試改正了錯誤,即最後一個for語句中的條件
問題3:忘記使用文件編程要用到#include<stdlib.h>此頭文件
解決方法:檢查了好久,又複習了書上關於文件的知識才改正過來
問題4:不懂怎麼用strcpy
解決方法:百度查閱相關資料,strcpy是一種C語言的標準庫函數,strcpy把含有'\0'結束符的字符串複製到另外一個地址空間,返回值的類型爲char*調試
預習了指針的第一節,地址和指針,指針變量的定義,指針的基本運算和指針變量的初始化。定義指針變量要使用指針聲明符,定義多個指針變量時,每個指針變量前面都必須加上,指針的類型和它所指向變量的類型必須相同,只能將一個指針的值賦給另外一個相同類型的指針。code
1.指針部分的內容仍是有不少看不懂的地方,須要老師講解
2.將指針方面的知識運用到編程當中去也不太會blog
周/日期 | 這周所花的時間 | 代碼行數 | 學到的知識點簡介 | 目前比較迷惑的問題 |
---|---|---|---|---|
2/25-3/3 | 2天 | 39 | 初次學習數組的用法 | 關於數組的一些具體的用法 |
3/4-3/10 | 2天 | 35 | 編寫程序來處理文件數據 | 指針的具體用法和fscanf類型函數的理解 |
3/11-3/17 | 1天 | 59 | 第一題:編寫程序處理文件數據 | 指針的具體用法 |
3/11-3/17 | 2天 | 51 | 第二題:用二維數組知識編寫程序 | 二維數組的知識點不熟悉 |
3/18-3/24 | 2天 | 111 | 二維數組、選擇法排序和冒泡法排序 | 選擇法排序和冒泡法排序的區別 |
3/25-3/31 | 2天 | 78 | 判斷迴文,字符數組和使用字符串編程 | 使用字符串編程時的一些函數的用法 |