实验2

任务1

代码

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

#define N 100
#define CNT 57

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

问题1:程序的功能是什么?
答: 程序的功能是生成57个随机的学生编号。
问题2:解释line14代码的功能。
答: rand() % 100 + 1 的功能是生成一个从1到100的随机整数。
问题3:解释line15使用格式符%04d起到什么作用。
答: 如果输出的数字不到4位,前面会自动补上0。比如数字是7,就会打印成 0007,让学号看起来整齐。
问题4:代码srand(time(0));起到什么作用?
答: 它用当前的时间作为种子来生成随机数。如果去掉这行代码,每次运行程序生成的随机数都会一样,不是真正的随机。

任务2

代码

点击查看代码
#define _CRT_SECURE_NO_WARNINGS
#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

问题1:line47代码 total_price = 0; 如果去掉,对程序有什么影响?
答: 如果去掉,上一笔买东西的钱会加到下一笔里。这样算出来的总价是错的。变量每次循环都要清零。
问题2:while循环中,有两处使用continue语句。解释在循环中使用continue语句,语义是什么?
答: continue 的意思是:跳过这次循环剩下的代码,直接回到循环最开始的地方。这里用来在用户输入错误时,让用户重新选择,不执行后面的计算。

任务3

代码

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

int main() {
    char c;
    for (int i = 0; i < 4; i++) {
        scanf(" %c", &c);
        switch (c) {
        case 'r': printf("stop!\n"); break;
        case 'g': printf("go go go\n"); break;
        case 'y': printf("wait a minute\n"); break;
        default: printf("something must be wrong...\n"); break;
        }
    }
    return 0;
}
##运行结果

任务3

任务4

代码

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

int main() {
    double cost, sum = 0.0;
    double max = -1.0;     
    double min = 100000.0; 

    printf("输入今日开销,直到输入-1终止:\n");
    while (1) {
        scanf("%lf", &cost);
        if (cost == -1.0) break;
        
        sum += cost;
        if (cost > max) max = cost;
        if (cost < min) min = cost;
    }

    printf("今日累计消费总额:%.1f\n", sum);
    printf("今日最高一笔开销:%.1f\n", max);
    printf("今日最低一笔开销:%.1f\n", min);

    return 0;
}
##运行结果

任务4

任务5

代码

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

int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);

    if (a + b > c && a + c > b && b + c > a) {
        if (a == b && b == c) {
            printf("等边三角形\n");
        } else if (a == b || a == c || 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 {
            printf("普通三角形\n");
        }
    } else {
        printf("不能构成三角形\n");
    }
    return 0;
}
##运行结果

任务5

任务6

代码

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

int main() {
    int lucky, guess;
    srand(time(0)); 
    lucky = rand() % 30 + 1; 

    printf("猜猜2026年11月哪一天是你的lucky day\n");
    printf("开始喽,你有3次机会,猜吧(1~30):");

    for (int i = 1; i <= 3; i++) {
        scanf("%d", &guess);

        if (guess == lucky) {
            printf("哇,猜中了:)\n");
            break; 
        } else if (guess < lucky) {
            printf("你猜的日期早了,你的lucky day还没到呢\n");
        } else {
            printf("你猜的日期晚了,你的lucky day在前面哦\n");
        }

        if (i < 3) {
            printf("再猜(1~30):");
        } else {
            printf("次数用光啦。11月你的lucky day是%d号\n", lucky);
        }
    }
    return 0;
}
##运行结果

任务6

任务6

posted @ 2026-11-04 06:30  LU_FERNANDEZ  阅读(2)  评论(0)    收藏  举报