实验2

任务一

源代码:

 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:根据当前系统时间随机生成人员编号,范围为202400420001~202400420100

问题2:生成学员编号的后两位

问题3:确保生成的数据都是四位数,不足四位的在前补“0”

问题4:使程序根据运行时间实现完全随机,防止出现每次生成的随机序列完全相同的伪随机情况

 

任务二

源代码:

 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  }
代码2

 

运行结果截图:

捕获2

捕获22

 

问题1:在第一次购买结束后清空总金额,确保之后再次购买时金额从0开始加。如果去掉该行,第二次购买时金额会从第一次的基础上加,导致数据错误。

问题2:跳过本次循环的剩余代码,直接进入下一次循环·。

任务三

源代码:

 1 #include<stdio.h>
 2 int main(){
 3  char col;
 4 
 5  while(scanf("%c",&col)!=EOF){
 6  switch(col){
 7     case 'r':printf("stop!\n");break;
 8     case 'g':printf("go go go\n");break;
 9     case 'y':printf("wait a minute\n");break;
10     default:printf("something must be wrong...\n");
11  }  
12     getchar(); 
13  }
14  return 0;
15 }

 

运行结果截图:

捕获3

 

任务四

源代码:

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

 

运行结果截图:

2a5f48977e73419888821b5204173431

 

任务五

源代码:

 1 #include<stdio.h>
 2 int main() {
 3     int a, b, c;
 4     while (scanf("%d%d%d",&a,&b,&c) != EOF) {
 5         if (a + b > c && a + c > b & b + c > a) {
 6             if (a == b && b == c)
 7                 printf("等边三角形\n");
 8             else if (a == b || b == c || c == a)
 9                 printf("等腰三角形\n");
10             else if (a * a + b * b == c * c || a * a + c * c == b * b || b * b + c * c == a * a)
11                 printf("直角三角形\n");
12             else
13                 printf("普通三角形\n");
14         }
15             else
16             printf("不能构成三角形\n");
17     }
18     return 0;
19 }

 

运行结果截图:

cb48b14b03760810b3aa514344a60f68

 

任务六

源代码:

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

 

运行结果截图:

a5d18d75fbf7b627a8eac276f3d5aafa

 

452ff867635bbde99f60465bfbda8e97

 

posted @ 2026-04-06 16:29  月色群青  阅读(6)  评论(0)    收藏  举报