0602修复bug

Viewed 58
#include <stdio.h>

int main() {
    int choice;
    double a, b, res;

    while (1) {  // 循环菜单,直到选0退出
        // 显示菜单
        printf("\n===== 计算器菜单 =====\n");
        printf("1. 加法\n");
        printf("2. 减法\n");
        printf("3. 乘法\n");
        printf("4. 除法\n");
        printf("0. 退出\n");
        printf("======================\n");
        printf("请输入你的选择:");
        scanf("%d", &choice);

        if (choice == 0) {
            printf("程序已退出!\n");
            break;
        }

        // 输入两个运算数
        printf("请输入两个数字:");
        scanf("%lf %lf", &a, &b);

        // switch 实现计算
        switch (choice) {
            case 1:
                res = a + b;
                printf("%.2lf + %.2lf = %.2lf\n", a, b, res);
                break;
            case 2:
                res = a - b;
                printf("%.2lf - %.2lf = %.2lf\n", a, b, res);
                break;
            case 3:
                res = a * b;
                printf("%.2lf * %.2lf = %.2lf\n", a, b, res);
                break;
            case 4:
                if (b == 0) {
                    printf("错误:除数不能为0!\n");
                } else {
                    res = a / b;
                    printf("%.2lf / %.2lf = %.2lf\n", a, b, res);
                }
                break;
            default:
                printf("输入错误,请重新选择!\n");
        }
    }
    return 0;
}

image.png
请修复bug,当输入其他数字时提示暂时无此项功能

9 Answers

修复bug

#include <stdio.h>

int main() {
    int choice;
    double a, b, res;

    while (1) {  // 循环菜单,直到选0退出
        // 显示菜单
        printf("\n===== 计算器菜单 =====\n");
        printf("1. 加法\n");
        printf("2. 减法\n");
        printf("3. 乘法\n");
        printf("4. 除法\n");
        printf("0. 退出\n");
        printf("======================\n");
        printf("请输入你的选择:");
        scanf("%d", &choice);

        if (choice == 0) {
            printf("程序已退出!\n");
            break;
        }
		
		if (choice <= 4 && choice >= 0){
        // 输入两个运算数
        printf("请输入两个数字:");
        scanf("%lf %lf", &a, &b);
		}

        // switch 实现计算
        switch (choice) {
            case 1:
                res = a + b;
                printf("%.2lf + %.2lf = %.2lf\n", a, b, res);
                break;
            case 2:
                res = a - b;
                printf("%.2lf - %.2lf = %.2lf\n", a, b, res);
                break;
            case 3:
                res = a * b;
                printf("%.2lf * %.2lf = %.2lf\n", a, b, res);
                break;
            case 4:
                if (b == 0) {
                    printf("错误:除数不能为0!\n");
                } else {
                    res = a / b;
                    printf("%.2lf / %.2lf = %.2lf\n", a, b, res);
                }
                break;
            default:
                printf("输入错误,请重新选择!\n");
        }
    }
    return 0;
}
#include <stdio.h>

int main() {
    int choice;
    double a, b, res;

    while (1) {  // 循环菜单,直到选0退出
        // 显示菜单
        printf("\n===== 计算器菜单 =====\n");
        printf("1. 加法\n");
        printf("2. 减法\n");
        printf("3. 乘法\n");
        printf("4. 除法\n");
        printf("0. 退出\n");
        printf("======================\n");
        printf("请输入你的选择:");
        scanf("%d", &choice);

        if (choice == 0) {
            printf("程序已退出!\n");
            break;
        }
        // 不在1~4范围,提示无此项功能,跳过输入数字
        if (choice < 1 || choice > 4) {
            printf("暂时无此项功能\n");
            continue; // 直接回到菜单循环开头
        }

        // 只有1~4才需要输入两个运算数
        printf("请输入两个数字:");
        scanf("%lf %lf", &a, &b);

        // switch 实现计算
        switch (choice) {
            case 1:
                res = a + b;
                printf("%.2lf + %.2lf = %.2lf\n", a, b, res);
                break;
            case 2:
                res = a - b;
                printf("%.2lf - %.2lf = %.2lf\n", a, b, res);
                break;
            case 3:
                res = a * b;
                printf("%.2lf * %.2lf = %.2lf\n", a, b, res);
                break;
            case 4:
                if (b == 0) {
                    printf("错误:除数不能为0!\n");
                } else {
                    res = a / b;
                    printf("%.2lf / %.2lf = %.2lf\n", a, b, res);
                }
                break;
        }
    }
    return 0;
}
#include <stdio.h>

int main() {
    int choice;
    double a, b, res;

    while (1) {  // 循环菜单,直到选0退出
        // 显示菜单
        printf("\n===== 计算器菜单 =====\n");
        printf("1. 加法\n");
        printf("2. 减法\n");
        printf("3. 乘法\n");
        printf("4. 除法\n");
        printf("0. 退出\n");
        printf("======================\n");
        printf("请输入你的选择:");
        scanf("%d", &choice);

        if (choice == 0) {
            printf("程序已退出!\n");
            break;
        }

        // ✅ 修复:只有 1-4 才需要输入数字,其他直接提示
        if (choice < 1 || choice > 4) {
            printf("暂时无此项功能\n");
            continue;  // 直接回到菜单,不执行后面代码
        }

        // 输入两个运算数
        printf("请输入两个数字:");
        scanf("%lf %lf", &a, &b);

        // switch 实现计算
        switch (choice) {
            case 1:
                res = a + b;
                printf("%.2lf + %.2lf = %.2lf\n", a, b, res);
                break;
            case 2:
                res = a - b;
                printf("%.2lf - %.2lf = %.2lf\n", a, b, res);
                break;
            case 3:
                res = a * b;
                printf("%.2lf * %.2lf = %.2lf\n", a, b, res);
                break;
            case 4:
                if (b == 0) {
                    printf("错误:除数不能为0!\n");
                } else {
                    res = a / b;
                    printf("%.2lf / %.2lf = %.2lf\n", a, b, res);
                }
                break;
        }
    }
    return 0;
}
#include <stdio.h>

int main() {
    int choice;
    double a, b, res;

    while (1) {  // 循环菜单,直到选0退出
        // 显示菜单
        printf("\n===== 计算器菜单 =====\n");
        printf("1. 加法\n");
        printf("2. 减法\n");
        printf("3. 乘法\n");
        printf("4. 除法\n");
        printf("0. 退出\n");
        printf("======================\n");
        printf("请输入你的选择:");
        scanf("%d", &choice);

        if (choice == 0) {
            printf("程序已退出!\n");
            break;
        }

        // ✅ 修复:只有 1-4 才需要输入数字,其他直接提示
        if (choice < 1 || choice > 4) {
            printf("暂时无此项功能\n");
            continue;  // 直接回到菜单,不执行后面代码
        }

        // 输入两个运算数
        printf("请输入两个数字:");
        scanf("%lf %lf", &a, &b);

        // switch 实现计算
        switch (choice) {
            case 1:
                res = a + b;
                printf("%.2lf + %.2lf = %.2lf\n", a, b, res);
                break;
            case 2:
                res = a - b;
                printf("%.2lf - %.2lf = %.2lf\n", a, b, res);
                break;
            case 3:
                res = a * b;
                printf("%.2lf * %.2lf = %.2lf\n", a, b, res);
                break;
            case 4:
                if (b == 0) {
                    printf("错误:除数不能为0!\n");
                } else {
                    res = a / b;
                    printf("%.2lf / %.2lf = %.2lf\n", a, b, res);
                }
                break;
        defauit;
            printf("输入无效\n");
    }
    return 0;
}

改正后代码如下哦

/*
作者:雍尚杰(小鸟)
*/

#include <stdio.h>

int main() {
    int choice;
    double a, b, res;

    while (1) {  // 循环菜单,直到选0退出
        // 显示菜单
        printf("\n===== 计算器菜单 =====\n");
        printf("1. 加法\n");
        printf("2. 减法\n");
        printf("3. 乘法\n");
        printf("4. 除法\n");
        printf("0. 退出\n");
        printf("======================\n");
        printf("请输入你的选择:");
        scanf("%d", &choice);

        if (choice == 0) {
            printf("程序已退出!\n");
            break;
        }
		
		if (choice >= 0 && choice <= 4){
        // 输入两个运算数
        printf("请输入两个数字:");
        scanf("%lf %lf", &a, &b);
		}

        // switch 实现计算
        switch (choice) {
            case 1:
                res = a + b;
                printf("%.2lf + %.2lf = %.2lf\n", a, b, res);
                break;
            case 2:
                res = a - b;
                printf("%.2lf - %.2lf = %.2lf\n", a, b, res);
                break;
            case 3:
                res = a * b;
                printf("%.2lf * %.2lf = %.2lf\n", a, b, res);
                break;
            case 4:
                if (b == 0) {
                    printf("错误:除数不能为0!\n");
                } else {
                    res = a / b;
                    printf("%.2lf / %.2lf = %.2lf\n", a, b, res);
                }
                break;
            default:
                printf("输入错误木有这个功能哦,请重新选择!\n");
        }
    }
    return 0;
}

#include <stdio.h>

int main() {
int choice;
double a, b, res;

while (1) {
    printf("\n===== 计算器菜单 =====\n");
    printf("1. 加法\n");
    printf("2. 减法\n");
    printf("3. 乘法\n");
    printf("4. 除法\n");
    printf("0. 退出\n");
    printf("======================\n");
    printf("请输入你的选择:");
    scanf("%d", &choice);

    if (choice == 0) {
        printf("程序已退出!\n");
        break;
    }

    // ✅ 修复点:只有 1-4 才输入数字,其他直接提示错误
    if (choice < 1 || choice > 4) {
        printf("暂时无此项功能!\n");
        continue; // 直接回到菜单,不执行后面代码
    }

    printf("请输入两个数字:");
    scanf("%lf %lf", &a, &b);

    switch (choice) {
        case 1:
            res = a + b;
            printf("%.2lf + %.2lf = %.2lf\n", a, b, res);
            break;
        case 2:
            res = a - b;
            printf("%.2lf - %.2lf = %.2lf\n", a, b, res);
            break;
        case 3:
            res = a * b;
            printf("%.2lf * %.2lf = %.2lf\n", a, b, res);
            break;
        case 4:
            if (b == 0) {
                printf("错误:除数不能为0!\n");
            } else {
                res = a / b;
                printf("%.2lf / %.2lf = %.2lf\n", a, b, res);
            }
            break;
    }
}
return 0;

}

===== 计算器菜单 =====

  1. 加法
  2. 减法
  3. 乘法
  4. 除法
  5. 退出
    ======================
    请输入你的选择:9
    暂时无此项功能!

#include <stdio.h>

int main() {
int choice;
double a, b, res;

while (1) {  // 循环菜单,直到选0退出
    // 显示菜单
    printf("\n===== 计算器菜单 =====\n");
    printf("1. 加法\n");
    printf("2. 减法\n");
    printf("3. 乘法\n");
    printf("4. 除法\n");
    printf("0. 退出\n");
    printf("======================\n");
    printf("请输入你的选择:");
    scanf("%d", &choice);

    if (choice == 0) {
        printf("程序已退出!\n");
        break;
    }
	
	if (choice >= 0 && choice <= 4){
    // 输入两个运算数
    printf("请输入两个数字:");
    scanf("%lf %lf", &a, &b);
	}

    // switch 实现计算
    switch (choice) {
        case 1:
            res = a + b;
            printf("%.2lf + %.2lf = %.2lf\n", a, b, res);
            break;
        case 2:
            res = a - b;
            printf("%.2lf - %.2lf = %.2lf\n", a, b, res);
            break;
        case 3:
            res = a * b;
            printf("%.2lf * %.2lf = %.2lf\n", a, b, res);
            break;
        case 4:
            if (b == 0) {
                printf("错误:除数不能为0!\n");
            } else {
                res = a / b;
                printf("%.2lf / %.2lf = %.2lf\n", a, b, res);
            }
            break;
        default:
            printf("输入错误木有这个功能哦,请重新选择!\n");
    }
}
return 0;

}

#include <stdio.h>

int main() {
int choice;
double a, b, res;

while (1) {  // 循环菜单,直到选0退出
    // 显示菜单
    printf("\n===== 计算器菜单 =====\n");
    printf("1. 加法\n");
    printf("2. 减法\n");
    printf("3. 乘法\n");
    printf("4. 除法\n");
    printf("0. 退出\n");
    printf("======================\n");
    printf("请输入你的选择:");
    scanf("%d", &choice);

    if (choice == 0) {
        printf("程序已退出!\n");
        break;
    }
	
	if (choice >= 0 && choice <= 4){
    // 输入两个运算数
    printf("请输入两个数字:");
    scanf("%lf %lf", &a, &b);
	}

    // switch 实现计算
    switch (choice) {
        case 1:
            res = a + b;
            printf("%.2lf + %.2lf = %.2lf\n", a, b, res);
            break;
        case 2:
            res = a - b;
            printf("%.2lf - %.2lf = %.2lf\n", a, b, res);
            break;
        case 3:
            res = a * b;
            printf("%.2lf * %.2lf = %.2lf\n", a, b, res);
            break;
        case 4:
            if (b == 0) {
                printf("错误:除数不能为0!\n");
            } else {
                res = a / b;
                printf("%.2lf / %.2lf = %.2lf\n", a, b, res);
            }
            break;
        default:
            printf("输入错误木有这个功能哦,请重新选择!\n");
    }
}
return 0;

}

#include <stdio.h>
#include <math.h> // fabs需要

int main() {
int choice;
double a, b, res;

while (1) {
    printf("\n===== 计算器菜单 =====\n");
    printf("1. 加法\n");
    printf("2. 减法\n");
    printf("3. 乘法\n");
    printf("4. 除法\n");
    printf("0. 退出\n");
    printf("======================\n");
    printf("请输入你的选择:");
    
    // 处理非数字输入,清空缓冲区防死循环
    if(scanf("%d", &choice) != 1){
        // 清空缓冲区所有残留字符
        while(getchar() != '\n');
        printf("输入不是有效数字,请重新输入!\n");
        continue;
    }

    if (choice == 0) {
        printf("程序已退出!\n");
        break;
    }

    switch (choice) {
        case 1:
        case 2:
        case 3:
        case 4:
            // 只有合法运算才输入数字
            printf("请输入两个数字:");
            scanf("%lf %lf", &a, &b);
            if(choice == 1){
                res = a + b;
                printf("%.2lf + %.2lf = %.2lf\n", a, b, res);
            }else if(choice == 2){
                res = a - b;
                printf("%.2lf - %.2lf = %.2lf\n", a, b, res);
            }else if(choice == 3){
                res = a * b;
                printf("%.2lf * %.2lf = %.2lf\n", a, b, res);
            }else if(choice == 4){
                // 浮点数安全判0
                if (fabs(b) < 1e-8) {
                    printf("错误:除数不能为0!\n");
                } else {
                    res = a / b;
                    printf("%.2lf / %.2lf = %.2lf\n", a, b, res);
                }
            }
            break;
        default:
            printf("输入错误,请重新选择!\n");
            break;
    }
}
return 0;

}