第五週做業

這個做業屬於哪一個課程 C語言程序設計ll
這個做業要求在哪裏 https://edu.cnblogs.com/campus/zswxy/software-engineering-class1-2018/homework/2825
我在這個課程的目標是 但願能深刻字符數組和字符串函數,使用字符串編程,鞏固本身的基礎知識
這個做業在哪一個具體方面幫助我實現目標 這個做業讓我瞭解了字符數組和字符串函數的使用,還有一些沒學過的函數須要本身查資料
參考文獻 7.3判斷迴文的內容以及百度字符數組和使用字符串編程所用到的函數

1、第四周做業預習題

7-1 統計一行文本的單詞個數 (15 分)

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

輸入格式:

輸入給出一行字符。數組

輸出格式:

在一行中輸出單詞個數。函數

輸入樣例:

Let's go to room 209.

輸出樣例:

5

1.實驗代碼

#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;
}

2.設計思路

3.解題過程當中遇到的問題及解決辦法


問題1:編程過程當中將‘ ’和‘\0’混淆,致使答案部分正確
解決方法:翻閱書籍,查百度,發現‘\0’是字符串的結束符號,和‘ ’不一樣
問題2:使用getchar,致使運行結果一直錯誤
解決方法:改用gets,二者不一樣,getchar是讀入一個字符,而gets是讀入一個字符串學習

4.運行結果截圖

2、基礎題

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

本題要求編寫程序,輸入若干英文單詞,對這些單詞按長度從小到大排序後輸出。若是長度相同,按照輸入的順序不變。設計

輸入格式:

輸入爲若干英文單詞,每行一個,以#做爲輸入結束標誌。其中英文單詞總數不超過20個,英文單詞爲長度小於10的僅由小寫英文字母組成的字符串。3d

輸出格式:

輸出爲排序後的結果,每一個單詞後面都額外輸出一個空格。指針

輸入樣例:

blue
red
yellow
green
purple
#

輸出樣例:

red blue green yellow purple

1.實驗代碼

原有代碼:

#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;
}

2.設計思路

3.解題過程當中遇到的問題及解決辦法



問題1:只給了k初始值,沒有進行下一步計算,致使運行無結果
解決方法:本身調試發現錯誤,但不太會改,就參考了一下大佬的代碼,加上條件
問題2:圖2直接按照上面的for語句寫,代碼中for語句條件沒考慮清楚
解決方法:仔細閱讀代碼,經過調試改正了錯誤,即最後一個for語句中的條件
問題3:忘記使用文件編程要用到#include<stdlib.h>此頭文件
解決方法:檢查了好久,又複習了書上關於文件的知識才改正過來
問題4:不懂怎麼用strcpy
解決方法:百度查閱相關資料,strcpy是一種C語言的標準庫函數,strcpy把含有'\0'結束符的字符串複製到另外一個地址空間,返回值的類型爲char*調試

4.運行結果截圖


3、預習做業

1.預習的主要內容

預習了指針的第一節,地址和指針,指針變量的定義,指針的基本運算和指針變量的初始化。定義指針變量要使用指針聲明符,定義多個指針變量時,每個指針變量前面都必須加上,指針的類型和它所指向變量的類型必須相同,只能將一個指針的值賦給另外一個相同類型的指針。code

2.完成狀況截圖(要求有題目和答案)

3.預習中存在的疑惑(至少寫出2條)

1.指針部分的內容仍是有不少看不懂的地方,須要老師講解
2.將指針方面的知識運用到編程當中去也不太會blog

4、學習進度條

周/日期 這周所花的時間 代碼行數 學到的知識點簡介 目前比較迷惑的問題
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 判斷迴文,字符數組和使用字符串編程 使用字符串編程時的一些函數的用法

5、學習感悟

這一週學習了判斷迴文,如何判斷迴文的條件,輸入字符串,再處理字符串;而後就是一維字符數組的使用,一維字符數組用於存放字符型數據,‘\0’的含義,‘\0’是字符串結束符;使用字符串編程。另外這一週的做業裏面又用到了文件的知識和指針的知識,因此學完以後的知識要多複習,而後要多去看,去練習,strcpy和一些別的用於字符串裏面的函數不是太懂,要去本身多看看。

6、結對編程感悟

我以爲結對編程不是很方便,一方面是人不認識,另外一方面就是我以爲要本身一我的獨立思考,有人在旁邊說話會打斷思路,更加不利於思考。因此我都是一我的寫,不會再問別人的。

相關文章
相關標籤/搜索