此次做業屬於哪一個課程 | C語言程序設計 |
---|---|
此次做業要求在哪 | 要求 |
我在這個課程的目標是 | 學會運用字符排序 |
這個做業在那個具體方面幫助我實現目標 | 字符串的計數和排序 |
參考文獻 | c語言教科書和大佬博客 |
6-2 每一個單詞的最後一個字母改爲大寫 (10 分)數組
函數fun的功能是:將p所指字符串中每一個單詞的最後一個字母改爲大寫。(這裏的「單詞」是指由空格隔開的字符串)。
函數接口定義:app
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+1)==' ') *(p+i)=*(p+i)-'a'+'A'; } }
字符數組的綜合運用
7-2 自動售貨機 (30 分)ui
如圖所示的簡易自動售貨機,物品架一、2上共有10樣商品,按順序進行編號分別爲1-10,標有價格與名稱,一個編號對應一個可操做按鈕,供選擇商品使用。若是物架上的商品被用戶買走,儲物櫃中會自動取出商品送到物架上,保證物品架上必定會有商品。用戶能夠一次投入較多錢幣,並能夠選擇多樣商品,售貨機能夠一次性將商品輸出並找零錢。
設計
用戶購買商品的操做方法是:
(1)從「錢幣入口」放入錢幣,依次放入多個硬幣或紙幣。錢幣可支持1元(紙幣、硬幣)、2元(紙幣)、5元(紙幣)、10元(紙幣),放入錢幣時,控制器會先對錢幣進行檢驗識別出幣值,並統計幣值總額,顯示在控制器顯示屏中,提示用戶確認錢幣放入完畢;
(2)用戶確認錢幣放入完畢,即可選擇商品,只要用手指按對應商品外面的編號按鈕便可。每選中同樣商品,售貨機控制器會判斷錢幣是否足夠購買,若是錢幣足夠,自動根據編號將物品進行計數和計算所需錢幣值,並提示餘額。若是錢幣不足,控制器則提示「Insufficient money」。用戶能夠取消購買,將會把全部放入錢幣退回給用戶。
輸入格式:
先輸入錢幣值序列,以-1做爲結束,再依次輸入多個購買商品編號,以-1結束。
輸出格式:
輸出錢幣總額與找回零錢,以及所購買商品名稱及數量。
輸入樣例:3d
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) { int total,i=0,money_sum=0,goods; int Table_water1=0,Table_water2=0,Table_water3=0,Coca_Cola=0,Milk=0,Beer=0,Orange_juice=0,Sprite=0,Oolong_tea=0,Green_tea=0; scanf("%d",&total); while(total!=-1){ money_sum=money_sum+total; i++; scanf("%d",&total); } total=money_sum; scanf("%d",&goods); while(goods!=-1){ if(goods==1){ if(money_sum>=1){ Table_water1++; money_sum=money_sum-1; } else{ i=1; break; } } else if(goods==2){ if(money_sum>=1){ Table_water2++; money_sum=money_sum-1; } else{ i=1; break; } } else if(goods==3){ if(money_sum>=1){ Table_water3++; money_sum=money_sum-1; } else{ i=1; break; } } else if(goods==4){ if(money_sum>=2){ Coca_Cola++; money_sum=money_sum-2; } else{ i=1; break; } } else if(goods==5){ if(money_sum>=2){ Milk++; money_sum=money_sum-2; } else{ i=1; break; } } else if(goods==6){ if(money_sum>=3){ Beer++; money_sum=money_sum-3; } else{ i=1; break; } } else if(goods==7){ if(money_sum>=3){ Orange_juice++; money_sum=money_sum-3; } else{ i=1; break; } } else if(goods==8){ if(money_sum>=3){ Sprite++; money_sum=money_sum-3; } else{ i=1; break; } } else if(goods==9){ if(money_sum>=4){ Oolong_tea++; money_sum=money_sum-4; } else{ i=1; break; } } else if(goods==10){ if(money_sum>=4){ Green_tea++; money_sum=money_sum-4; } else{ i=1; break; } } scanf("%d",&goods); } if(i!=1){ printf("Total:%dyuan,change:%dyuan\n",total,money_sum); if(Table_water1>0) printf("Table-water:%d;",Table_water1); if(Table_water2>0) printf("Table-water:%d;",Table_water2); if(Table_water3>0) printf("Table-water:%d;",Table_water3); if(Coca_Cola>0) printf("Coca-Cola:%d;",Coca_Cola); if(Milk>0) printf("Milk:%d;",Milk); if(Beer>0) printf("Beer:%d;",Beer); if(Orange_juice>0) printf("Orange-juice:%d;",Orange_juice); if(Sprite>0) printf("Sprite:%d;",Sprite); if(Oolong_tea>0) printf("Oolong-Tea:%d;",Oolong_tea); if(Green_tea>0) printf("Green-Tea:%d;",Green_tea); } else printf("Insufficient money"); return 0; }
好長code
周/日期 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較困惑的問題 |
---|---|---|---|---|
3/9-3/15 | 3d | 100 | 文件創建及其文件的利用 | 無 |
3/15-3/18 | 4d | 150 | 二位數組和暴力解法 | 最大子數組最優的解法是什麼,如何下降時間複雜度 |
3/18-3/19 | 5d | 250 | 選擇排序法 | 我沒有徹底消化選擇排序法的思路 |
3/25-3/29 | 5d | 250 | 冒泡排序不會 | 指針也不會 |
3/29-4/5 | 5d | 300 | 指針的具體用法 | 函數和指針的結合 |
4/5-4/12 | 6d | 350 | 字符數組和指針的結合 | 綜合運用的方法 |
愈來愈難。作題沒有系統的方法和應有的思惟。