2019第七次作业
作業頭
基礎題1
6-2 每個單詞的最后一個字母改成大寫 (10 分)函數fun的功能是:將p所指字符串中每個單詞的最后一個字母改成大寫。(這里的“單詞”是指由空格隔開的字符串)。
函數接口定義:
void fun( char *p );其中 p 是用戶傳入的參數。函數將 p所指字符串中每個單詞的最后一個字母改成大寫。
裁判測試程序樣例:
#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?
輸出樣例:
After changing: mY frienD iS happY
一、實驗代碼
二、設計思路
?
三、錯誤截圖
問題:理解不了p[i-1]-=32的含義。
解決方法:它是一個小寫字母換成大寫的步驟。
四、運行截圖
基礎題二
7-2 自動售貨機 (30 分)如圖所示的簡易自動售貨機,物品架1、2上共有10樣商品,按順序進行編號分別為1-10,標有價格與名稱,一個編號對應一個可操作按鈕,供選擇商品使用。如果物架上的商品被用戶買走,儲物柜中會自動取出商品送到物架上,保證物品架上一定會有商品。用戶可以一次投入較多錢幣,并可以選擇多樣商品,售貨機可以一次性將商品輸出并找零錢。
用戶購買商品的操作方法是:
(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;一、實驗代碼 #include<stdio.h> int main(void) {char a[10][20] = {"Table-water","Table-water","Table-water","Coca-Cola","Milk","Beer","Orange-Juice","Sprite","Oolong-Tea","Green-Tea"};int b[11] = {0,0,0,0,0,0,0,0,0,0,0};int choice[50];int i=1, sum = 0, money,sum_d = 0, change, flag=0;scanf("%d",&money);while((money!=-1)&&(money <= 10)) {sum = sum + money;scanf("%d",&money); }scanf("%d",&choice[i]);while(choice[i]!=-1) {switch(choice[i]) { case 1:sum_d = sum_d + 1;break; case 2:sum_d = sum_d + 1;break;
case 3: sum_d = sum_d + 1;break;case 4:sum_d = sum_d + 2;break;
case 5: sum_d = sum_d + 2;break;case 6: sum_d = sum_d + 3;break;
case 7: sum_d = sum_d + 3;break;case 8: sum_d = sum_d + 3;break; case 9: sum_d = sum_d + 4;break;case 10: sum_d = sum_d + 4;break; default:break; } change = sum-sum_d;if(change<0) {printf("Insufficient money"); flag = 1;return 0; }i++;scanf("%d",&choice[i]); }i = 1;while(choice[i]!=-1) {switch(choice[i]) { case 1: b[1]++;break; case 2: b[2]++;break; case 3: b[3]++;break; case 4: b[4]++;break; case 5: b[5]++;break; case 6: b[6]++;break; case 7: b[7]++;break; case 8: b[8]++;break; case 9: b[9]++;break; case 10: b[10]++;break; default:break; }i++; } if(flag==0) {printf("Total:%dyuan,change:%dyuan\n",sum, change); for(i=1; i<=10; i++) { if(b[i]==0) continue; elseprintf("%s:%d;",a[i-1],b[i]); } } return 0; }
二、設計思路
三、錯誤截圖
問題:在switch的語句的時候,break跳出位置發生錯誤。
解決方法:break跳出應該放在下一次循環前面。
四、運行截圖
?預習題
7-1 使用函數刪除字符串中的字符 (10 分)輸入一個正整數 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'都被刪除)一、實驗代碼 #include<stdio.h> void delchar(char *str, char c); int main(void) {int repeat,i;char str[100],c;scanf("%d\n",&repeat);for(i=1;i<=repeat;i++){gets(str);c=getchar();delchar(str,c);printf("result: %s\n",str);}return 0; } void delchar(char *str, char c) {int j,k=0;for(j=0;str[j]!='\0';j++){if(str[j]!=c){str[k]=str[j];k++;}}str[k]='\0'; }
二、設計思路
三、錯誤截圖
問題:不能理解? str[k]=str[j]這一步。
解決方法:它是將字符串 str 中出現的所有 c 字符刪除的一個步驟。
四、運行截圖
學習進度條
?
折線圖
學習感悟
我覺得班上組織的結隊編程這個方法很好,把一些思想上想學習但是行動上不想學習的人給強制去學習了,我想班上大部分人是處于這個位置,就我而言,我的搭檔是一位非常優秀的人,也樂于幫助提高我的知識。
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/JokerXue/p/10685948.html
總結
- 上一篇: 智慧高速公路车路协同系统框架及要求
- 下一篇: 函数、包,字符串处理,错误处理