桑晨

实验二

task1

源代码

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <time.h>
 4 
 5 #define N 100
 6 #define CNT 5
 7 
 8 int main() {
 9     int number;
10     int i;
11 
12     srand(time(0));     // 以当前系统时间作为随机种子
13     for(i = 0; i < CNT; ++i) {
14         number = rand() % N + 1;
15         printf("20490042%04d\n", number);
16     }
17 
18     return 0;
19 }

运行结果截图

运行截图task1

回答问题

1. 程序功能:循环生成 5 个 1~100 的随机整数,输出格式为`20490042xxxx`的编号,xxxx 固定 4 位,不足补 0。
2. line14:`number = rand() % N + 1;``rand()`产生随机整数,`rand()%N`得到 0~99,加 1 后得到 1~100 的随机整数,赋值给 number。
3. `%04d`:设置输出宽度为 4 位,如果数字不足 4 位,左边自动补 0,保证编号格式统一。
4. `srand(time(0));`:以当前系统时间作为随机数种子。去掉这行,每次运行程序产生的随机数都相同;加上之后每次运行随机结果不同。


 

task2

源代码

 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         if(choice == 1 || choice == 2)
34             total_price += 3 * quantity;
35         else if(choice == 3)
36             total_price += 5 * quantity;
37         else
38             total_price += 2 * quantity;
39 
40         printf("请投入金额: ");
41         scanf("%f", &amount_paid);
42 
43         change = amount_paid - total_price;
44         printf("本次购买总价: %.2f 元\n", total_price);
45         printf("找零: %.2f 元\n", change);
46 
47         total_price = 0;
48     }
49 
50     printf("感谢您的购买,欢迎下次光临!\n");
51     return 0;
52 }

运行结果截图

运行task2

回答问题

1. 如果去掉`total_price = 0;`:变量 total_price 不会在每次结算后清零,多次购买时价格会不断累加,导致总价、找零计算错误。
2. continue 语句:结束本轮循环中后续代码的执行,直接跳到循环条件判断位置,开启下一轮循环。本题用于输入非法时,跳过购买结算流程,重新输入。


 

task3

源代码

 1 #include<stdio.h>
 2 int main(){
 3     int i;
 4     char a;
 5     
 6     for(i=1;i<=4;i++)
 7     {
 8         printf("请输入信号灯字符\n");
 9         scanf(" %c",&a);
10         switch(a)
11     {
12         case('r'):
13             printf("stop!\n");
14             break;
15         case('g'):
16             printf("go go go\n");
17             break;
18         case('y'):
19             printf("wait a minute\n");
20             break;
21         default:
22             printf("something must be wrong\n");
23             break;
24       
25 }
26   27    }
28 
29    return 0;
30 }

 

运行结果截图

屏幕截图 2026-10-29 133506


task4

源代码

#include<stdio.h>
int main(){
   printf("输入今日开销,直到输入-1终止\n");
   double sum=0; 
   double max,min,money;
   int first=1;
   
   
   do{
       scanf("%lf",&money);
       
       if(money==-1)
       break;
       
       if (money>0&&money<=20000)
       {
           sum+=money;
           if(first==1)
           {
               max=money;
               min=money;
               first=0;
           }
        else
        {
            if(money>max)
              max=money;
            if(money<min)
              min=money;
        }
    }
    else
    {
        printf("输入不合法\n");
    }
        
       }
       
    while(1);
   printf("今日累计消费总额:%.1f\n",sum);
   printf("今日最高一笔开销:%.1f\n",max);
    printf("今日最低一笔开销:%.1f\n",min);
   return 0;
}

 

运行结果截图

 

屏幕截图 2026-10-29 140746


 

task5

源代码

#include<stdio.h>
int main(){
   int a,b,c,i;
   for(i=0;i<=4;i++)
{
   scanf("%d %d %d",&a,&b,&c);
   if(a+b>c&&a+c>b&&b+c>a)
   {
       if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)   
           printf("直角三角形");
       else if(a==b&&a==c)
           printf("等边三角形");
       else if(a==b&&a!=c||a==c&&a!=b||b==c&&b!=a)
           printf("等腰三角形");
       else
           printf("普通三角形");
   }
   else
    {
           printf("不能构成三角形"); 
      continue;
    }    
}
   return 0;
}

 

运行截图

屏幕截图 2026-10-29 182021


 

task6

源代码

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main()
{
    int lucky, guess, i;
    
    srand((unsigned)time(NULL));
   
    lucky = rand() % 30 + 1;

    printf("猜11月Lucky Day游戏\n");
    printf("你一共有3次机会\n");

    for(i = 1; i <= 3; i++)
    {
        printf("第%d次猜测,请输入日期(1~30):", i);
        scanf("%d", &guess);

        if(guess == lucky)
        {
            printf("恭喜你,猜中了!\n");
            break;
        }
        else if(guess < lucky)
        {
            printf("猜早啦,你的lucky day 还没到呢!\n");
        }
        else
        {
            printf("猜晚啦,你的lucky day在前面哦!\n");
        }

        
        if(i == 3)
        {
            printf("次数用完啦!11月的lucky day是:%d\n", lucky);
        }
    }
    return 0;
}

 

运行截图

屏幕截图 2026-10-29 182651

 

posted on 2026-10-29 18:27  桑晨  阅读(5)  评论(0)    收藏  举报

导航