实验2

1、实验任务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:line13代码的功能是生成一个1~100的随机整数

问题2:%04d的作用是输出一个4位随机数

问题3:程序的功能是生成一个12位的学员编号,其中前九位为204900420,后三位为000~100随机数

 

 

2、实验任务2

 1 #include <stdio.h>
 2 
 3 int main() {
 4     int choice, quantity;
 5     float total_price = 0, amount_paid, change;
 6 
 7     while (1) {
 8         printf("\n自动饮料售卖机菜单:\n");
 9         printf("1. 可乐 - 3 元/瓶\n");
10         printf("2. 雪碧 - 3 元/瓶\n");
11         printf("3. 橙汁 - 5 元/瓶\n");
12         printf("4. 矿泉水 - 2 元/瓶\n");
13         printf("0. 退出购买流程\n");
14         printf("请输入饮料编号: ");
15         scanf("%d", &choice);
16 
17         if (choice == 0)
18             break;
19 
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         switch (choice) {
34             case 1:
35             case 2:
36                 total_price += 3 * quantity;
37                 break;
38             case 3:
39                 total_price += 5 * quantity;
40                 break;
41             case 4:
42                 total_price += 2 * quantity;
43                 break;
44         }
45 
46         printf("请投入金额: ");
47         scanf("%f", &amount_paid);
48 
49         change = amount_paid - total_price;
50         printf("本次购买总价: %.2f 元\n", total_price);
51         printf("找零: %.2f 元\n", change);
52 
53         total_price = 0;
54     }
55 
56     printf("感谢您的购买,欢迎下次光临!\n");
57     return 0;
58 }

问题1:line53代码起到重置总价的作用,去掉会导致后续总价计算出现错误

问题2:break语句会完全退出循环,而continue只是跳过当前迭代,不会退出循环

问题3:没有必要,因为case已经完全覆盖了所有可能的情况

 

 

3、实验任务3

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 
 4 int main() {
 5     char x;
 6     while ((x=getchar())!=EOF) {
 7         getchar();
 8                 switch (x) {
 9         case'r':
10             printf("stop!\n");
11             break;
12         case'g':
13             printf("go go go\n");
14             break;
15         case'y':
16             printf("wait a minute\n");
17             break;
18         default:
19             printf("somthing must be wrong...\n");
20             break;
21         }
22     }
23     return 0;
24 }

 

 

 

4、实验任务4

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

 

 

 

5、实验任务5

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

 

 

 

6、实验任务6

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

 

posted @ 2025-03-23 13:21  DelPaulo  阅读(13)  评论(0)    收藏  举报