第七周作业及其总结
第七周作業
一、本周作業頭
| 這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/computer-scienceclass1-2018/homework/2828 | |
| 我在這個課程的目標是 | 更加熟練的運用指針定義函數和調用函數delchar | |
| 這個作業在那個具體方面幫助我實現目標 | 如何來是讓自動售貨機找錢 | |
| 參考文獻 | c語言教課書和百度 |
二、基礎作業
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() {int repeat;char str[80],c;scanf("%d\n",&repeat);while(repeat--) {gets(str);scanf("%c",&c);printf("result: ");delchar(str,c);}return 0; }void delchar(char str[],char c) {while(*str!='\0'){if(*str!=c) {putchar(*str);}str++; } }二、設計思路既流程圖。
三、本題調試過程遇到的問題及解決辦法。
1、在調試過程中答案總出錯誤不知道為什么?
解決辦法:詢問了助教之后才發現在第一個while語句中應該把str字符串全都儲存起來,也就是輸入gets(str)。
2、基礎題。
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
一、實驗代碼。
void fun( char *p ) {int i;for (i=0;*(p+i)!='0';i++){if (*(p+i)==' '){*(p+i-1)-=32;}} }二、設計思路既流程圖。
三、本題調試過程中遇到的問題及解決辦法。
1、之前出現了編譯錯誤和答案錯誤?
解決辦法:詢問了其他同學,第一自己在等號左右不應該空格,第二在for語句輸出終止語句應該是(p+i)!='0'而不是(p+i)!='\0'.
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> #include<string.h> int main (void) {int n, i=0, money=0, change=0, sum=0;int a[11]={0}, b[11]={0,1,1,1,2,2,3,3,3,4,4};char c[11][20]={"","Table-water","Table-water","Table-water","Coca-Cola","Milk","Beer","Oolong-Juice","Sprite","Oolong-Tea","Green-Tea"};while(1) {scanf("%d", &n);if(n == -1)break;money += n;} while(1){scanf("%d", &n);if(n == -1)break;a[n]++; //用于統計各個商品的數量}for(i = 1;i < 11;i++){change +=b[i] * a[i];//計算價格}if(change > money)//判斷錢是否足夠{printf("Insufficient money");return 0;}printf("Total:%dyuan,change:%dyuan\n", money, money - change);//輸出價格for(i = 1;i < 11;i++)//輸出商品購買的數量{if(a[i] != 0){printf("%s:%d;", c[i], a[i]);}}return 0; }二、設計思路既流程圖。
三、本題調試過程中所遇到的問題及解決辦法。
1、一直出現段錯誤不知道只能回事?
解決辦法:去請教了助教,最后把for語句全換成while語句解決了問題。
學習進度統計和學習感悟
折線圖
我已經盡力了畫折線圖
學習感悟
1、學習內容
學習了fun函數的運用,和用while語句與指針變量結合運用解決問題,加深了自己對數組的運用。
結對編程
優點:
1、程序員互相幫助,互相教對方,可以得到能力上的互補。
2、可以讓編程環境有效地貫徹Design。
缺點:
1、兩個人在一起工作可能會出現工作精力不能集中的情況。程序員可能會交談一些與工作無關的事情,反而分散注意力,導致效率比單人更為低下。
2、結對編程可能讓程序員們相互學習得更快。有些時候,學習對方的長外,可能會和程序員們在起滋生不良氣氛一樣快。比如,合伙應付工作,敷衍項目。
其實我覺得結對編程并沒有發揮很大的作用,該不會的還是不會,然后只有問助教或則自己百度。
轉載于:https://www.cnblogs.com/neir/p/10697826.html
總結
- 上一篇: Debian下Cannot set LC
- 下一篇: ?类型 ,?类型(值)