实验2

实验结论

 

任务1

屏幕截图 2026-10-28 153046

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

#define N 100
#define CNT 5

int main() {
    int number;
    int i;

    srand(time(0));    
    for(i = 0; i < CNT; ++i) {
        number = rand() % N + 1;
        printf("20490042%04d\n", number);
    }

    return 0;
}

 

问题1:程序的功能是生成5个随机编号

问题2:功能是随机生成一个1到100的整数,并赋值给number

问题3:读取4位,不足则补0,使各数字位数相等

问题4:确保生成的数字是真随机,若删去这一行,每次的结果会相同,不是真正的随机数

 

任务2

屏幕截图 2026-10-28 153219

#include <stdio.h>
int main() {
    int choice, quantity;
    float total_price = 0, amount_paid, change;
    while (1) {
        printf("\n自动饮料售卖机菜单:\n");
        printf("1. 可乐 - 3 元/瓶\n");
        printf("2. 雪碧 - 3 元/瓶\n");
        printf("3. 橙汁 - 5 元/瓶\n");
        printf("4. 矿泉水 - 2 元/瓶\n");
        printf("0. 退出购买流程\n");
        printf("请输入饮料编号: ");
        scanf("%d", &choice);

        if (choice == 0)
            break;
        if (choice < 1 || choice > 4) {
            printf("无效的饮料编号,请重新输入。\n");
            continue;
        }
        printf("请输入购买的数量: ");
        scanf("%d", &quantity);
        if (quantity < 0) {
            printf("购买数量不能为负数,请重新输入。\n");
            continue;
        }
        if(choice == 1 || choice == 2)
            total_price += 3 * quantity;
        else if(choice == 3)
            total_price += 5 * quantity;
        else
            total_price += 2 * quantity;

        printf("请投入金额: ");
        scanf("%f", &amount_paid);
        change = amount_paid - total_price;
        printf("本次购买总价: %.2f 元\n", total_price);
        printf("找零: %.2f 元\n", change);
        total_price = 0;
    }
    printf("感谢您的购买,欢迎下次光临!\n");
    return 0;
}

问题1:如果去掉初始化,total_price的值一开始会是电脑中不确定的垃圾值,容易出bug

问题2:continue结束本次循环,继续下一次

 

任务3

屏幕截图 2026-10-28 155532

#include <stdio.h>

int main() {
    char x;
    
    
    int i;
    for(i=1;i<=4;){
        
    scanf(" %c",&x);
    
    switch(x){
        case 'r':printf("stop!");break;
        case 'g':printf("go go go");break;
        case 'y':printf("wait a minute") ;break;
        default:printf("something must be wrong...");break;
            
          }
    ++i;
    }
    

    return 0;
}

 

任务4

屏幕截图 2026-10-28 162731

#include <stdio.h>
int main() {
   float max=0,min=20000,sum=0,x=0;
   scanf("%f",&x);
   while(x!=-1)
   {sum+=x;
   if(x>max)
   max=x;
   
   if(x<min)
   min=x;
   
   scanf("%f",&x);
   
   }
    
    printf("今日累计消费总额:%.1f\n今日最高一笔开销:%.1f\n今日最低一笔开销:%.1f",sum,max,min);
    
    

    return 0;
}

 

任务5

屏幕截图 2026-10-28 170605

#include <stdio.h>

int main() {
    
    int a,b,c,i;
    
    
    for(i=1;i<=5;++i)
    {scanf("%d%d%d",&a,&b,&c);
         if(a+b>c&&a+c>b&&b+c>a){
           
            
            if(a==b&&b==c)
            printf("等边三角形");
           
           else if(a*a+b*b==c*c||c*c+b*b==a*a||a*a+c*c==b*b)
             printf("直角三角形");
        
            else if(a==b||a==c||b==c)
            printf("等腰三角形");
           
            else
            printf("普通三角形");
                }
           
           else
      printf("不能构成三角形");
      
    }
      
     

    return 0;
}

 

任务6

屏幕截图 2026-10-28 194912

 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int lucky,cai,i;
srand(time(0));
lucky=rand()%30+1;

    for(i=1;i<=3;++i)
    {if(i==1)
    printf("猜猜2026年11月哪一天是你的lucky day\n开始喽,你有3次机会,猜吧(1~30):");
     else
    printf("再猜(1~30):");
     
     
     scanf("%d",&cai);
     if(cai==lucky)
     {printf("哇,猜中了:)");break;}
     else if(cai<=lucky)
     printf("你猜的日期早了,你的lucky day还没到呢\n");
     else
     printf("你猜的日期晚了,你的lucky day在前面哦\n");
       
    if(i==3)
       printf("次数用光啦。11月你的lucky day是%d",lucky);
    }  


return 0;
}

 

实验总结

巩固了if,while等函数,对分支选择、循环、跳转的认识又进一步增加了!!!从只会照搬老师的样例到一步步写出自己的代码,觉得特别有成就感,最后遇到随机lucky day卡了一下就去查了资料和老师之前的例题,最后成功解决啦

 

posted @ 2026-10-28 20:23  -_Appreciate_-  阅读(9)  评论(1)    收藏  举报