实验二

任务一

点击查看代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N 5

int main() {
	int number;
int i;
	srand(time(0)); // 以当前系统时间作为随机种子
	for(i = 0; i < N; ++i) {
		number = rand() % 100 + 1;
		printf("20490042%04d\n", number);
	}
	return 0;
}

Q1:生成5个20240042XXXX格式的学员编号,其中XXXX为0001~0100的随机整数

Q2:

Q3:确保输出为4位数字

Q4:以当前系统时间作为随机种子

任务二

点击查看代码
#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;
}

image

Q1:导致总价累加错误

Q2:当输入无效数量时,避免执行错误逻辑,

任务三

点击查看代码
#include <stdio.h>

int main() {
    char color;
    printf("请输入交通信号灯颜色(r/g/y): ");

    while ((color = getchar()) != EOF) {
        if (color == '\n') continue;

        switch(color) {
            case 'r':
            case 'R': printf("stop!\n"); break;
            case 'g':
            case 'G': printf("go go go\n"); break;
            case 'y':
            case 'Y': printf("wait a minute\n"); break;
            default: printf("something must be wrong...\n");
        }
        printf("请输入交通信号灯颜色(r/g/y): ");
    }
    return 0;
}

image

任务四

点击查看代码
#include <stdio.h>
#include <limits.h>

int main() {
    double expense, max = -1, min = INT_MAX, sum = 0;
    int count = 0;

    printf("请输入每日开销(输入-1结束):\n");
    while (scanf("%lf", &expense) == 1 && expense != -1) {
        if (expense <= 0 || expense > 20000) {
            printf("输入无效!请确保0 < 开销 <= 20000。\n");
            continue;
        }
        if (expense > max) max = expense;
        if (expense < min) min = expense;
        sum += expense;
        count++;
    }

    if (count == 0) {
        printf("未输入任何有效开销。\n");
    } else {
        printf("最高开销: %.1f 元\n", max);
        printf("最低开销: %.1f 元\n", min);
        printf("总开销: %.1f 元\n", sum);
    }
    return 0;
}

image

任务五

点击查看代码
#include <stdio.h>
#include <math.h>

int main() {
    int a, b, c;
    printf("请输入三角形三边长(空格分隔):\n");
    
    while (scanf("%d %d %d", &a, &b, &c) == 3) {
        // 判断能否构成三角形
        if (a <= 0 || b <= 0 || c <= 0 || 
            a + b <= c || a + c <= b || b + c <= a) {
            printf("不能构成三角形\n");
        } else {
            // 判断类型(按优先级:等边 > 直角 > 等腰 > 普通)
            if (a == b && b == c) {
                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 if (a == b || b == c || a == c) {
                printf("等腰三角形\n");
            } else {
                printf("普通三角形\n");
            }
        }
        printf("请输入三角形三边长(空格分隔):\n");
    }
    return 0;
}

image

任务六

点击查看代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    srand((unsigned)time(0));
    int lucky_day = rand() % 30 + 1; // [1,30]
    int guess, attempts = 0;
    printf("欢迎来到4月幸运日游戏!您有3次机会。\n");

    while (attempts < 3) {
        printf("请输入您猜测的日期(1-30): ");
        if (scanf("%d", &guess) != 1) {
            printf("输入错误!请输入数字。\n");
            while (getchar() != '\n'); 
            continue;
        }

        attempts++;
        if (guess == lucky_day) {
            printf("恭喜!您猜中了4月的幸运日:%d\n", lucky_day);
            return 0;
        } else if (guess < lucky_day) {
            printf("太早了!幸运日在这之后。\n");
        } else {
            printf("太晚了!幸运日在这之前。\n");
        }
    }
    printf("很遗憾,3次机会已用完。4月幸运日是:%d\n", lucky_day);
    return 0;
}

image

posted @ 2026-04-14 10:57  尽繁华  阅读(3)  评论(0)    收藏  举报