实验2

任务一:

#include<stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 5
int main() {
    int number;
    int i;
    srand(time(0));
}
 

屏幕截图 2026-04-03 130945

 

问题1:功能是生成并输出5个1到100之间的随机整数

问题2:生成1~100之间的随机整数,并赋值给变量number

问题3:%d是以十进制整数形式输出数字:4是指定输出的最小宽度为4个字符:0是指当数字位数不足4位时在数字左侧补0

问题4:为Rand()函数设置随机种子,让每次运行程序生成的随机数序列不同

任务二

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

屏幕截图 2026-04-03 132725

问题1:会累加所有购买的金额,导致总价会异常偏大

问题2:立即终止本次循环的剩余代码执行,直接跳转到循环的条件判断处,开始下一次的循环

任务三

#include <stdio.h>

int main() {
    char color;
    
    while (scanf("%c", &color) != EOF) {
        if (color == '\n') continue; 
        
        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");
        }
        
        while (getchar() != '\n');
    }
    return 0;
}

屏幕截图 2026-04-03 134020

任务四

#include <stdio.h>

int main() {
    double expense;
    double total = 0.0;
    double max_expense = 0.0;
    double min_expense = 20000.1; 
    
    printf("请开始输入每笔开销(输入-1结束程序):\n");
    
    while (1) {
        scanf("%lf", &expense);
        
        
        if (expense == -1) {
            break;
        }
        
        
        if (expense > 0 && expense <= 20000) {
            total += expense;
            
            
            if (expense > max_expense) {
                max_expense = expense;
            }
            
            
            if (expense < min_expense) {
                min_expense = expense;
            }
        } else {
            printf("输入金额超出范围(0 < 开销 ≤ 20000),请重新输入\n");
        }
    }
    
    
    printf("\n今日开销统计结果:\n");
    printf("总开销:%.1f 元\n", total);
    printf("最高一笔开销:%.1f 元\n", max_expense);
    printf("最低一笔开销:%.1f 元\n", min_expense);
    
    return 0;
}

屏幕截图 2026-04-03 134656

任务五

#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");
            continue;
        }

        
        if (a == b && b == c) {
            printf("等边三角形\n");
        } else if (a == b || a == c || b == c) {
            
            
            if (a*a + b*b == c*c || a*a + c*c == b*b || b*b + c*c == a*a) {
                printf("等腰直角三角形\n");
            } else {
                printf("等腰三角形\n");
            }
        } else if (a*a + b*b == c*c || a*a + c*c == b*b || b*b + c*c == a*a) {
            printf("直角三角形\n");
        } else {
            printf("普通三角形\n");
        }
    }
    return 0;
}

屏幕截图 2026-04-03 135441

任务六

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

int main() {
    
    srand((unsigned int)time(0));

    int lucky_day = rand() % 30 + 1;
    int guess;
    int chances = 3; 

    printf("猜一猜4月的lucky day是几号(1-30),你有3次机会:\n");

    
    for (int i = 0; i < 3; i++) {
        printf("请输入你猜的日期:");
        scanf("%d", &guess);
        chances--;

        if (guess == lucky_day) {
            printf("恭喜你猜中了!4月的lucky day就是%d号🎉\n", lucky_day);
            return 0; 
        } else if (guess < lucky_day) {
            printf("猜早了,你还有%d次机会\n", chances);
        } else {
            printf("猜晚了,你还有%d次机会\n", chances);
        }
    }

    
    printf("\n3次机会已经用完啦,你没有猜中。\n你的4月lucky day是%d号\n", lucky_day);

    return 0;
}

屏幕截图 2026-04-03 140102

 

posted @ 2026-04-03 14:03  ahuuu  阅读(10)  评论(0)    收藏  举报