這個做業屬於哪一個課程 | C語言程序設計Ⅱ |
---|---|
這個做業要求在哪裏 | https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2935 |
我在這個課程的目標是 | 可以使用c語言實現基本的程序設計,以致最後可以設計出較大的項目 |
這個做業在哪一個具體方面幫助我實現目標 | 更進一步地理解數組與指針二者的結合應用,並學會指針與字符(字符數組)的結合應用 |
參考文獻 | C語言程序設計(第3版); C Primer Plus (第6版) |
函數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; }
/* 請在這裏填寫答案 */
輸入樣例:app
my friend is happy
輸出樣例:函數
After changing: mY frienD iS happY
void fun( char *p ) { int i; for (i=0; *(p+i) != '\n'; i++) { if (*(p+i+1) == ' '&&( (*(p+i)) >= 'a' && (*(p+i) <= 'z' )) ){ *(p+i) = *(p+i) -32; } } }
無學習
如圖所示的簡易自動售貨機,物品架一、2上共有10樣商品,按順序進行編號分別爲1-10,標有價格與名稱,一個編號對應一個可操做按鈕,供選擇商品使用。若是物架上的商品被用戶買走,儲物櫃中會自動取出商品送到物架上,保證物品架上必定會有商品。用戶能夠一次投入較多錢幣,並能夠選擇多樣商品,售貨機能夠一次性將商品輸出並找零錢。測試
用戶購買商品的操做方法是:ui
(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 () { int n,m,sum=0,amount=0,i,a[10]={0},b[11]={0}; char c[11][30]={"","Table-water","Table-water","Table-water","Coca-Cola","Milk","Beer","Oolong-Juice","Sprite","Oolong-Tea","Green-Tea"}; while (scanf ("%d",&n)) { if (n==-1) break; else sum=sum+n; } while (scanf ("%d",&m)) { switch (m) { case 1:n=1;a[0]++;break; case 2:n=1;a[1]++;break; case 3:n=1;a[2]++;break; case 4:n=2;a[3]++;break; case 5:n=2;a[4]++;break; case 6:n=3;a[5]++;break; case 7:n=3;a[6]++;break; case 8:n=3;a[7]++;break; case 9:n=4;a[8]++;break; case 10:n=4;a[9]++;break; } b[m]++; if (m==-1) break; else amount=amount+n; } if(amount>sum) printf("Insufficient money"); else { printf("Total:%dyuan,change:%dyuan\n",sum,sum-amount); for(i=1;i<11;i++) if(b[i]) printf("%s:%d;",c[i],b[i]); } return 0; }
輸入一個正整數 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 () { char a[80],c; int n,i; scanf ("%d",&n); getchar(); for (i=0; i<n; i++) { gets(a); scanf ("%s",&c); printf ("result: "); delchar(a,c); } return 0; } void delchar(char *str,char c) { int i; for (i=0; *(str+i)!='\n'; i++) { if (*(str+i)!=c) printf ("%c",*(str+i)); } printf ("\n"); }
周/日期 | 這周所花的時間 | 代碼行數 | 學到的知識點簡介 | 目前比較迷惑的問題 |
---|---|---|---|---|
3/2-3/8 | 三天六小時 | 50 | 一、定義、運用文件指針;二、如何打開、關閉文件三、如何讀出指定文件中的數據;四、如何向指定文件中寫入數據; | 字符、字符串有什麼區別?兩者輸入、輸出有沒有很大不一樣?什麼纔算字符串?什麼算字符?在文件中兩者有沒有差異? |
3/9-3/15 | 四天三小時 | 180 | 一、運用二維數組解決問題,矩陣的判斷;二、對一組數的全部子數組求和 | 如何在輸出時利用數組的性質 |
3/16-3/22 | 三天八小時 | 210 | 一、二維數組加深理解,二維數組與矩陣;二、選擇排序法解決問題;三、二分查找法 | 二分查找法這周沒練習,只是看看書上例題大體懂了,不知道真正應用時可否掌握。 |
3/23-3/29 | 三天兩小時 | 120 | 一、判斷回;文二、字符數組的概念及其簡單運用;三、一些簡單的與字符數組相關的暫時沒接觸補充知識,一些函數,用法等。 | 在做業運用文件指針時,一開始老是出現從文件裏輸不出來結果,打印不出來,後來發現可能與本身輸入時格式未搞好,原本不該該出現的空格出現了,致使打印不出來結果。文件指針還不是很熟練 |
3/30-4/5 | 兩天 | 150 | 一、指針的含義,變量、地址、指針變量等間的關係;二、指針變量的初始化,運用指針作一些簡單運算;三、指針與數組之間的關係 | 在用指針處理字符串時,應怎樣定義指針變量 |
4/6-4/12 | 三天 | 200 | 一、更深一步掌握指針與數組間的關係;二、懂得指針能夠實現數組的一些功能;三、指針在碰到字符數組時的應用 | 在代碼中,若是遇到要輸出單個字符,%s與%c有什麼區別? scanf()與 getchar 兩種輸入方式有區別嗎?會不會在有些狀況下能影響到輸出結果? |
原本這周題目感受也不是很困難,第二題一開始寫的時候我想用之前學的 switch 語句,但想來想去,以爲商品的名稱那裏在輸出時不會用 switch ,而後就想着試試其餘方法,以後有同窗用 switch 語句,我看了以後感受用 switch 語句確實比較繁瑣,但確實很清晰易懂。還有預習題目,一開始我老是得不到結果,自認爲代碼沒什麼問題但就是有問題。本身進行了調試,但調試時程序運行到一半就不能調了。當時就非常氣啊,爲何連調都調不了。麻煩同窗看了一眼代碼,緣由很簡單,我對於自定義函數調用時考慮的太「裏面」了,沒有「跳出來」看問題,總之一語點醒夢中人。
本週在結對時,我跟個人隊友一直在研究第二題,當定義數組 char[11] [30] 時,我說這好像不是二維數組,由於上次做業我認爲這是定義了一個字符型數組,11表明的是數組中有11個字符串;30表明每一個字符串長度不超過30.他說這就是二維數組;我一直認爲二維數組就是一個矩陣,產生分歧後,先查了課本,發現也仍是很模糊,解決不了,而後就問了旁邊的同窗,獲得確定回答。上面的解釋就能夠理解爲二位數組,只是我沒有意識到兩者是一個意思。
時間 | 累計代碼行數 | 累計博客字數 |
---|---|---|
第一週 | 80 | 275 |
第二週 | 50 | 883 |
第三週 | 180 | 1303 |
第四周 | 210 | 1849 |
第五週 | 120 | 1988 |
第六週 | 150 | 2717 |
第七週 | 200 | 3000 |