实验2

实验结论

任务1

(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    system ("pause");
14   return 0;
15 }

1

(2)问题一:生成五个随机学号,且前九位数均为204900420,后三位数在0到100之间。

         问题二:生成一个1到100的随机数。

         问题三:规范学号最后四位的整数,若为1,则其形式为0001。

         问题四:读取当前时间,依据读取的数据生成随机数,若删去,则无法达成预计随机效果。

任务2

(1)源代码

 1   while (1) {
 2     printf("\n自动饮料售卖机菜单:\n");
 3     printf("1. 可乐 - 3 元/瓶\n");
 4     printf("2. 雪碧 - 3 元/瓶\n");
 5     printf("3. 橙汁 - 5 元/瓶\n");
 6     printf("4. 矿泉水 - 2 元/瓶\n");
 7     printf("0. 退出购买流程\n");
 8     printf("请输入饮料编号: ");
 9     scanf("%d", &choice);
10     if (choice == 0)
11       break;
12  if (choice < 1 || choice > 4) {
13       printf("无效的饮料编号,请重新输入。\n");
14       continue;
15    }
16     printf("请输入购买的数量: ");
17     scanf("%d", &quantity);
18     if (quantity < 0) {
19       printf("购买数量不能为负数,请重新输入。\n");
20       continue;
21    }
22     if(choice == 1 || choice == 2)
23       total_price += 3 * quantity;
24     else if(choice == 3)
25       total_price += 5 * quantity;
26     else
27       total_price += 2 * quantity;
28     printf("请投入金额: ");
29     scanf("%f", &amount_paid);
30     change = amount_paid - total_price;
31     printf("本次购买总价: %.2f 元\n", total_price);
32     printf("找零: %.2f 元\n", change);
33     total_price = 0;
34  }
35   printf("感谢您的购买,欢迎下次光临!\n");
36   return 0;
37 }

2.1

(2)回答问题

问题1:去掉之后会积累先前所有购买饮料的价格而非每一次买的价格

问题2:第一个continue是让用户输入一个正确的饮料编号,第二个是让用户输入正确的购买数目。

任务3

(1)源代码

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

3

任务4

(1)源代码

 

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 int main()
 5 {
 6     double cost;
 7     double sum=0.0;
 8     double max=0.0;
 9     double min=20000.0;
10     printf("输入今日开销,直到输入-1终止:\n");
11 
12     while(1)
13     {
14         if(scanf("%lf", &cost) != 1)  
15         {
16             while(getchar() != '\n');
17             continue;
18         }
19 
20         if(cost == -1)
21         {
22             break;
23         }
24 
25         if(0 < cost && cost <= 20000)
26         {
27             sum += cost;
28             if(max < cost)
29             {
30                 max = cost;
31             }
32             if(min > cost)
33             {
34                 min = cost;
35             }
36         }
37     }
38     printf("今日累计消费总额:%.1f\n", sum);
39     printf("今日最高的一笔开销:%.1f\n", max);
40     printf("今日最低的一笔开销:%.1f\n", min);
41     system("pause");
42     return 0;
43 }
View Code

22.4

 任务5

(1)源代码:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 int main()
 5 {
 6     int a,b,c;
 7     while(scanf("%d %d %d", &a ,&b ,&c)!=EOF)
 8     {
 9     if(a+b<=c||a-b>=c)
10     printf("不能构成三角形");
11     else
12     {
13         if(a==b||a==c||b==c)
14         {
15             if(a==b&&b==c)
16             {
17                 printf("等边三角形");
18             }
19             else
20             {
21                 printf("等腰三角形");
22             }
23         }
24         else if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
25         {
26             printf("直角三角形");
27         }
28         else
29         {
30             printf("一般三角形");
31     
32         }
33     }
34     }
35 
36     system("pause");
37     return 0;
38 }
View Code

2.5

任务6

(1)源代码

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<time.h>
 4 int main()
 5 {
 6     int num,i;
 7     int ans;
 8     srand((unsigned int)time(NULL));
 9     num=rand()%30+1;
10     printf("猜猜2026年四月那一天是你的lucky day\n");
11     printf("开始喽,你有三次机会,猜吧(1~30):");
12     for(i=1;i<=3;)
13     {
14         scanf("%d",&ans);
15         if(ans==num)
16         {
17         printf("哇,猜中啦:)");
18         break;
19         }
20         else
21         {
22             if(ans<num)
23             {
24             printf("你猜的日期早了,你的lucky day在后面哦\n");
25             printf("再猜(1~30):");
26             i=i+1;
27             }
28             if(ans>num)
29             {
30             printf("你猜的日期晚了,你的lucky day在前面呢\n");
31             printf("再猜(1~30):");
32             i=i+1;
33             }
34         if(i>=4)
35         {
36         printf("次数用光啦,你的lucky day是%d号",num);
37         }
38         }
39     }
40     system("pause");
41     return(0);
42 }
View Code

(2)运行截图

屏幕截图 2026-04-02 202527

实验总结

在做第五个任务的时候看了大半天,看不出来为啥输入三个数后按回车不输出结果,后面好久才发现原来是while后面没有打大括号,我已极苦

posted @ 2026-04-02 20:31  任松佳  阅读(0)  评论(0)    收藏  举报