计算器加强版

#include <stdio.h>

// 函数声明
int get_option();
void print_result(int num1, int num2, int result, int option);
int get_number(const char *prompt);

int main(void) {
    int done = 0;
    int option, num1, num2, result;

    while (!done) {
        option = get_option();
        if (option == 5) {
            done = 1;
            printf("\n感谢使用,程序已退出。\n");
        } else {
            do {
                num1 = get_number("请输入第一个数:");
                num2 = get_number("请输入第二个数:");

                if (option == 4 && num2 == 0) {
                    printf("\n对不起,除数不能为零,请重新输入。\n");
                } else {
                    switch (option) {
                        case 1:
                            result = num1 + num2;
                            break;
                        case 2:
                            result = num1 - num2;
                            break;
                        case 3:
                            result = num1 * num2;
                            break;
                        case 4:
                            result = num1 / num2;
                            break;
                    }
                    print_result(num1, num2, result, option);
                }
            } while (option == 4 && num2 == 0);
        }
    }




//初始化变量 done 为 0,用于控制循环是否结束。option 用于存储用户选择的操作,num1 和 num2 用于存储用户输入的两个操作数,result 用于存储计算结果。
//进入 while 循环,只要 done 为 0 就会一直循环。因为程序中是!done
//调用 get_option 函数获取用户选择的操作。
//如果用户选择 5,将 done 置为 1,退出循环并输出感谢信息。
//否则,进入 do-while 循环,调用 get_number 函数获取两个操作数。
//如果用户选择除法且除数为 0,输出错误信息并重新输入。
//根据用户选择的操作进行相应的计算,并调用 print_result 函数输出计算结果。


    return 0;
}

// 获取用户选择的选项
int get_option() {
    int option;
    do {
        printf("\n ****************");
        printf("\n *    1.加法    *");
        printf("\n *    2.减法    *");
        printf("\n *    3.乘法    *");
        printf("\n *    4.除法    *");
        printf("\n *    5.退出    *");
        printf("\n ****************");

        printf("\n请输入您需要的功能:");
        scanf("%d", &option);

        if (option < 1 || option > 5) {
            printf("对不起,您输入的数字有误,请重新输入。\n");
        }
    } while (option < 1 || option > 5);

    return option;

//功能:显示操作菜单,获取用户选择的操作,并确保用户输入的是有效的选项(1 - 5)。

//详细步骤
//定义变量 option 用于存储用户输入的选项。定义的变量不放在循环中
//使用 do-while 循环,不断显示操作菜单并获取用户输入。
//如果用户输入的选项不在 1 - 5 范围内,输出错误信息并要求用户重新输入。
//当用户输入有效的选项时,返回该选项。

}

// 打印计算结果
void print_result(int num1, int num2, int result, int option) {
    char operator;
    switch (option) {
        case 1:
            operator = '+';
            break;
        case 2:
            operator = '-';
            break;
        case 3:
            operator = '*';
            break;
        case 4:
            operator = '/';
            break;
    }
    printf("\n** %d %c %d = %d **\n", num1, operator, num2, result);

//功能:根据用户选择的操作,将对应的运算符存储在 operator 变量中,并输出计算结果。



//定义字符变量 operator 用于存储运算符。
//使用 switch 语句根据用户选择的操作,将对应的运算符赋值给 operator。
//使用 printf 函数输出计算结果,格式为 ** num1 operator num2 = result **。
}

// 获取有效的数字输入
int get_number(const char *prompt) {
    int number;
    while (1) {
        printf("%s", prompt);//注意这里的形参只是为了打印传过来的字符串
        if (scanf("%d", &number) == 1) {
            break;
        } else {
            printf("输入有误,请重新输入!\n");
            while (getchar() != '\n'); // 清除输入缓冲区
        }
    }
    return number;
}
//定义变量 number 用于存储用户输入的数字。
//使用 while (1) 无限循环,不断提示用户输入数字。
//使用 scanf 函数读取用户输入的数字,如果读取成功(返回值为 1),则跳出循环。
//如果读取失败,输出错误信息并使用 while (getchar() != '\n') 清除输入缓冲区,防止错误输入影响后续读取。
//最后返回用户输入的有效数字。




获取用户的选择也可以这样写!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值