实验二
五、实验结论1
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <time.h> 4 #define N 5 5 int main() { 6 int number; 7 int i; 8 srand(time(0)); 9 for(i = 0; i < N; ++i) { 10 number = rand() % 100 + 1; 11 printf("20490042%04d\n", number); 12 } 13 return 0; 14 }

回答问题:
1.生成5个在1~100之间的随机整数,并以2024042xxxx的格式输出模拟的学员编号,相当于在该专业100个学员中随机抽取四位学员。
2.随机生成一个整数并取后两位,+1则使随机取得数字范围变为1~100。
3.将number输出为四位整数,位数不足四位则用0在前面补位,保证学员编号格式统一。
4.srand(time(0))是用来设置随机数种子的,time(0)会获取当前系统时间,每次运行程序的时间不同,种子值就不同,rand()生成的随机数序列也会不同,保证每次运行程序生成的随机数都是不一样的,否则多次运行每组取的四位学员编号相同。
实验结论2
1 #include <stdio.h> 2 int main() { 3 int choice, quantity; 4 float total_price = 0, amount_paid, change; 5 while (1) { 6 printf("\n自动饮料售卖机菜单:\n"); 7 printf("1. 可乐 - 3 元/瓶\n"); 8 printf("2. 雪碧 - 3 元/瓶\n"); 9 printf("3. 橙汁 - 5 元/瓶\n"); 10 printf("4. 矿泉水 - 2 元/瓶\n"); 11 printf("0. 退出购买流程\n"); 12 printf("请输入饮料编号: "); 13 scanf("%d", &choice); 14 if (choice == 0) 15 break; 16 if (choice < 1 || choice > 4) { 17 printf("无效的饮料编号,请重新输入。\n"); 18 continue; 19 } 20 printf("请输入购买的数量: "); 21 scanf("%d", &quantity); 22 if (quantity < 0) { 23 printf("购买数量不能为负数,请重新输入。\n"); 24 continue; 25 } 26 if(choice == 1 || choice == 2) 27 total_price += 3 * quantity; 28 else if(choice == 3) 29 total_price += 5 * quantity; 30 else 31 total_price += 2 * quantity; 32 printf("请投入金额: "); 33 scanf("%f", &amount_paid); 34 change = amount_paid - total_price; 35 printf("本次购买总价: %.2f 元\n", total_price); 36 printf("找零: %.2f 元\n", change); 37 total_price = 0; 38 } 39 printf("感谢您的购买,欢迎下次光临!\n"); 40 return 0; 41 }

回答问题:
1.后续每次购买的总价都会包含之前所有的消费,金额越算越大,无法得到单次购买的正确总价,找零也会出现问题。
2.遇到无效输入时,立刻结束当前这一次购买流程,让用户重新开始选择,而不是带着错误数据继续往下执行,在程序中即是回到循环开头,重新运行。
实验结论3
1 #include <stdio.h> 2 int main(){ 3 char ans; 4 while(scanf("%c", &ans) != EOF){ 5 getchar(); 6 if(ans=='r'){ 7 printf("stop!\n"); 8 } 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 } 18 } 19 return 0; 20 }

实验结论4
1 #include <stdio.h> 2 int main() { 3 double cost, total = 0; 4 double max = 0; 5 double min = 20000; 6 printf("输入今日开销,直到输入-1终止:\n"); 7 while (1) { 8 scanf("%lf", &cost); 9 if (cost == -1) { 10 break; 11 } 12 if (cost <= 0 || cost > 20000) { 13 printf("输入无效,请输入0~20000之间的金额\n"); 14 continue; 15 } 16 total += cost; 17 if (cost > max) { 18 max = cost; 19 } 20 if (cost < min) { 21 min = cost; 22 } 23 } 24 printf("今日累计消费总额: %.1f\n", total); 25 printf("今日最高一笔开销: %.1f\n", max); 26 printf("今日最低一笔开销: %.1f\n", min); 27 return 0; 28 }


实验结论5
1 #include <stdio.h> 2 int main() { 3 int a, b, c,t; 4 int max, mid, min; 5 while (scanf("%d %d %d", &a, &b, &c) != EOF) { 6 if (a > b) { 7 t = a; a = b; b = t; 8 } 9 if (a > c) { 10 t = a; a = c; c = t; 11 } 12 if (b > c) { 13 t = b; b = c; c = t; 14 } 15 min = a; mid = b; max = c; 16 if (min + mid <= max) { 17 printf("不能构成三角形\n"); 18 continue; 19 } 20 if (a == b && b == c) { 21 printf("等边三角形\n"); 22 } else if (a == b || b == c || a == c) { 23 printf("等腰三角形\n"); 24 } else if (max * max == min * min + mid * mid) { 25 printf("直角三角形\n"); 26 } else { 27 printf("普通三角形\n"); 28 } 29 } 30 return 0; 31 }

实验结论6
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <time.h> 4 int main() { 5 srand(time(0)); 6 int lucky_day = rand() % 30 + 1; 7 int guess, count = 0; 8 printf("猜猜2026年4月哪一天是你的Lucky day\n"); 9 printf("开始咯,你有3次机会,猜吧(1-30):"); 10 while (count < 3) { 11 scanf("%d", &guess); 12 count++; 13 if (guess == lucky_day) { 14 printf("哇,猜中了!\n"); 15 break; 16 } else if (guess < lucky_day) { 17 printf("你猜的日期早了,你的lucky day还没到呢\n"); 18 } else { 19 printf("你的日期晚了,你的lucky day还在前面哦\n"); 20 } 21 printf("再猜(1~30):", count + 1); 22 } 23 if (count == 3 && guess != lucky_day) { 24 printf("次数用光啦,4月你的lucky day是%d号\n", lucky_day); 25 } 26 return 0; 27 }


六、实验总结
1.通过实验一和实验六基本掌握了随机函数,即随机生成整数,并且能控制其范围,即整除该范围的最大值(默认从一开始随机取值)并且最后还要加一。
2.通过多个实验任务熟练掌握了循环语句。
浙公网安备 33010602011771号