2019 第七週做業

2019春季第七週做業html

這個做業屬於哪一個課程 C語言程序設計ll
這個做業要求在哪裏 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2935
我在這個課程的目標是 掌握指針變量的基本運算,瞭解指針數組
這個做業在哪一個具體方面幫助我實現目標 這個做業讓我又認識了新的指針——指針數組
參考文獻 http://c.biancheng.net/cpp/html/476.html

1、基礎題

一、 每一個單詞的最後一個字母改爲大寫

函數fun的功能是:將p所指字符串中每一個單詞的最後一個字母改爲大寫。(這裏的「單詞」是指由空格隔開的字符串)。編程

函數接口定義:數組

void fun( char *p );

其中 p 是用戶傳入的參數。函數將 p所指字符串中每一個單詞的最後一個字母改爲大寫。app

裁判測試程序樣例:函數

#include <stdio.h>
void fun( char *p );
int main()
{
 char chrstr[64];  int d ;
  gets(chrstr);
  d=strlen(chrstr) ;
  chrstr[d] = ' ' ;
  chrstr[d+1] = 0 ;
  fun(chrstr);
  printf("\nAfter changing:   %s\n", chrstr);
return 0;
}

/* 請在這裏填寫答案 */學習

輸入樣例:測試

my friend is happy

輸出樣例:ui

After changing:   mY frienD iS happY

(1)實驗代碼

#include <stdio.h>
void fun( char *p );
int main()
{
       char chrstr[64]; 
       int d ;

       gets(chrstr);
       d=strlen(chrstr) ;
       chrstr[d] = ' ' ;
       chrstr[d+1] = 0 ;
       fun(chrstr);

       printf("\nAfter changing:   %s\n", chrstr);

      return 0;
}
void fun (char *p )
{
        int i;
        for(i=0;p[i]!='\0';i++)
        {
            if(p[i+1]==' ')
            p[i]=p[i]-'a'+'A';
        }
}

(2)設計思路

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

問題:·進制轉換的時候不懂怎樣將小寫改爲大
解決方法:·查看了ASCII碼錶並看了十進制的值,而後對比小寫和大寫的差值.net

(4)運行結果截圖

二、自動售貨機

如圖所示的簡易自動售貨機,物品架一、2上共有10樣商品,按順序進行編號分別爲1-10,標有價格與名稱,一個編號對應一個可操做按鈕,供選擇商品使用。若是物架上的商品被用戶買走,儲物櫃中會自動取出商品送到物架上,保證物品架上必定會有商品。用戶能夠一次投入較多錢幣,並能夠選擇多樣商品,售貨機能夠一次性將商品輸出並找零錢。設計

1.jpg

用戶購買商品的操做方法是:

(1)從「錢幣入口」放入錢幣,依次放入多個硬幣或紙幣。錢幣可支持1元(紙幣、硬幣)、2元(紙幣)、5元(紙幣)、10元(紙幣),放入錢幣時,控制器會先對錢幣進行檢驗識別出幣值,並統計幣值總額,顯示在控制器顯示屏中,提示用戶確認錢幣放入完畢;

(2)用戶確認錢幣放入完畢,即可選擇商品,只要用手指按對應商品外面的編號按鈕便可。每選中同樣商品,售貨機控制器會判斷錢幣是否足夠購買,若是錢幣足夠,自動根據編號將物品進行計數和計算所需錢幣值,並提示餘額。若是錢幣不足,控制器則提示「Insufficient money」。用戶能夠取消購買,將會把全部放入錢幣退回給用戶。

輸入格式:

先輸入錢幣值序列,以-1做爲結束,再依次輸入多個購買商品編號,以-1結束。

輸出格式:

輸出錢幣總額與找回零錢,以及所購買商品名稱及數量。

輸入樣例:

1 1 2 2 5 5 10 10 -1
1 2 3 5 1 6 9 10 -1

輸出樣例:

Total:36yuan,change:19yuan
Table-water:2;Table-water:1;Table-water:1;Milk:1;Beer:1;Oolong-Tea:1;Green-Tea:1;

(1)實驗代碼

#include<stdio.h>
#include<string.h>
int main (void)
{
       int total = 0, change = 0, i = 0;
       int m, sum[11] = {0}, price[11]={0,1,1,1,2,2,3,3,3,4,4};
       char a[11][20]={"","Table-water","Table-water","Table-water","Coca-Cola","Milk","Beer","Oolong-Juice","Sprite","Oolong-Tea","Green-Tea"};
 
       while(1)
       {
           scanf("%d", &m);
        
           if(m == -1)
           break;
            
           total = total + m;    //放入的錢的總數 
    
       }   

        while(1)
       {
           scanf("%d", &m);
        
           if(m == -1)
           break;
        
           sum[m]++;         //統計所買的各個商品的數量
       }
    
       for(i = 1;i < 11;i++)
       {
           change = change + price[i] * sum[i];    //計算所買商品的價格 
       }
    
       if(change > total)       //判斷錢是否足夠
       {
           printf("Insufficient money");
        
           return 0;
       }
    
       printf("Total:%dyuan,change:%dyuan\n", total, total - change);      //輸出價格
    
       for(i = 1;i < 11;i++)       //輸出商品購買的數量
       {
           if(sum[i] != 0)
           {
               printf("%s:%d;", a[i], sum[i]);
           }
       }
    
       return 0;
}

(2)設計思路

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

問題:·感受本題比較難,思路不清晰,看了其餘博主的代碼,可是仍是有不少問題,好比不清楚數組的第一個數爲何要改成空格,還有一開始沒有考慮到放入的錢不夠的狀況。
解決方法:·參看其餘博主的代碼,本身慢慢改寫,還會繼續鑽研的!

(4)運行結果截圖

2、預習題

一、使用函數刪除字符串中的字符

輸入一個正整數 repeat (0<repeat<10),作 repeat 次下列運算:

輸入一個字符串 str,再輸入一個字符 c,將字符串 str 中出現的全部字符 c 刪除。

要求定義並調用函數delchar(str,c), 它的功能是將字符串 str 中出現的全部 c 字符刪除,函數形參str的類型是字符指針,形參c的類型是char,函數類型是void。

輸入輸出示例:括號內爲說明,無需輸入輸出

輸入樣例:

3               (repeat=3)
happy new year  (字符串"happy new year")
a               (待刪除的字符'a')
bee             (字符串"bee")
e               (待刪除的字符'e')
111211          (字符串"111211")
1               (待刪除的字符'1')

輸出樣例:

result: hppy new yer    (字符串"happy new year"中的字符'a'都被刪除)
result: b               (字符串"bee"中的字符'e'都被刪除)
result: 2               (字符串"111211"中的字符'1'都被刪除)

(1)實驗代碼

#include<stdio.h>
void delchar(char str[],char c);
int main()
{
    int repeat;                // repeat (0<repeat<10)
    char str[100],c;

    scanf("%d\n",&repeat);  
    while(repeat--)
    {
        gets(str);             //輸入字符串 
            scanf("%c",&c);
          printf("result: "); 
        
        delchar(str,c);        //調用函數,它的功能是將字符串 str 中出現的全部 c 字符刪除
    }

    return 0;
}

void delchar(char str[],char c)    //str[]至關於*p
{
    while(*str!='\0')              //不爲空字符 
    {
        if(*str!=c)  
        {
            putchar(*str);         //輸出字符 
        }
        str++; 
    }
}

(2)設計思路

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

問題:·粗心沒寫printf("result: ");
解決方法:·運行格式錯誤以後返回代碼仔細檢查

問題:·不太清楚 '\0' 的意思
解決方法:·查了資料知道了它是空字符的意思

(4)運行結果截圖

3、預習的主要內容

預習了指針數組和數組指針的區別:

在C語言和C++語言中,數組元素全爲指針的數組稱爲指針數組。一維指針數組的定義形式爲:「類型名*數組標識符[數組長度]」。指針數組中的每個元素均爲指針。指針數組能夠做爲函數的參量使用,使用方式與普通數組相似。指針數組常適用於指向若干字符串,這樣使字符串處理更加靈活方便。。

數組指針是指向數組首元素的地址的指針,其本質爲指針(這個指針存放的是數組首地址的地址,至關於2級指針,這個指針不可移動); 指針數組是數組元素爲指針的數組,其本質爲數組。例如:*p[2]是指針數組,實質是一個數組,裏面的兩個元素都是指針,每一個數組元素至關於一個指針變量。。

相比於比二維字符數組,指針數組有明顯的優勢:一是指針數組中每一個元素所指的字符串沒必要限制在相同的字符長度;二是訪問指針數組中的一個元素是用指針間接進行的,效率比下標方式要高。 可是二維字符數組卻能夠經過下標很方便的修改某一元素的值,而指針數組卻沒法這麼作。。

4、學習感悟

本週學習了指針數組,指針數組能夠說成是」指針的數組」,首先這個變量是一個數組。其次,」指針」修飾這個數組,意思是說這個數組的全部元素都是指針類型。在 32 位系統中,指針佔四個字節。在C語言和C++語言中,數組元素全爲指針的數組稱爲指針數組。一維指針數組的定義形式爲:「類型名*數組標識符[數組長度]」。指針數組中的每個元素均爲指針。指針數組能夠做爲函數的參量使用,使用方式與普通數組相似。指針數組常適用於指向若干字符串,這樣使字符串處理更加靈活方便。。

感悟:雖然比較難,可是仍是會繼續努力的!

5、結對編程感想

每週三晚自習是咱們結對編程的時間,我和搭檔很默契,咱們會在雙方互相寫完代碼後再進行討論,而後看一下雙方的代碼有什麼區別,而後再互相講一下思路。我以爲結對編程的優勢就是能夠了解一個代碼不一樣的思路,不一樣的寫法,也能夠增進同窗之間的關係;缺點就是討論時會擾亂雙方的思路。。

6、學習進度條

周/日期 這周所花的時間 代碼行數 學到的知識點簡介 目前比較迷惑的問題
2/25-3/3 三天 45 數組的認識及用法 數組長度的理解
3/4-3/10 兩天 37 編寫程序時處理文件 fscanf與fprintf的具體用法
3/11-3/17 三天 53 二維數組的使用及文件插入 二維數組的用法、上三角的判斷及文件的處理
3/18-3/24 兩天 113 選擇排序法、二分查找法、二維數組的引用與矩陣 不清楚選擇排序法和冒泡排序法的區別
3/25-3/31 兩天 78 判斷迴文、一維字符數組的用法、使用字符串編程 使用字符串編程
4/1-4/7 兩天 88 指針變量的基本運算,內存單元和地址之間的關係 不太瞭解指針數組
4/8-4/14 兩天 96 指針、數組和地址之間的關係 對於指針數組和數組指針的區別不是特別清楚

7、表格和折線圖

時間 代碼行數 博客字數
第一週 45 870
第二週 37 1055
第三週 112 1158
第四周 113 1696
第五週 78 1854
第六週 114 2977
第七週 96 3019

相關文章
相關標籤/搜索