实验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 }

测试结果截图

屏幕截图 2026-04-08 134233

问题回答

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     }

测试结果截图

屏幕截图 2026-04-08 134129

问题回答

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 }

 

测试结果截图

屏幕截图 2026-04-08 132216

 

 

四.任务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 }

测试结果截图

屏幕截图 2026-04-08 130200

 

 

五.任务五

源代码

 

 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 }

 

测试结果截图

 屏幕截图 2026-04-08 130039

 

 

六.任务六

源代码

 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 }

测试结果截图

屏幕截图 2026-04-08 125748

屏幕截图 2026-04-08 125711

 

posted @ 2026-04-05 18:13  昵称不足4个字符  阅读(10)  评论(0)    收藏  举报