作業2
task1:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 5
int main() {
int number;
int i;
srand(time(0)); // 以當前系統時間作為隨機種子
for(i = 0; i < N; ++i) {
number = rand() % 100 + 1;
printf("20490042%04d\n", number);
}
return 0;
}
問題1:生成0到100以內的隨機數字
問題2:保證生成數字為4位不足的用0在前補足
問題3:生成一串可以當作學號的隨機數字

task2:
1 #include <stdio.h> 2 3 int main() { 4 int choice, quantity; 5 float total_price = 0, amount_paid, change; 6 7 while (1) { 8 printf("\n自動飲料售賣機菜單:\n"); 9 printf("1. 可樂 - 3 元/瓶\n"); 10 printf("2. 雪碧 - 3 元/瓶\n"); 11 printf("3. 橙汁 - 5 元/瓶\n"); 12 printf("4. 礦泉水 - 2 元/瓶\n"); 13 printf("0. 退出購買流程\n"); 14 printf("請輸入飲料編號: "); 15 scanf("%d", &choice); 16 17 if (choice == 0) 18 break; 19 20 if (choice < 1 || choice > 4) { 21 printf("無效的飲料編號,請重新輸入。\n"); 22 continue; 23 } 24 25 printf("請輸入購買的數量: "); 26 scanf("%d", &quantity); 27 28 if (quantity < 0) { 29 printf("購買數量不能為負數,請重新輸入。\n"); 30 continue; 31 } 32 33 switch (choice) { 34 case 1: 35 case 2: 36 total_price += 3 * quantity; 37 break; 38 case 3: 39 total_price += 5 * quantity; 40 break; 41 case 4: 42 total_price += 2 * quantity; 43 break; 44 } 45 46 printf("請投入金額: "); 47 scanf("%f", &amount_paid); 48 49 change = amount_paid - total_price; 50 printf("本次購買總價: %.2f 元\n", total_price); 51 printf("找零: %.2f 元\n", change); 52 53 total_price = 0; 54 } 55 56 printf("感謝您的購買,歡迎下次光臨!\n"); 57 return 0; 58 }
問題1:確保多組輸入時每次程序開始的 total_price歸零,去掉會導致總金額在多次運行中疊加。
問題2:break語句使代碼在這一步停止運行,continue使代碼繼續運行。
問題3:沒有必要,已經進行過choice的判斷。

task3:
1 int main(){ 2 char(colour); 3 colour = getchar(); 4 getchar(); 5 while (colour != EOF) 6 { 7 switch (colour) 8 { 9 case 'r':printf("stop!\n"); break; 10 case 'g':printf("go go go\n"); break; 11 case 'y':printf("wait a minute\n"); break; 12 default:printf("something must be wrong...\n"); break; 13 } 14 colour = getchar(); 15 getchar(); 16 } 17 return 0; 18 }

task4:
1 int main() 2 { 3 double x, all = 0, max, min; 4 printf("輸入今日開銷,直到輸入-1終止:\n"); 5 scanf_s("%lf", &x); 6 getchar(); 7 max = x, min = x; 8 while (x != -1) 9 { 10 if (x > 0 && x < 20000) 11 { 12 all += x; 13 if (x > max) 14 max = x; 15 if (x < min) 16 min = x; 17 } 18 19 scanf_s("%lf", &x); 20 getchar(); 21 22 } 23 printf("今日累計消費總額:%.1lf\n今日最高一筆開銷:%.1lf\n今日最低一筆開銷:%.1lf", all, max, min); 24 return 0; 25 }

task5:
1 #define N 3 2 int main() 3 { 4 int day, i, gus; 5 6 printf("猜猜2025年4月哪一天是你的lucky day\n"); 7 8 srand(time(0)); 9 day = rand() % 30 + 1; 10 11 12 for (i = 0; i < N; i++) 13 { 14 if (i == 0) 15 printf("開始嘍,你有三次機會,猜吧(1~30):"); 16 else 17 printf("再猜(1~30):"); 18 scanf_s("%d", &gus); 19 20 21 if (gus > day) 22 printf("你猜的日期晚了,你的lucky day在前面哦\n"); 23 else if (gus < day) 24 printf("你猜的日期早了,你的lucky day還沒到呢\n"); 25 else 26 { 27 printf("哇,猜中了:-)\n"); 28 break; 29 } 30 } 31 32 33 34 if (i == 3) 35 printf("次數用完啦。悄悄告訴你,4月你的lucky day是%d號\n", day); 36 37 38 return 0; 39 }

task6:
1 int main() 2 { 3 4 int n,i,j; 5 printf("input n: "); 6 scanf_s("%d", &n); 7 8 for (i = n; i >0; i--) 9 { 10 for (j = 0; j < n-i; j++) 11 printf(" \t"); 12 13 for (j = 0; j < 2*i-1; j++) 14 printf(" O \t"); 15 16 for (j = 0; j < n - i; j++) 17 printf(" \t"); 18 19 printf("\n"); 20 21 for (j = 0; j < n - i; j++) 22 printf(" \t"); 23 24 for (j = 0; j < 2*i-1; j++) 25 printf("<H>\t"); 26 27 for (j = 0; j < n - i; j++) 28 printf(" \t"); 29 30 printf("\n"); 31 32 for (j = 0; j < n - i; j++) 33 printf(" \t"); 34 35 for (j = 0; j < 2*i-1; j++) 36 printf("I I\t"); 37 38 for (j = 0; j < n - i; j++) 39 printf(" \t"); 40 41 printf("\n"); 42 printf("\n"); 43 } 44 45 return 0;


浙公網安備 33010602011771號