代码实验室

Talk is cheap. Show me the code.

C语言作业

BMI计算器

根据身高和体重计算BMI指数,并判断健康状态

C语言条件判断

回文判断

判断输入的字符串是否为回文字符串

C语言字符串函数

三位数反转

将输入的三位数反转输出

C语言数学运算

学生成绩管理系统

简单的成绩管理系统菜单界面

C语言switch-case菜单

数组转置

将3x3矩阵进行转置操作

C语言数组矩阵

斐波那契数列

使用递归方法输出斐波那契数列

C语言递归数列

正负判断

判断输入的数是正数、负数还是零

C语言条件判断

时间转换器

将秒数转换为小时、分钟、秒格式

C语言时间运算

杨辉三角

输出杨辉三角的前10行

C语言二维数组算法

球体体积

根据半径计算球体体积

C语言数学公式

正负数求和

输入10个实数,分别计算正数和负数的和

C语言数组循环

素数判断

判断输入的数字是否为素数

C语言算法函数

期末模拟练习

员工评分系统

根据员工评分(1-5分)执行不同的处理逻辑

C++switch-case

爬楼梯问题

计算从0阶到k阶的不同走法(一次可走1阶或3阶)

C++动态规划算法

物品插入系统

在指定位置插入物品,并保持顺序

C++数组插入

体积计算器

计算长方体、立方体、圆柱体的体积(使用自定义函数)

C++函数数学

密码验证

验证密码是否符合规范(长度、字符组成、两次输入一致)

C++字符串验证

前端项目

查寝助手 Pro

纯本地离线查寝工具,支持Excel导入、标记异常、生成报告

HTML/JSTailwindSheetJS

BMI计算器

根据身高和体重计算BMI指数,并判断健康状态

#include <stdio.h>
#include <math.h>

int main(int argc, char *argv[]) {
    float kg, m, bmi;
    printf("请输入体重与身高,单位是千克和米\n");
    scanf("%f%f", &kg, &m);
    bmi = kg / (m * m);
    if (bmi >= 28.0)
    {
        printf("您的bmi是%.2f,处于肥胖,请尽快控制体重\n",bmi);
    }
    else if (bmi >= 24.0 && bmi <=27.9)
    {
        printf("您的bmi是%.2f,处于超重,请控制体重\n",bmi);
    }
    else if (bmi >= 18.5 && bmi <= 23.9)
    {
        printf("您的bmi是%.2f,您体重正常,请继续保持\n",bmi);
    }
    else if (bmi <= 18.4)
    {
        printf("您的bmi是%.2f,您体重偏低,请注意\n",bmi);
    }
    else
    {
        printf("请重试\n");
    }
    return 0;
}

回文判断

判断输入的字符串是否为回文字符串(正读反读相同)

#include <stdio.h>
#include <string.h>

void f1(char *p, int n) {
    int i = 0;
    char ch;
    printf("请输入一个字符串,不超过%d个字符\n", n - 1);
    while (i < n - 1) {
        scanf("%c", &ch);
        if (ch == '\n') {
            break;
        }
        p[i] = ch;
        i++;
    }
    p[i] = '\0';
}

int f2(char *p) {
    int i, j;
    int n = strlen(p);
    for (i = 0, j = n - 1; i < n; i ++, j --) {
        if (p[i] != p[j]) {
            return 0;
        }
    }
    return 1;
}

int main(int argc, char *argv[]) {
    char a[20];
    char *p;
    p = a;
    f1(p, 20);
    if(f2(a)) {
        printf("该字符串是回文\n");
    } else {
        printf("该字符串不是回文\n");
    }
    return 0;
}

三位数反转

将输入的三位数反转输出(例如123变成321)

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

int main(int argc, char *argv[]) {
    int a, b, c, d, num, y;
    printf("请输入一个三位数\n");
    scanf("%d",&num);
    if((num < 100) || (num > 1000))
    {
        printf("请检查输入是否为三位数\n");
    }
    else
    {
        a = num / 100;
        b = num % 100;
        c = b / 10;
        d = b % 10;
        y = 100 * d + 10 * c + a;
        printf("%d\n",y);
    }
    return 0;
}

学生成绩管理系统

简单的成绩管理系统菜单界面(框架)

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

int main(int argc, char *argv[]) {
    printf("-----学生成绩管理系统-----\n");
    printf("--------1.添加成绩--------\n");
    printf("--------2.查询记录--------\n");
    printf("--------3.删除成绩--------\n");
    printf("--------4.成绩排序--------\n");
    printf("--------5.退出系统--------\n");
    printf("请输入数字序号\n");
    int x;
    scanf("%d",&x);
    switch(x)
    {
        case 1:printf("1.添加成绩\n");break;
        case 2:printf("2.查询记录\n");break;
        case 3:printf("3.删除成绩\n");break;
        case 4:printf("4.成绩排序\n");break;
        case 5:printf("5.退出系统\n");break;
        default :printf("Error\n");
    }
    return 0;
}

数组转置

将3x3矩阵进行转置操作(行变列,列变行)

#include <stdio.h>
#include <stdlib.h>
int transpose(int a [3][3]) {
    int i, j;
    int b[3][3];
    for(i = 0; i < 3; i++) {
        for(j = 0; j < 3; j++) {
            b[j][i] = a[i][j];
        }
    }
    printf("转置后的矩阵为:\n");
    for(i = 0; i < 3; i++) {
        for(j = 0; j < 3; j++) {
            printf("%d  ", b[i][j]);
        }
        printf("\n");
    }
    return 0;
}
int main(int argc, char *argv[]) {
    int a[3][3];
    int i, j;
    for(i = 0; i < 3; i ++) {
        for(j = 0; j < 3; j ++) {
            scanf("%d", &a[i][j]);
        }
    }
    printf("输入的矩阵为:\n");
    for(i = 0; i < 3; i ++) {
        for(j = 0; j < 3; j ++) {
            printf("%d  ", a[i][j]);
        }
        printf("\n");
    }
    transpose(a);
    printf("\n");
    return 0;
}

斐波那契数列

使用递归方法输出斐波那契数列(1, 1, 2, 3, 5, 8, ...)

#include <stdio.h>

int f(int n) {
    if(n == 1 || n == 2) {
        return 1;
    } else {
        return f(n - 1) + f(n - 2);
    }
}
int main() {
    int n;
    int i;
    scanf("%d", &n);
    for(i = 1; i <= n; i ++) {
        printf("%d ", f(i));
    }
    printf("\n");
    return 0;
}

正负判断

判断输入的数是正数、负数还是零

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

int main(int argc, char *argv[]) {
    int x;
    printf("请输入一个数字\n");
    scanf("%d",&x);
    if (x > 0)
    {
        printf("这是一个正数\n");
    }
    else if (x < 0)
    {
        printf("这是一个负数\n");
    }
    else
    {
        printf("这是0\n");
    }
    return 0;
}

时间转换器

将秒数转换为小时、分钟、秒格式

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

int main(int argc, char *argv[]) {

    int x ,sa ,s ,m ,h ;
    printf("请输入时间(单位为秒)\n");
    scanf("%d",&x);
    h = x / 3600;
    sa = x % 3600;
    m = sa / 60;
    s = sa % 60;
    printf("%d时%d分%d秒\n",h,m,s);

    return 0;
}

杨辉三角

输出杨辉三角的前10行

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
    int a[10][10];
    int i, j;
    for(i = 0; i < 10; i++) {
        for(j = 0; j <= i; j++) {
            if(j == 0 || j == i) {
                a[i][j] = 1;
            } else {
                a[i][j] = a[i-1][j-1] + a[i-1][j];
            }
        }
    }
    printf("杨辉三角是:\n");
    for(i = 0; i < 10; i++) {
        for(j = 0; j <= i; j++) {
            printf("%6d", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

球体体积

根据半径计算球体体积(公式:V = 4/3 * π * r³)

#include <stdio.h>
#include <stdlib.h>
#define PI 3.1415926535

int main(int argc, char *argv[]) {

    printf("请输入半径\n");
    float Vball, Rball;
    scanf("%f",&Rball);
    Vball=(4.0 / 3.0) * PI * Rball * Rball * Rball;
    printf("Vball = %.2f\n",Vball);

    return 0;
}

正负数求和

输入10个实数,分别计算正数和负数的和

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
    float a[10];
    int i;
    printf("请输入10个实数,每空格一个\n");
    for(i = 0; i < 10; i ++) {
        scanf("%f",&a[i]);
    }
    float b[10], c[10];
    int j = 0, k = 0;
    for(i = 0; i < 10; i ++) {
        if(a[i] >= 0){
            b[j] = a[i];
            j ++;
        } else {
            c[k] = a[i];
            k ++;
        }
    }
    float sum1 = 0.0, sum2 = 0.0;
    for(i = 0; i < j; i ++) {
        sum1 += b[i];
    }
    for(i = 0; i < k; i ++) {
        sum2 += c[i];
    }
    printf("正数和为:%.4f,负数和为:%.4f\n", sum1, sum2);
    return 0;
}

素数判断

判断输入的数字是否为素数

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

int yesorno(int num) {
    if (num < 2) {
        return 0;
    }
    if (num == 2) {
        return 1;
    }
    if (num % 2 == 0) {
        return 0;
    }
    int i;
    for (i = 3; i * i <= num; i += 2) {
        if (num % i == 0) {
            return 0;
        }
    }
    return 1;
}

int main(int argc, char *argv[]) {
    int num;
    printf("请输入一个整数: ");
    scanf("%d", &num);
    if (yesorno(num)) {
        printf("%d 是素数\n", num);
    } else {
        printf("%d 不是素数\n", num);
    }
    printf("\n");
    return 0;
}

员工评分系统

根据员工评分(1-5分)执行不同的处理逻辑,并赠送优惠券

#include <stdio.h>

int main() {
    int reason;
    printf("对客服的评分(1-5分的整数):\n");
    int n;
    scanf("%d", &n);
    switch(n) {
        case 1:{
            printf("系统检测到有严重投诉。");
            break;
        }
        case 2:{
            printf("系统检测到有严重投诉。");
            break;
        }
        case 3:{
            printf("非常抱歉,请原谅我们。");
            break;
        }
        case 4:{
            printf("谢谢的好评,欢迎下次惠顾!\n");
            printf("系统为您赠送了一张 3元 优惠券,请查收。");
            break;
        }
        case 5:{
            printf("谢谢的好评,欢迎下次惠顾!\n");
            printf("系统为您赠送了一张 8元 优惠券,请查收。");
            break;
        }
    }
    return 0;
}

爬楼梯问题

计算从0阶到k阶的不同走法(一次可走1阶或3阶)
已修正错误:原代码只考虑3阶情况,现修正为正确算法

#include <stdio.h>

int main(int argc, char** argv) {
    int k;
    scanf("%d", &k);

    // 动态规划数组,dp[i]表示爬到第i阶的走法数
    int dp[21] = {0};

    // 初始条件
    dp[0] = 1;  // 在第0阶有一种走法(不走)
    dp[1] = 1;  // 从0阶走1阶到第1阶

    // 计算从2到k阶的走法数
    for(int i = 2; i <= k; i++) {
        dp[i] = dp[i - 1];  // 从第i-1阶走1阶
        if(i >= 3) {
            dp[i] += dp[i - 3];  // 从第i-3阶走3阶
        }
    }

    printf("%d", dp[k]);
    return 0;
}

物品插入系统

在指定位置插入物品,并保持顺序

#include <stdio.h>
int main() {
    // 定义存储柜数组(最多30个物品)
    int locker[30] = {0};  // 存储物品编号的数组
    int n;   // 当前物品数量
    int pos, value, i;

    // 获取当前物品数量
    printf("请输入当前储物柜中的物品数量n(0<=m<=30):");
    scanf("%d", &n);
    for(i = 0; i < n; i ++) {
        scanf("%d", &locker[i]);
    }

    scanf("%d%d", &pos, &value);
    if(pos < 0 || pos > n) {
        printf("位置无效,合法位置范围0-%d", n);
    } else {
        // 从后往前移动元素,为新物品腾出空间
        for(i = n; i > pos; i --) {
            locker[i] = locker[i - 1];
        }
        locker[pos] = value;
        for(i = 0; i < n + 1; i ++) {
            printf("%d ", locker[i]);
        }
    }
    return 0;
}

体积计算器

计算长方体、立方体、圆柱体的体积(使用自定义函数)
已修正错误:优化了退出逻辑

#include <stdio.h>
#define PI 3.14159  // 定义圆周率常量

void Cuboid() {
    int a, b, c;
    printf("请输入长方体的长a、宽b、高c(均为整数):");
    scanf("%d%d%d", &a, &b, &c);
    int V = a * b * c;
    printf("体积 = %d\n", V);
}

void Cube() {
    int V = 5 * 5 * 5;
    printf("体积 = %d\n", V);
}

void Cylinder() {
    int r, h;
    printf("请输入圆柱体的底面半径r和高h(均为整数):");
    scanf("%d%d", &r, &h);
    float V = PI * r * r * h;
    printf("体积 = %.5f\n", V);
}

int main() {
    int choice;  // 菜单选择项
    while (1) {
        printf("===== 体积计算器 =====\n");
        printf("1. 计算长方体体积\n");
        printf("2. 计算立方体体积\n");
        printf("3. 计算圆柱体体积\n");
        printf("0. 退出程序\n");
        printf("请输入功能选择(0-3):");
        scanf("%d", &choice);

        switch(choice) {
            case 1 :
                Cuboid();
                break;
            case 2 :
                Cube();
                break;
            case 3 :
                Cylinder();
                break;
            case 0 :
                return 0;
            default :
                printf("无效选择,请重新输入!\n");
                break;
        }
    }
}

密码验证

验证密码是否符合规范(长度、字符组成、两次输入一致)
已修正错误:Same函数已修正长度检查问题

#include <stdio.h>
#include <string.h>

// 验证两次输入的密码是否完全一致
int Same(char *p1, char *p2) {
    // 先检查长度是否相同
    int len1 = 0, len2 = 0;
    char *temp1 = p1, *temp2 = p2;
    while(*temp1 != '\0') { len1++; temp1++; }
    while(*temp2 != '\0') { len2++; temp2++; }

    if(len1 != len2) {
        return 0;
    }

    // 再逐个字符比较
    while(*p1 != '\0' && *p2 != '\0') {
        if(*p1 != *p2) {
            return 0;
        }
        p1++;
        p2++;
    }
    return 1;
}

// 验证密码长度(6-16位)
int check(char *p) {
    int t = 0;
    while(*p != '\0') {
        t++;
        p++;
    }
    if(t >= 6 && t <= 16) {
        return 1;
    } else {
        return 0;
    }
}

// 验证密码组成(数字、大小写字母、下划线)
int CharType(char *p) {
    int valid = 1;
    char *q = p;
    int t = 0;

    // 检查是否只包含合法字符
    while(*p != '\0') {
        if((*p >= '0' && *p <= '9') ||
           (*p >= 'a' && *p <= 'z') ||
           (*p >= 'A' && *p <= 'Z') ||
           (*p == '_')) {
            t = 1;
        } else {
            valid = 0;
            break;
        }
        p++;
    }
    p = q;

    // 检查是否同时包含数字、小写字母、大写字母、下划线
    int a = 0, b = 0, c = 0, d = 0;
    while(*p != '\0') {
        if(*p >= '0' && *p <= '9') {
            a = 1;
        }
        if(*p >= 'a' && *p <= 'z') {
            b = 1;
        }
        if(*p >= 'A' && *p <= 'Z') {
            c = 1;
        }
        if(*p == '_') {
            d = 1;
        }
        p++;
    }

    if(a && b && c && d && valid) {
        return 1;
    } else {
        return 0;
    }
}

int main() {
    char pwd1[21] = {0}, pwd2[21] = {0};
    printf("请输入第一组密码字符串:");
    scanf("%s", pwd1);
    printf("请输入第二组密码字符串:");
    scanf("%s", pwd2);

    if(Same(pwd1, pwd2) * check(pwd1) * CharType(pwd1)) {
        printf("OK");
    } else {
        printf("ERROR");
    }
    return 0;
}

查寝助手 Pro

纯本地离线查寝工具,支持Excel导入、标记异常、生成报告

功能特点:

(点击右上角▶️运行按钮可直接在浏览器沙盒中预览)

加载代码中...
🟢 本地沙盒预览中...