实验2
一.任务1
源代码
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<time.h> 4 5 #define N 5 6 7 int main() { 8 int number; 9 int i; 10 11 srand(time(0)); 12 for (i = 0; i < N; ++i) { 13 number = rand() % 100 + 1; 14 printf("20490042%04d\n", number); 15 } 16 17 return 0; 18 }
测试结果截图

问题回答
1.问题1
以系统时间作为随机种子,随机生成5个某专业学员编号
2.问题2
生成一个在1~100范围内的伪随机数
3.问题3
控制number变量的输出数据域宽为4,左面不使用的空位置自动填0
4.问题4
以时间为随机种子,为rand()设置随机种子,确保每次运行代码能生成随机学员编号
二.任务2
源代码
1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 4 int main() { 5 int choice, quantity; 6 float total_price = 0, amount_paid, change; 7 8 while (1) { 9 printf("\n自动饮料售卖机菜单:\n"); 10 printf("1. 可乐 - 3 元/瓶\n"); 11 printf("2. 雪碧 - 3 元/瓶\n"); 12 printf("3. 橙汁 - 5 元/瓶\n"); 13 printf("4. 矿泉水 - 2 元/瓶\n"); 14 printf("0. 退出购买流程\n"); 15 printf("请输入饮料编号: "); 16 scanf("%d", &choice); 17 18 if (choice == 0) 19 break; 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 if (choice == 1 || choice == 2) 34 total_price += 3 * quantity; 35 else if (choice == 3) 36 total_price += 5 * quantity; 37 else 38 total_price += 2 * quantity; 39 40 printf("请投入金额: "); 41 scanf("%f", &amount_paid); 42 43 change = amount_paid - total_price; 44 printf("本次购买总价: %.2f 元\n", total_price); 45 printf("找零: %.2f 元\n", change); 46 47 total_price = 0; 48 49 }
测试结果截图

问题回答
1.问题1
去掉line47后,后续“购物”计算总价时,程序会将前几次购物所花费的金额与本次购物总价相加,使本次购物总价计算错误。
2.问题2
跳过循环体位于该语句后的所有语句,提前结束本次循环,开始新一轮循环
三.任务3
源代码
1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 4 int main() { 5 char ch; 6 7 while (scanf(" %c",&ch) != EOF) { 8 9 switch (ch) 10 { 11 case 'r':printf("stop!\n"); break; 12 case 'g':printf("go go go\n"); break; 13 case 'y':printf("wait a minute\n"); break; 14 default:printf("something must be wrong...\n"); break; 15 } 16 } 17 18 return 0; 19 }
测试结果截图

四.任务4
源代码
1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 4 int main() { 5 6 double money, sum = 0.0; 7 double max = 0.0, min = 20000.0; 8 9 printf("输入今日开销,直到输入-1终止:\n"); 10 11 do { 12 scanf("%lf", &money); 13 14 if (money == -1) { 15 break; 16 } 17 18 sum = sum + money; 19 20 if (max < money) 21 max = money; 22 if (min > money) 23 min = money; 24 25 } while (1); 26 27 printf("今日累计消费总额:%.1lf\n", sum); 28 printf("今日最高一笔开销:%.1lf\n", max); 29 printf("今日最低一笔开销:%.1lf\n", min); 30 31 return 0; 32 33 }
测试结果截图

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

六.任务六
源代码
1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<time.h> 5 6 int main() { 7 int day, guess, i; 8 9 printf("猜猜2026年4月哪一天是你的lucky day\n"); 10 printf("\n开始喽,你有3次机会,猜吧(1~30):"); 11 12 srand(time(0)); 13 day = rand() % 30 + 1; 14 15 for (i = 1; i <= 3; ++i) { 16 scanf("%d", &guess); 17 18 if (guess > day) { 19 printf("\n你猜的日期晚了,你的lucky day在前面哦\n"); 20 } 21 else if (guess < day) { 22 printf("\n你猜的日期早了,你的lucky day还没到呢\n"); 23 } 24 else { 25 printf("\n哇,猜中了:)"); 26 break; 27 } 28 if (i <= 2) 29 printf("\n再猜(1~30):"); 30 31 } 32 if (i == 4)//三次未猜中 33 printf("\n次数用光啦。4月你的lucky day是%d号", day); 34 35 return 0; 36 }
测试结果截图


浙公网安备 33010602011771号