实验2

实验任务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:line13代码功能:随机生成1~100数字赋值给number

问题2:%04d作用:使number数字补足4位,不足四位前面加0

问题3:代码作用:随机生成一位学员学号202400420001~202400420100.

实验任务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 switch (choice) {
27 case 1:
28 case 2:
29 total_price += 3 * quantity;
30 break;
31 case 3:
32 total_price += 5 * quantity;
33 break;
34 case 4:
35 total_price += 2 * quantity;
36 break;
37 } 
38 printf("请投入金额: ");
39 scanf("%f", &amount_paid);
40 change = amount_paid - total_price;
41 printf("本次购买总价: %.2f 元\n", total_price);
42 printf("找零: %.2f 元\n", change);
43 total_price = 0;
44 } 
45 printf("感谢您的购买, 欢迎下次光临! \n");
46 return 0;
47 }

运行结果截图:

问题1:line53作用:将价格重新归零,如果删去会使价格初始值与上一次支付相同

问题2:break是跳出内循环,continue是继续内循环

问题3:不用加入default语句,因为choice一定在规定范围之内

实验任务3

代码:

 1 #include <stdio.h>
 2 int main()
 3 {
 4     char s;
 5     while (1) {
 6         scanf_s("%c", &s,1);
 7         getchar();
 8         switch (s) {
 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     }
15     return 0;

运行结果截图:

 实验任务4:

 1 #include <stdio.h>
 2 int main()
 3 {
 4     double sum = 0, a, b = 0, c = 20000;
 5     printf("输入今日开销,直到输入-1终止:");
 6     while (1) {
 7         scanf("%lf", &a);
 8         if (a == -1) {
 9             break;
10         }
11         sum = sum + a;
12         if (c > a) {
13             c = a;
14         }
15         if (b < a) {
16             b = a;
17         }
18     }
19     printf("今日累计消费总额:%.1f\n", sum);
20     printf("今日最高一笔开销:%.1f\n", b);
21     printf("今日最低一笔开销:%.1f\n", c);
22 
23     return 0;
24 }

运行结果截图:

 实验任务5

代码:

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

运行结果截图:

 实验任务6

代码:

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

运行结果截图:

 

posted @ 2025-03-21 22:36  王润淇  阅读(33)  评论(0)    收藏  举报