2019春第五周作业
| 這個作業屬于哪個課程 | C語言程序設計 |
| 這個作業的要求在哪里 | (https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2824) |
| 我在這個課程的目標是 | 了解字符數組與字符串的區別,學習字符串的輸入輸出格式,預習指針 |
| 這個作業在哪個具體方面幫助我實現目標 | 讓我了解了字符數組與字符串的區別,知道了數組的復制方法 |
| 參考文獻 | C語言數組的復制 |
一.基礎作業
7-1 英文單詞排序 (25 分)
本題要求編寫程序,輸入若干英文單詞,對這些單詞按長度從小到大排序后輸出。如果長度相同,按照輸入的順序不變。
輸入格式:
輸入為若干英文單詞,每行一個,以#作為輸入結束標志。其中英文單詞總數不超過20個,英文單詞為長度小于10的僅由小寫英文字母組成的字符串。
輸出格式:
輸出為排序后的結果,每個單詞后面都額外輸出一個空格。
輸入樣例:
輸出樣例:
red blue green yellow purple1)文件代碼
#include<stdio.h> #include<string.h> #include<stdlib.h> int main() {FILE *fp;//定義文件指針 char str[21][11],b[11];int i=0;//打開文件if((fp=fopen("E:\\Liuwei.txt","a+"))==NULL){exit(0);} //文件處理for(i=0;i<21;i++){fscanf(fp,"%s",str[i]);if (str[i][0]=='-')break;}int z=i;//將每個單詞排序 for(int m=0;m<z;m++){for(int n=0;n<z-m-1;n++){if(strlen(str[n])>strlen(str[n+1])){strcpy(b,str[n]);strcpy(str[n],str[n+1]);strcpy(str[n+1],b);}}}//寫入文件 for(int m=0;m<z;m++){if(m==0){fprintf(fp,"\n");}fprintf(fp,"%s ",str[m]);}//關閉文件if(fclose(fp)){exit(0);} return 0; }2)設計思路
3)本題調試過程中遇到的問題及解決辦法
問題:不知道怎樣計算每個單詞的長度,用getchar()方法輸入太復雜。
解決辦法:看了網友的代碼,看懂后發現有好簡單代碼可以用,如數組長度計算代碼strlen和字符串復制代碼strcpy,只是自己不知道,搞懂后我用自己的方法做了出來。
4)運行結果
7-1 統計一行文本的單詞個數 (15 分)
本題目要求編寫程序統計一行字符中單詞的個數。所謂“單詞”是指連續不含空格的字符串,各單詞之間用空格分隔,空格數可以是多個。
輸入格式:
輸入給出一行字符。
輸出格式:
在一行中輸出單詞個數。
輸入樣例:
輸出樣例:
51)程序代碼
#include<stdio.h> int main() {char str[1000];int k=0,q=0;//賦值以'\n'結尾 //gets 是讀取換行符的,不過它會把換行符轉換為'\0'gets(str);while(str[k]!='\0'){k++;}//該賦值的結果為str[k]=='\0',所以for循環判斷i<=k才能將'\0'包括進去 for(int i=1;i<=k;i++){//只要前面不是空格,后面是空格就一定有一個單詞 if(str[i-1]!=' '&&str[i]==' '){q++; }//若'\n'之前不以空格結尾,則上面的判斷就少加一個單詞。 if(str[i-1]!=' '&&str[i]=='\0'){q++;}}printf("%d",q);return 0;}2)設計思路
3)本題調試過程中遇到的問題及解決辦法
問題:一開始我也不知道怎么在pta上過不了,總覺得代碼沒有問題。
解決辦法:看了網友的代碼,我跟他們的代碼大同小異,就是定義的數組空間我的是100,他們的是1000,我改成1000后就過了,看了是我的數組空間定義小了
4)運行結果
二.預習題
1.預習的主要內容
1.指針變量的定義
2.指針的基本運算
3.指針變量的初始化
4.指針和地址
2.完成情況截圖
3.預習中存在的疑惑
1.二級指針**p怎么理解和運用
2.指針和函數參數的關系
3.指針不能靈活運用,現在感覺指針的用處好像不大。
三.學習進度條
| 2/25-3/3 | 6h | 30 | 一維數組的定義和引用及初始化 | 字符數組和整型數組的區別 |
| 3/4-3/10 | 12h | 60 | 指針的定義及運用;文件的讀取、寫入, 處理和開關;文件的打開方. | 文件的分類,什么是文本文件, 什么是二進制文件;字符數組的讀取和寫入 |
| 3/11-3/17 | 6h | 30 | 二維數組的定義及應用 | 二維數組的行和列的嵌套循環輸入和輸出 |
| 3/18-3/24 | 12h | 60 | 選擇排序法、冒泡排序法和二分查找法 | 不清楚選擇排序法和冒泡排序法的區別 |
| 3/25-3/31 | 20h | 60 | 字符數組和字符串的區別,字符串的輸入輸出方式和格式,二維數組更高級的運用。 | 不清楚指針在程序中的作用 |
四.學習感悟
感覺這次作業比較難,我也是借鑒了網友的答案才做出來的,特別是英文單詞排序,我發現有好多知識點我不知道,所以做起題目來就感覺很困難,覺得以后要多上網多了解C語言的知識,增強自己的編程能力,以后做題目才會得心應手。
五.結對編程感想
自己不懂的可以問對方,兩個人合作做起題目來更容易,也更有干勁,取他人之長補己之短,能快速增強自己的專業能力,也能夠增強自己的溝通交流能力,一舉兩得。
轉載于:https://www.cnblogs.com/liu2687479342/p/10623240.html
總結
以上是生活随笔為你收集整理的2019春第五周作业的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue-cli 脚手架搭建
- 下一篇: 重写父类中的方法