2019第七周作业
題目1. 6-2 每個單詞的最后一個字母改成大寫 (10 分)
函數fun的功能是:將p所指字符串中每個單詞的最后一個字母改成大寫。(這里的“單詞”是指由空格隔開的字符串)。
函數接口定義:
其中 p 是用戶傳入的參數。函數將 p所指字符串中每個單詞的最后一個字母改成大寫。
裁判測試程序樣例:
輸入樣例:
my friend is happy輸出樣例:
After changing: mY frienD iS happY1).實驗代碼
void fun( char *p ){int i;for(i=0;*(p+i)!='\0';i++){if(*(p+i+1)==' ')*(p+i)=*(p+i)-32;} }2). 設計思路
3).本題調試過程碰到問題及解決辦法
錯誤是因為單引號中沒空格
因為大寫字母與小寫字母ASCII碼相差32,所以可以通過加減32進行轉換。
7-2 自動售貨機 (30 分)
如圖所示的簡易自動售貨機,物品架1、2上共有10樣商品,按順序進行編號分別為1-10,標有價格與名稱,一個編號對應一個可操作按鈕,供選擇商品使用。如果物架上的商品被用戶買走,儲物柜中會自動取出商品送到物架上,保證物品架上一定會有商品。用戶可以一次投入較多錢幣,并可以選擇多樣商品,售貨機可以一次性將商品輸出并找零錢。
用戶購買商品的操作方法是:
(1)從“錢幣入口”放入錢幣,依次放入多個硬幣或紙幣。錢幣可支持1元(紙幣、硬幣)、2元(紙幣)、5元(紙幣)、10元(紙幣),放入錢幣時,控制器會先對錢幣進行檢驗識別出幣值,并統計幣值總額,顯示在控制器顯示屏中,提示用戶確認錢幣放入完畢;
(2)用戶確認錢幣放入完畢,便可選擇商品,只要用手指按對應商品外面的編號按鈕即可。每選中一樣商品,售貨機控制器會判斷錢幣是否足夠購買,如果錢幣足夠,自動根據編號將物品進行計數和計算所需錢幣值,并提示余額。如果錢幣不足,控制器則提示“Insufficient money”。用戶可以取消購買,將會把所有放入錢幣退回給用戶。
輸入格式:
先輸入錢幣值序列,以-1作為結束,再依次輸入多個購買商品編號,以-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> int main () {int total,payment,change;total=payment=change=0;int n,i;scanf("%d",&n);for(i=0;n!=-1;i++){total+=n;scanf("%d",&n);}int buy[100];for(i=0;buy[i-1]!=-1;i++){scanf("%d",&buy[i]);}static int goods[10];char goodsname[10][20]={"Table-water","Table-water","Table-water","Coca-Cola","Milk","Beer","Orange-Juice","Sprite","Oolong-Tea","Green-Tea"};for(i=0;buy[i]!=-1;i++){switch(buy[i]){case 1: goods[0]++;payment+=1;break;case 2: goods[1]++;payment+=1;break;case 3: goods[2]++;payment+=1;break;case 4: goods[3]++;payment+=2;break;case 5: goods[4]++;payment+=2;break;case 6: goods[5]++;payment+=3;break;case 7: goods[6]++;payment+=3;break;case 8: goods[7]++;payment+=3;break;case 9: goods[8]++;payment+=4;break;case 10: goods[9]++;payment+=4;break;}}if(total>payment){printf("Total:%dyuan,change:%dyuan\n",total,total-payment);for(i=0;i<10;i++){if(goods[i]!=0)printf("%s:%d;",goodsname[i],goods[i]);} }elseprintf("Insufficient money");return 0; }2). 設計思路
3).本題調試過程碰到問題及解決辦法
#錯誤 #
static int goods[10];
static表示將變量定義為靜態變量我沒有定義
預習題
題目7-1 使用函數刪除字符串中的字符 (10 分)
輸入一個正整數 repeat (0<repeat<10),做 repeat 次下列運算:
輸入一個字符串 str,再輸入一個字符 c,將字符串 str 中出現的所有字符 c 刪除。
要求定義并調用函數delchar(str,c), 它的功能是將字符串 str 中出現的所有 c 字符刪除,函數形參str的類型是字符指針,形參c的類型是char,函數類型是void。
輸入輸出示例:括號內為說明,無需輸入輸出
輸入樣例:
輸出樣例:
result: hppy new yer (字符串"happy new year"中的字符'a'都被刪除) result: b (字符串"bee"中的字符'e'都被刪除) result: 2 (字符串"111211"中的字符'1'都被刪除)1)實驗代碼
#include<stdio.h> void delchar (char *s,char c); int main (void) {char a[100];char c,b,d,e;int i,repeat;scanf("%d",&repeat);scanf("%c",&d); for(i=1;i<=repeat;i++){gets(a);scanf("%c",&b);scanf("%c",&e); printf("result: ");delchar(a,b);}return 0; } void delchar (char *s,char b) {int d,i=0;for(i=0;*s!='\0';s++){if(*s!=b) putchar(*s);}}2)設計思路
3).本題調試過程碰到問題及解決辦法
1.如果你定義一個字符數組char a[100];這樣定義gets(a);就表示從鍵盤接收一個字符串,并放到數組a中,
如果是char a;這樣定義a;
a=(char)malloc(N*sizeof(char));就表示從鍵盤接受一個字符串,并且以a為首地址開始存放字符.
學習進度條
學習總結
這一周我自己動手寫了屬于自己的東西感覺很開心,C語言已經快結束學習了要抓緊現在,
別等錯過后才懂得去珍惜,我不能假忙,時間是世界賦予我們最公平的資源,合理去安排很重要。
現在的我只是一只小小菜鳥,變成老鳥還有漫漫長路去修。
行動吧!夏天來了,陽光啟航。
結對編程
這次結對編程對雙方都有幫助,相互解決問題,合作共贏,
使得我們的學習進程加快許多,不否認這是一個很好的方法,
同時我們也能體會對方的優缺,點取長補短,多多益善。
轉載于:https://www.cnblogs.com/luoyuliang/p/10690727.html
總結
- 上一篇: 图书馆管理系统(c++语言实现)
- 下一篇: 《保护我们的数字遗产:DNA数据存储》白