实验二

问题一:确保不同时间所生成的数据不同,不会出现重复
问题二:依据时间随机生成不同的学号
实验任务二

1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 int main() { 4 int choice, quantity; 5 float total_price = 0, amount_paid, change; 6 while (1) { 7 printf("\n自动饮料售卖机菜单:\n"); 8 printf("1. 可乐 - 3 元/瓶\n"); 9 printf("2. 雪碧 - 3 元/瓶\n"); 10 printf("3. 橙汁 - 5 元/瓶\n"); 11 printf("4. 矿泉水 - 2 元/瓶\n"); 12 printf("0. 退出购买流程\n"); 13 printf("请输入饮料编号: "); 14 scanf("%d", &choice); 15 if (choice == 0) 16 break; 17 if (choice < 1 || choice > 4) { 18 printf("无效的饮料编号,请重新输入。\n"); 19 continue; 20 } 21 printf("请输入购买的数量: "); 22 scanf("%d", &quantity); 23 if (quantity < 0) { 24 printf("购买数量不能为负数,请重新输入。\n"); 25 continue; 26 } 27 if (choice == 1 || choice == 2) 28 total_price += 3 * quantity; 29 else if (choice == 3) 30 total_price += 5 * quantity; 31 else 32 total_price += 2 * quantity; 33 printf("请投入金额: "); 34 scanf("%f", &amount_paid); 35 change = amount_paid - total_price; 36 printf("本次购买总价: %.2f 元\n", total_price); 37 printf("找零: %.2f 元\n", change); 38 total_price = 0; 39 } 40 printf("感谢您的购买,欢迎下次光临!\n"); 41 42 return 0; 43 }
问题一:下次循环会使用已被赋值的total_price
问题二:在符合并运行当前分支程序后,仍继续往下运行当前循环
实验任务三

1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include<stdlib.h> 4 int main() { 5 char ans; 6 while (scanf("%c", &ans) != EOF) { 7 if (ans == 'r') 8 printf("stop\n"); 9 else if (ans == 'g') { 10 printf("go go go\n"); 11 } 12 else if (ans == 'y') { 13 printf("wait a minute\n"); 14 } 15 else 16 printf("something must be wrong\n"); 17 ans = getchar(); 18 } 19 20 return 0; 21 }
实验任务四

1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include<stdlib.h> 4 int main() { 5 double a; 6 double max = 0; 7 double min = 20000; 8 double total = 0; 9 printf("输入今日开销,直至输入-1为止:\n"); 10 11 while (1) { 12 scanf("%lf", &a); 13 if (a == -1) { 14 break; 15 } 16 total += a; 17 if (a > max) { 18 max = a; 19 } 20 if (a < min) { 21 min = a; 22 } 23 24 } 25 printf("今日累计消费总额:%.1lf\n", total); 26 printf("今日最高一笔开销:%.1lf\n", max); 27 printf("今日最低一笔开销:%.1lf\n", min); 28 29 return 0; 30 }
实验任务五

1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include<stdlib.h> 4 int main() { 5 int a, b, c; 6 while (scanf("%d%d%d", &a, &b, &c)!=EOF) { 7 if (a + b > c && a + c > b && b + c > a) { 8 if (a * a + b * b == c * c || a * a + c * c == b * b || b * b + c * c == a * a) 9 printf("直角三角形\n"); 10 else if (a == b && b == c) 11 printf("等边三角形\n"); 12 else if (a == b || a == c || b == c) 13 printf("等腰三角形\n"); 14 else 15 printf("普通三角形\n"); 16 } 17 else 18 printf("不能构成三角形\n"); 19 } 20 21 return 0; 22 }
实验任务六

1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include<stdlib.h> 4 int main() { 5 int day, n, i; 6 i = 0; 7 srand(time(NULL)); 8 day = rand() % 30 + 1; 9 printf("猜猜2025年11月哪一天是你的lucky day\n"); 10 printf("开始喽,你有3次机会,猜吧(1~30):"); 11 while (i < 3) { 12 scanf("%d", &n); 13 if (day == n) { 14 printf("哇,猜中了"); 15 break; 16 } 17 else if (n < day) { 18 printf("你猜的日期早了,你的lucky day还没到呢\n"); 19 printf("再猜(1~30):"); 20 } 21 else { 22 printf("你猜的日期晚了,你的lucky day在前面哦\n"); 23 printf("再猜(1~30):"); 24 } 25 if (i == 2) { 26 printf("次数用光啦。偷偷告诉你,11月你的lucky day是 % d", day); 27 } 28 ++i; 29 } 30 31 return 0; 32 }