实验二

任务一

源代码:

 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     srand(time(0));
11     for(i=0;i<N;++i){
12         number = rand()%100+1;
13         printf("20490042%04d\n",number);
14     }
15     return 0;
16 }
1

捕获

问题一:生成五个随机的以20490042xxxx为格式的号码,其中xxxx是从0000到0100之间的数

问题二:随机生成一个[1,100]之间的数

问题三:使得20490042后面生成的数有四位

问题四:去掉后发现多次运行生成的结果是一样的,没有变化,作用可能是,以时间的变化为基点,确保生成的结果不一样。

任务二:

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

屏幕截图 2026-04-07 205451

问题一:下次购买,会从原来总价的基础上继续叠加,也会导致后面找零也计算错误。

问题二:结束这次循环,重新在这个循环从头开始。如第一个continue,如果输入无效数据,让客户重新挑选饮品。

任务三:

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

屏幕截图 2026-04-07 212715

任务四:

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

屏幕截图 2026-04-07 223552

 

任务五:
 1 #include <stdio.h>
 2 int main()
 3 {
 4  int a,b,c;
 5  printf("请输入三边长,按Ctrl+Z回车终止:\n");
 6  while(scanf("%d%d%d", &a, &b, &c)==3){
 7      if(a+b>c&&a+c>b&&b+c>a){
 8          if(a==b&&b==c){
 9              printf("等边三角形\n");}
10          else if(a==b||a==c||b==c){
11              printf("等腰三角形\n");}
12          else if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a){
13              printf("直角三角形\n");}
14          else{
15              printf("普通三角形\n");}
16      }
17      else{
18      printf("不能构成三角形\n");
19      }
20      }
21 return 0;
22 }
5

屏幕截图 2026-04-07 225914

 

 任务六:

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

屏幕截图 2026-04-07 234328

 

posted @ 2026-04-07 23:45  asteria11  阅读(1)  评论(0)    收藏  举报