实验2

实验任务1

源代码task1.c

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

运行测试截图

屏幕截图 2026-10-28 204524

问题1:

循环生成1-100之间的随机整数,拼接在固定前缀20490042的后面,输出5条学员编号。

问题2:

line14表示调用rand()生成随机整数,得到0-99之间的数再加1,把随机数范围限定为1-100,最后赋值给变量number。

问题3:

以四位宽度输出整数,不足四位左边补0,保证编号固定4位。

问题4:

设置随机数种子。去掉之后,rand产生的随机序列一样,运行结果5个数字固定不变。

实验任务2

源代码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;
}

运行测试截图

image

问题1:

total_price=0的作用是单次购买结束后清空总价。去掉后,下一次购买的金额会累加在上一次总价上,进而导致价格计算错误。

问题2:

continue表示立刻结束本次循环后面的代码,直接跳到while循环条件判断处,开启下一轮循环,不会执行本次循环剩下的代码。

实验任务3

源代码task3.c

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

}

运行测试截图

屏幕截图 2026-10-28 194324

实验任务4

源代码task4.c

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

运行测试截图

屏幕截图 2026-10-28 200436

实验任务5

源代码task5.c

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

运行测试截图

屏幕截图 2026-10-28 201904

实验任务6

源代码task6.c

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
	int n;
	int lucky_day;
	int chance=3;
	srand(time(0));
	lucky_day=rand()%30+1;
	printf("猜猜2026年11月哪一天是你的lucky day\n");
	while(chance>0){
		if(chance==3){
		printf("开始喽,你有三次机会,猜吧(1~30):\n");
	    }
	else{
		printf("再猜\n");
     	}
	scanf("%d",&n);
	if (n==lucky_day){
		printf("哇,猜中了!\n");
		return 0;
    	}
	else if(n<lucky_day){
		printf("你猜的日期早了,你的lucky day还没到呢\n");
    	}
	else{
		printf("你猜的日期晚了,你的lucky day在前面哦\n");
    	}
    	chance--;
	}
	printf("次数用光啦,11月你的lucky day是%d号\n",lucky_day);
	return 0;
}

运行测试截图

屏幕截图 2026-10-28 204313

屏幕截图 2026-10-28 203950

posted @ 2026-10-28 20:52  昍Z  阅读(9)  评论(0)    收藏  举报