实验2

task1.c

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

#define N 5
#define N1 80
#define N2 35

int main(){
    int cnt;
    int random_major,random_no;
    
    srand(time(NULL));
    
    cnt=0;
    while(cnt<N){
        random_major=rand()%2;
        
        if(random_major){
            random_no=rand()%N1+1;
            printf("20256343%04d\n",random_no);
        }
        else{
            random_no=rand()%N2+1;
            printf("20256343%04d\n",random_no);
        }
        
        cnt++;
    }
    
    return 0;
}

实验2 task1.1

实验2 task1.2

answer1:通过多次试验,我认为srand(time(NULL))的用途为生成随机数,且不会重复输出,而删除掉srand(time(NULL))之后会导致多次生成的数字相同,不会发生改变。

answer2:随机生成学号,用于抽签等

task2.c

#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;
}

实验2 task2.1

实验2 task2.2

answer1:这一行为会使进行下一次,上一次购买东西所花费的钱数加到本次总价上,导致错误。

answer2:continue的使用可以直接结束这一循环并直接开始下一循环。

task3.c

#include <stdio.h>

int main(){
    char color;
    
    while(1){
        
        scanf(" %c",&color);
        
        if(color=='r'){
            printf("stop!\n");
        }
        else if(color=='g'){
            printf("go go go\n");
        }
        else if(color=='y'){
            printf("wait a minute\n");
        }
        else
            printf("something must be wrong...\n");
        
    }
    
    return 0;
}

实验2 task3

task4.c

#include <stdio.h>

int main(){
    float x;
    float total=0.0;
    float max=0.0;
    float min=20000.0;
    
    printf("输入今日开销,直到输入-1终止:\n");
    while(1){
        scanf("%f",&x);
        
        if(x==-1){
            break;
        }
        
        total+=x;
        
            if(x>max)
                max=x;
            
            if(x<min)
                min=x;    
            
    }
    printf("今日累计消费总额:%.1f\n",total);
    printf("今日最高一笔开销:%.1f\n",max);
    printf("今日最低一笔开销:%.1f\n",min);
    
    return 0;
}

实验2 task4

task5.c

#include <stdio.h>

int main(){
    int a,b,c;
    while(scanf("%d %d %d",&a,&b,&c)!=EOF)
    {if((a+b<=c)||(a+c<=b)||(b+c<=a)){
            printf("不能构成三角形\n");
        }
    else{
        while(1){
            
        if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a)){
            printf("直角三角形\n");
            break;
        }
        else if(a==b&&b==c){
            printf("等边三角形\n");
            break;
        }        
        else if(a==b||b==c||a==c){
            printf("等腰三角形\n");
            break;
        }
        else{
            printf("普通三角形\n");
            break;
        }
    }
    }
   }
    return 0;
}

实验2 task5

task6.c

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

int main(){
    int lucky_day,n,cnt;
    srand(time(NULL));
    lucky_day=rand()%30+1;
    printf("猜猜2025年11月哪一天是你的lucky day\n");
    printf("开始喽,你有三次机会,猜吧(1~30):");
    
    for(cnt=0;cnt<3;++cnt){
        scanf("%d",&n);
        if(n<1||n>30){
            printf("猜猜2025年11月哪一天是你的lucky day\n");
            continue; 
        }
        if(cnt==2){
            printf("次数用光啦。悄悄告诉你,11月你的lucky day是%d号\n",lucky_day);
            break;
        }
        if(n==lucky_day){
            printf("哇,猜中了:)\n");
            break;
        }
        else if(n<lucky_day){
            printf("你猜的日期早了,你的lucky day还没到呢\n");
            printf("再猜(1~30):");
        }
        else{
            printf("你猜的日期晚了,你的lucky day在前面哦\n");
            printf("再猜(1~30):");
        }
    }
    return 0;
}

实验2task6运行截图

实验总结:通过这次实验,我对if语句,for语句的使用更加熟练,对于C语言要求也更加明确,可以更加迅速地完成代码的编写。

posted @ 2025-10-18 12:10  瀮昀  阅读(13)  评论(1)    收藏  举报