這個做業屬於哪一個課程 | C語言程序設計II |
這個做業要求在哪裏 | 2019年春季學期第七週做業 |
我在這個課程的目標是 | 我但願可以經過學習C語言的知識,編寫程序 |
這個做業在哪一個具體方面幫助我實現目標 | 這個做業讓我知道了掌握數組名做爲函數參數的用法,理解指針和數組能夠實現相同的操做 |
參考文獻 | 字母大小寫轉換, C 結構體 |
函數fun的功能是:將p所指字符串中每一個單詞的最後一個字母改爲大寫。(這裏的「單詞」是指由空格隔開的字符串)。html
函數接口定義:c++
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 ) { for(int i = 0;p[i] != '\0'; i ++) { if(p[i] == ' ') p[i - 1] = p[i - 1] - 32; } }
如圖所示的簡易自動售貨機,物品架一、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> struct { int amount; char Name[15]; int Value; }sold[10] = { {0, "Table-water", 1}, {0, "Table-water", 1}, {0, "Table-water", 1}, {0, "Coca-Cola", 2}, {0, "Milk", 2}, {0, "Beer", 3}, {0, "Orange-Juice", 3}, {0, "Sprite", 3}, {0, "Oolong-Tea", 4}, {0, "Green-Tea", 4} }; int main() { int single = 0, Total = 0, TotalPrice = 0; while (single != -1) { scanf("%d", &single); if(single > 0) Total += single; } single = 0; while (single != -1) { scanf("%d", &single); if (single > 0) { sold[single - 1].amount++; TotalPrice += sold[single - 1].Value; } } if (TotalPrice > Total) printf("Insufficient money"); else { printf("Total:%dyuan,change:%dyuan\n", Total, Total - TotalPrice); for (int i = 0; i < 10; i++) { if (sold[i].amount != 0) printf("%s:%d;", sold[i].Name, sold[i].amount); } } 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')
輸出樣例:ui
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; char str[1000], c, temp; scanf("%d%c", &repeat, &temp); int i = 0, j = 0; for (j = 0; j < repeat; j++) { i = 0; while (1) { scanf("%c", &str[i]); if (str[i] == '\n') break; i++; } str[i] = '\0'; scanf("%c%c", &c, &temp); delchar(str, c); } return 0; } void delchar(char str[], char c) { printf("result: "); for (int i = 0; str[i] != '\0'; i++) { if (str[i] != c) printf("%c", str[i]); } printf("\n"); }
具體要求請參看鄒欣老師博客 現代程序設計做業
第一步 輸入二維數組
第二步 循環進行相鄰(上下或左右)的元素的比較(難點),用雙for循環比較相鄰的元素
第三步 循環比較大小的同時也不斷將最大的元素的地址存儲在另外一個數組中
第四步 輸出最大矩形子數組的和
周/日期 | 這周所花的時間 | 代碼行數 | 學到的知識點簡介 | 目前比較迷惑的問題 |
---|---|---|---|---|
3/2-3/8 | 20h | 300行 | 數組,指針的大體意義,文件入門 | 數組串的使用,指針 |
3/9-3/15 | 25h | 400行 | 二維數組,文件與數組的結合運用 | 雙for循環的流程圖(再不上課,光自學感受太艱難了) |
3/16-3/22 | 22h | 450行 | 一維數組,二維數組,幾種數組排序法 | 字符串使用 |
3/23-3/29 | 20h | 350行 | 字符串的定義及其使用 | 指針的具體使用 |
3/30-4/5 | 15h | 340行 | 指針變量的定義,使用,初始化及其基本運算,指針做爲函數參數的做用;使用指針實現函數調用返回多個值 | 指針在運行時內存的變化 |
4/6-4/12 | 13h | 400行 | 數組名做爲函數參數的用法,理解指針、數組和地址之間的關係,指針和數組能夠實現相同的操做,結構體的定義,使用 | 結構體的具體使用,結構體的流程圖 |