2019 第五週做業

2019春季第五週做業編程

這個做業屬於哪一個課程 C語言程序設計ll
這個做業要求在哪裏 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2824
我在這個課程的目標是 但願能多瞭解一維字符數組及字符串的用法,之後遇見相似的題目時可以不出錯誤的作出來
這個做業在哪一個具體方面幫助我實現目標 這個做業讓我大概瞭解了使用字符串編程,而且對一維數組有了更深刻的瞭解
參考文獻 https://www.jb51.net/article/37456.htm

1、 統計一行文本的單詞個數

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

輸入格式:

輸入給出一行字符。學習

輸出格式:

在一行中輸出單詞個數。.net

輸入樣例:

Let's go to room 209.

輸出樣例:

5

(1)實驗代碼

#include<stdio.h>
#include<string.h>
int main()
{
    int i,j,x;
    char a[1000];
    gets(a);        //從標準輸入文件讀入一個字符串到字符數組a,輸入字符串以回車結束 
    x=strlen(a);    //計算字符串長度x 
    
    if(a[0]==' ')
        j=0;
    else
        j=1;
    for(i=0;i<x-1;i++)
    {
        if(a[i]==' ' && a[i+1]!=' ')
            j++;
    }
    printf("%d\n",j);
    return 0; 
}

(2)設計思路

(3)本題調試過程當中碰到問題及解決方法

問題1:定義字符串數組的時候不太清楚a[100]與a[1000]的區別,定義成a[100]就是錯的
解決方法:本身查了資料,而後問了班上的大佬設計

問題2:不太清楚get char與gets的區別
解決方法:翻書看,get char表示從標準輸入文件讀入一個字符,而gets表示讀入一串字符3d

(4)運行結果截圖

2、 英文單詞排序

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

輸入格式:

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

輸出格式:

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

輸入樣例:

blue
red
yellow
green
purple
#

輸出樣例:

red blue green yellow purple

(1)實驗代碼

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
    FILE*fp;
    char a[20][10],m[20],x[10];
    int i,j,n=0;
    
    if((fp=fopen("C:\\Users\\Administrator\\Desktop\\zhangman.txt","r+"))==NULL)              //打開文件
    {
        printf("File open error!\n");
        exit(0);
    }
    while(1)
    {
        fscanf(fp,"%s", x);
        scanf("%s",x);                    //輸入字符串數組
        
        if(x[0]=='%')
        {
            break;
        }
        else
        {
            strcpy(a[n],x);                     //把數組x的值賦給數組a[n]  
            n++;
        }
    }
    for(i=0;i<n-1;i++)                       //計算字符串長度並進行比較 
        for(j=1;j<n;j++)
        {
            if(strlen(a[j])<strlen(a[j-1]))
            {
               strcpy(m,a[j-1]);
               strcpy(a[j-1],a[j]);
               strcpy(a[j],m);
            }
        }
    for(i=0;i<n;i++)                         //輸出字符串數組
    {
        printf("%s ",a[i]);
    }
    fprintf(fp,"\n");
    
    for(i=0;i<n;i++)
    {
        fprintf(fp,"%s ",a[i]);
    } 
      
    if(fclose(fp))                                        //關閉文件
    {
        printf("Can not close the file!\n");
        exit(0);
    }
    return 0;
}

(2)設計思路

(3)本題調試過程當中遇到的問題及解決方法

問題1:在寫代碼的時候沒有定義二維數組,致使一直答案錯誤
解決方法:一直運行仍是沒發現哪裏錯誤,而後搜了百度,後來問的班上的大佬htm

問題2:第一次 遇到strcpy,不太清楚它的含義及用法
解決方法:查資料,問了大佬,大概瞭解了它的用法

(4)運行結果截圖

3、預習題

(1)預習的主要內容

預習了指針的第1小節密碼開鎖,程序中定義了變量x來存放密碼,再定義一個特殊的指針變量p,用於存放變量x的地址。這樣既能夠經過變量名x直接獲得密碼值,也能夠在不知道變量名的狀況下,經過指針變量p所存放的x的地址間接找到密碼值。地址和指針是計算機中的兩個重要概念,在程序運行過程當中,變量或者程序代碼被儲存在以字節爲單位組織的存儲器中。在C語言中,若是定義了一個變量,在編譯時就會根據該變量的類型給它分配相應大小的內存單元。指針聲明符在定義指針時被使用,說明被定義的那個變量是指針。定義多個指針變量時,每個指針變量前面都必須加上。指針的類型和它所指向變量的類型必須相同。只能將一個指針的值賦給另外一個相同類型的指針。

(2)完成狀況截圖

(3)預習中存在的疑惑

疑惑1:不太能區份內存單元的內容和內存單元的地址

疑惑2:把指針用到程序中還有不少地方不懂

疑惑3:對於指針的基本運算也不是很清楚。

4、學習進度條

周/日期 這周所花的時間 代碼行數 學到的知識點簡介 目前比較迷惑的問題
2/25-3/3 三天 45 數組的認識及用法 數組長度的理解
3/4-3/10 兩天 37 編寫程序時處理文件 fscanf與fprintf的具體用法
3/11-3/17 三天 112 二維數組的使用及文件插入 二維數組的用法、上三角的判斷及文件的處理
3/18-3/24 兩天 113 選擇排序法、二分查找法、二維數組的引用與矩陣 不清楚選擇排序法和冒泡排序法的區別
3/25-3/31 兩天 78 判斷迴文、一維字符數組的用法、使用字符串編程 使用字符串編程

5、學習感悟

本週學習了:
判斷迴文,其中學的包括了一維字符數組,一維字符數組用於存放字符型數據,它的定義、初始化和引用與其餘類的一維數組同樣;另外,還學習了字符串及使用字符串編程,字符串常量就是用一對雙引號括起來的字符序列,C語言將字符串做爲一個特殊的一維字符數組來處理。
目前對使用字符串數組不是特別清楚。

感悟:寶劍鋒從磨礪出,梅花香自苦寒來。

6、結對編程感想

每週三晚自習是咱們結對編程的時間,個人搭檔每次都來的,可是咱們基本不討論,都是本身作本身的,對於咱們來講討論有點擾亂本身的思路,好不容易想出來的題目只要對方說句話就有可能忘了,因此,咱們通常都是寫完做業後才討論或者就瞎聊,結對編程對咱們來講好像沒有什麼做用,不知道對其餘同窗有沒有什麼效果。

相關文章
相關標籤/搜索