当前位置:首页 > 技术 > 正文内容

C语言编程实例解析

访客 技术 2026年6月26日 1

随机学号生成

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

#define NUM_COUNT 5

int main() {
    srand((unsigned)time(NULL));
    for(int idx = 0; idx < NUM_COUNT; idx++) {
        int random_val = rand() % 100 + 1;
        printf("20490042%04d\n", random_val);
    }
    return 0;
}

该程序生成5个格式为"20490042XXXX"的学号,其中XXXX是1-100的随机数。srand(time(NULL))确保每次运行产生不同序列。

自动售货机模拟

#include <stdio.h>

int main() {
    int selection, qty;
    float payment, balance, current_total = 0;
    
    while(1) {
        printf("\n饮料菜单:\n");
        printf("1.可乐(3元)\n2.雪碧(3元)\n");
        printf("3.橙汁(5元)\n4.矿泉水(2元)\n0.退出\n");
        printf("请选择:");
        scanf("%d", &selection);
        
        if(selection == 0) break;
        if(selection < 1 || selection > 4) {
            printf("无效选择\n");
            continue;
        }
        
        printf("输入数量:");
        scanf("%d", &qty);
        if(qty < 0) {
            printf("数量无效\n");
            continue;
        }
        
        switch(selection) {
            case 1: case 2: current_total += 3 * qty; break;
            case 3: current_total += 5 * qty; break;
            case 4: current_total += 2 * qty; break;
        }
        
        printf("付款金额:");
        scanf("%f", &payment);
        balance = payment - current_total;
        printf("总价:%.2f\n找零:%.2f\n", current_total, balance);
        current_total = 0;
    }
    printf("感谢使用\n");
    return 0;
}

current_total=0重置交易金额,避免多次购买金额累计。continue语句在无效输入时跳过当前循环剩余部分。

交通信号模拟

#include <stdio.h>

int main() {
    char signal;
    while(scanf("%c", &signal) != EOF) {
        if(signal == '\n') continue;
        switch(signal) {
            case 'r': printf("停止!\n"); break;
            case 'g': printf("通行\n"); break;
            case 'y': printf("等待\n"); break;
            default: printf("输入错误\n");
        }
    }
    return 0;
}

消费统计程序

#include <stdio.h>

int main() {
    float expense, total = 0, max_exp, min_exp;
    printf("输入消费金额(-1结束):");
    scanf("%f", &expense);
    max_exp = min_exp = expense;
    
    while(expense != -1) {
        if(expense > 0 && expense < 20000) {
            total += expense;
            if(expense > max_exp) max_exp = expense;
            if(expense < min_exp) min_exp = expense;
        }
        scanf("%f", &expense);
    }
    printf("总消费:%.1f\n最高:%.1f\n最低:%.1f\n", total, max_exp, min_exp);
    return 0;
}

三角形类型判断

#include <stdio.h>

int main() {
    int side1, side2, side3;
    while(scanf("%d%d%d", &side1, &side2, &side3) == 3) {
        if(side1+side2>side3 && side1+side3>side2 && side2+side3>side1) {
            if(side1 == side2 && side2 == side3)
                printf("等边三角形\n");
            else if(side1==side2 || side1==side3 || side2==side3)
                printf("等腰三角形\n");
            else if(side1*side1+side2*side2==side3*side3 || 
                    side2*side2+side3*side3==side1*expense ||
                    side1*side1+side3*side3==side2*side2)
                printf("直角三角形\n");
            else
                printf("普通三角形\n");
        } else {
            printf("非三角形\n");
        }
    }
    return 0;
}

幸运日猜测游戏

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

int main() {
    int lucky_date, guess, attempts = 3;
    srand(time(0));
    lucky_date = rand() % 30 + 1;
    
    printf("猜2026年4月的幸运日(1-30):");
    while(attempts--) {
        scanf("%d", &guess);
        if(guess == lucky_date) {
            printf("猜中!\n");
            return 0;
        } 
        printf(guess > lucky_date ? "日期偏晚\n" : "日期偏早\n");
        if(attempts > 0) printf("再猜:");
    }
    printf("幸运日是%d号\n", lucky_date);
    return 0;
}

输入流处理说明

交通信号模拟中if(signal == '\n') continue;用于跳过回车符,防止将换行符作为有效输入处理。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。