2019春第五週做業


這個做業屬於哪一個課程 C語言程序設計
這個做業的要求在哪裏 (https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2824)
我在這個課程的目標是 瞭解字符數組與字符串的區別,學習字符串的輸入輸出格式,預習指針
這個做業在哪一個具體方面幫助我實現目標 讓我瞭解了字符數組與字符串的區別,知道了數組的複製方法
參考文獻 C語言數組的複製

一.基礎做業

7-1 英文單詞排序 (25 分)

本題要求編寫程序,輸入若干英文單詞,對這些單詞按長度從小到大排序後輸出。若是長度相同,按照輸入的順序不變。
輸入格式:
輸入爲若干英文單詞,每行一個,以#做爲輸入結束標誌。其中英文單詞總數不超過20個,英文單詞爲長度小於10的僅由小寫英文字母組成的字符串。
輸出格式:
輸出爲排序後的結果,每一個單詞後面都額外輸出一個空格。
輸入樣例:html

blue
red
yellow
green
purple
#

輸出樣例:編程

red blue green yellow purple

1)文件代碼

#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 分)

本題目要求編寫程序統計一行字符中單詞的個數。所謂「單詞」是指連續不含空格的字符串,各單詞之間用空格分隔,空格數能夠是多個。
輸入格式:
輸入給出一行字符。
輸出格式:
在一行中輸出單詞個數。
輸入樣例:函數

Let's go to room 209.

輸出樣例:學習

5

1)程序代碼

#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.指針和地址3d

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語言的知識,加強本身的編程能力,之後作題目纔會駕輕就熟。調試

五.結對編程感想

本身不懂的能夠問對方,兩我的合做作起題目來更容易,也更有幹勁,取他人之長補己之短,能快速加強本身的專業能力,也可以加強本身的溝通交流能力,一箭雙鵰。code

相關文章
相關標籤/搜索