這個做業屬於那個課程 | C語言程序設計II |
---|---|
這個做業要求在哪裏 | (https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2824) |
我在這個課程的目標是 | 能熟練應用字符數組 |
這個做業在那個具體方面幫助我實現目標 | 本次做業須要知道對字符串的儲存,字符串的長度大小 |
參考文獻 | 字符串長度獲取的三種方法 |
本題要求編寫程序,輸入若干英文單詞,對這些單詞按長度從小到大排序後輸出。若是長度相同,按照輸入的順序不變。c++
輸入爲若干英文單詞,每行一個,以#做爲輸入結束標誌。其中英文單詞總數不超過20個,英文單詞爲長度小於10的僅由小寫英文字母組成的字符串。編程
輸出爲排序後的結果,每一個單詞後面都額外輸出一個空格。數組
blue red yellow green purple #
red blue green yellow purple
#include<bits/stdc++.h> int main() { char str[21][11]; char a[11]; int i=0,j; while(1){ //儲存字符串 scanf("%s",str[i]); if(str[i][0]=='#') break; else i++; } int len=i; //一共多少個單詞賦給len for(i=0;i<len;i++) //兩個for循環是經過冒泡排序把字符串按其長度從小到大排序 for(j=1;j<len-i;j++) if(strlen(str[j-1])>strlen(str[j])) //比較字符串長度大小 { strcpy(a,str[j-1]); //將str[j-1]與str[j]的字符串交換 strcpy(str[j-1],str[j]); strcpy(str[j],a); } for(i=0;i<len;i++) //循環輸出字符串 printf("%s ",str[i]); return 0; }
#include<stdio.h> int main() { int i,j,n,min; char word[10][20]; int a[10]; for(i=0;i<10;i++){ for(j=0;j<20;j++){ word[i][j]=getchar(); if(word[i][j]=='#'||word[i][j]=='\n') break; } a[i]=j; if(word[i][j]=='#') break; } for(n=0;n<i;n++){ min=0; for(j=1;j<i;j++){ while(a[min]==0) min++; if(a[j]<a[min]&&a[j]>0) min=j; } for(j=0;j<a[min];j++) putchar(word[min][j]); printf(" "); a[min]=0; } return 0; }
剛開始我是寫的這樣的代碼,而後就出現了這樣的問題,我經過調試發現是我單詞數量與長度搞反了,而後我把兩項交換後發現依然這裏提示錯誤,我調試發現把最大單詞輸入後,程序就會返回亂碼,以後我經過檢查發現應該還要在長度上在+1,由於在字符串最後還有一個字符結束符'\0',因此致使了數據的溢出最後就返回了亂碼,而後再修改就能夠了,修改後的截圖以下:
函數
#include<bits/stdc++.h> int main() { FILE*fp; char str[21][11]; char a[11]; int i=0,j; if((fp=fopen("D:\\pz.txt","r+"))==NULL) { printf("File open error!\n"); exit(0); } while(1){ fscanf(fp,"%s",str[i]); if(str[i][0]=='+') break; else i++; } int len=i; for(i=0;i<len;i++) for(j=1;j<len-i;j++) if(strlen(str[j-1])>strlen(str[j])) { strcpy(a,str[j-1]); strcpy(str[j-1],str[j]); strcpy(str[j],a); } fprintf(fp,"\n"); for(i=0;i<len;i++){ fprintf(fp,"%s ",str[i]); printf("%s ",str[i]); } if(fclose(fp)){ printf("Can not close the file!\n"); exit(0); } return 0; }
預習的主要內容:指針與數組的區別,指針的基本運算與應用
預習中存在的疑惑:雖然目前我沒有什麼疑惑的地方,可是對於指針我依舊是懵懵懂懂的感受學習
周/日期 | 這周所花時間 | 代碼行數 | 學到的知識點 | 目前比較迷惑的問題 |
---|---|---|---|---|
3月4-3月10 | 4天 | 130行 | 如何讀取文件中的數據並寫入數據 | |
3/11-3/17 | 2天 | 66行 | 一些有關文件的函數 | |
3/18-3/24 | 2天 | 103行 | 二維數組的定義與使用 | |
3/25-3/31 | 2天 | 140行 | 與字符串有關的函數strlen,strcpy | 一些與字符串有關的函數使用方法 |
之前寫題目都是能夠根據所學知識很快就有思路而且寫出來,可是這一次的編輯題我是雖然有思路可是寫起來卻很麻煩,這就說明個人知識儲備已經快不能知足個人需求了,因此我應該要多去補充補充知識儲備了spa
經過結對編程我能知道我存在的一些問題,好比和結對夥伴說明個人作題思路時,我就發現個人思路就由於過於複雜而不容易理解,因而我就去百度找能快速運算的函數,而後就學習到了一些新的函數.net