問題 | 回答 |
---|---|
這個做業屬於哪一個課程 | 第八章·指針 |
這個做業要求在哪裏 | https://edu.cnblogs.com/campus/zswxy/computer-scienceclass4-2018/homework/2826 |
我在這個課程的目標是 | 弄清楚指針與數組之間的關係 |
這個做業在那個方面幫我實現目標 | 用指針也能夠處理數組的事情 |
參考文獻 | C語言程序設計 |
函數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+1]!='\0';i++) if(p[i+1]==' ') p[i]=p[i]-32; }
解決:發現段錯誤,問同窗才知道原來是個人字符結尾錯了,不是\n,而是\0;app
這個題目主要考咱們指針與數組的關係,指針是能夠代替數組的函數
如圖所示的簡易自動售貨機,物品架一、2上共有10樣商品,按順序進行編號分別爲1-10,標有價格與名稱,一個編號對應一個可操做按鈕,供選擇商品使用。若是物架上的商品被用戶買走,儲物櫃中會自動取出商品送到物架上,保證物品架上必定會有商品。用戶能夠一次投入較多錢幣,並能夠選擇多樣商品,售貨機能夠一次性將商品輸出並找零錢。學習
(1)從「錢幣入口」放入錢幣,依次放入多個硬幣或紙幣。錢幣可支持1元(紙幣、硬幣)、2元(紙幣)、5元(紙幣)、10元(紙幣),放入錢幣時,控制器會先對錢幣進行檢驗識別出幣值,並統計幣值總額,顯示在控制器顯示屏中,提示用戶確認錢幣放入完畢;
(2)用戶確認錢幣放入完畢,即可選擇商品,只要用手指按對應商品外面的編號按鈕便可。每選中同樣商品,售貨機控制器會判斷錢幣是否足夠購買,若是錢幣足夠,自動根據編號將物品進行計數和計算所需錢幣值,並提示餘額。若是錢幣不足,控制器則提示「Insufficient money」。用戶能夠取消購買,將會把全部放入錢幣退回給用戶。測試
先輸入錢幣值序列,以-1做爲結束,再依次輸入多個購買商品編號,以-1結束。ui
輸出錢幣總額與找回零錢,以及所購買商品名稱及數量。設計
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 money = 0, change = 0, i = 0, sum=0; int n, count[11] = {0,0,0,0,0,0,0,0,0,0,0}, price[11]={0,1,1,1,2,2,3,3,3,4,4}; char a[11][20]={"0","Table-water","Table-water","Table-water","Coca-Cola","Milk","Beer","Oolong-Juice","Sprite","Oolong-Tea","Green-Tea"}; scanf("%d", &n); for(i=1;n!=-1;i++) { money=money+n; scanf("%d", &n); } scanf("%d", &n); for(i=1;n!=-1;i++){ count[n]++; scanf("%d", &n); //統計單個商品的數量 } for(i=1;i<11;i++) sum+= price[i] * count[i]; //計算購買商品的總價格 if(sum < money) { printf("Total:%dyuan,change:%dyuan\n", money, money - sum); for(i = 1;i < 11;i++) if(count[i]!= 0) printf("%s:%d;", a[i], count[i]); } else { printf("Insufficient money"); } return 0; }
答案錯誤,發現是在輸出的時候錢少的那種結果也有
解決 ,仔細瀏覽代碼以後,發現是在if輸出後面少了一個括號指針
說實話,這個題目我不太會,我是參考了別人的代碼才作出來的,我看懂了別人的代碼,我以爲這個題目考的是
咱們對數組的熟練運用,要是對數組很熟這個題目也不是問題了code
輸入一個正整數 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 i,repeat; char str[100],c; scanf("%d\n",&repeat); for(i=0;i<repeat;i++){ gets(str); scanf("%c\n",&c); printf("result: %s"); delchar(str,c); } return 0; } void delchar(char *str,char c) { while(*str!='\0'){ if(*str!=c){ putchar(*str); } str++; } }
在輸出時用了%c,以及爲何delchar要在第一個字符下面,
正確運行截圖
這個題目主要考察對指針類型數組的運用,以及學到一個新函數,putchar單個輸出字符串中的字符,可是用printf也能夠
第七週 | 這周所花時間 | 代碼行數 | 學到的內容簡介 | 目前比較困惑 |
---|---|---|---|---|
4/8-4/14 | 11小時 | 98 | 對指針數組的應用 | 對如何去應用和自定義不是很懂 |
時間 | 累計字數 | 累計代碼長度 |
---|---|---|
第一週 | 126 | 23 |
第二週 | 335 | 68 |
第三週 | 461 | 105 |
第四周 | 584 | 157 |
第五週 | 724 | 227 |
第六週 | 841 | 283 |
第七週 | 1002 | 391 |
1,若是代碼有問題能夠兩我的找錯誤 2,兩我的能夠相互督促學習 3,能夠增進兩我的之間的友誼
要是兩我的有不一樣的思路,處理很差會鬧矛盾,從而單獨解決