成为C++高手之最终版计算器

来源:互联网 发布:免费手机屏幕录制软件 编辑:程序博客网 时间:2024/05/22 12:11

下面做我们的计算器最终版。

当前还存在的问题是用户只能算一次。如果有人买一个一次性计算器,那么他肯定是个土豪。我们的计算器不能只给土豪用,所以要改成可以反复使用的。

使用循环语句就可以了,但是循环哪些代码呢?从用户输入到打印出结果这个过程要反复执行,代码如是:

enum OPT{    jia = 1,    jian,    cheng,    chu};int main(void){    //保存用户输入的数    int number1;    int number2;    int opt;//运算符   //循环从输入到输出结果的过程    while(1){        //提示用户输入第一个数,需循环直到用户输入正确的数:        int r;        while(1){            printf("请输入第一个数:\n");            r = scanf("%d",&number1);            //查看Scanf是否收到了正确的数            if(r==0){                printf("别调皮,这样不好玩,重来\n");                //清空输入流。如果没有这一句,输入流中残存的字符将导致scanf不等待用户输入。                int c;                while ( (c = getchar()) != '\n' && c != EOF ) ;            }else{                //输对了,跳出循环                break;            }        }        //提示用户输入第二个数        while(1){            printf("请输入第二个数:\n");            r = scanf("%d",&number2);            //查看Scanf是否收到了正确的数            if(r==0){                printf("别调皮,这样不好玩,重来\n");                //清空输入流。如果没有这一句,输入流中残存的字符将导致scanf不等待用户输入。                int c;                while ( (c = getchar()) != '\n' && c != EOF ) ;            }else{                //输对了,跳出循环                break;            }        }        int result;//存放计算结果        //提示用户输入运算符        while(1){            printf("请输入运算符(%d%d%d%d分别对应加减乘除):\n",jia,jian,cheng,chu);            r = scanf("%d",&opt);            if(r==0){                printf("运算符也是数字,别搞错好吗?你这样让我怎么混? 重新输入吧\n");                //清空输入流。如果没有这一句,输入流中残存的字符将导致scanf不等待用户输入。                int c;                while ( (c = getchar()) != '\n' && c != EOF ) ;                //回到循环开始                continue;            }            //跟据运算符进行不同的运算            switch(opt){            case jia:                //加                result = number1+number2;                break;            case jian:                //减                result = number1-number2;                break;            case cheng:                //乘                result = number1*number2;                break;            case chu:                //除,现在只能整除                result = number1/number2;                break;            default:                printf("运算符必须是1,2,3,4之一才行!重来\n");                continue; //回到循环开始,重新来一遍            }            //当执行到这里时,说明运算符检查成功,应跳出while。            break;        }        //输出结果        printf("result : %d\n",number1,number2,result);    }    return 0;}

能完成这个程序,就掌握了最基本的入门知识。总结起来,应掌握以下概念:函数,变量,头文件,入口函数,参数,返回,while循环,if判断,switch case,宏,枚举,结构,声明,定义。

要想下一步顺利学习,需要将基本语法搞熟练,尤其是能快速区分定义与声明,调用函数与访问变量。要点如下:

  • 函数定义语法四要素:返回值类型、函数名、参数、函数体,如 int add(int a,int b){ return a+b;}
  • 函数调用语法两要素:函数名、参数,再加一个可选的:返回值。如 int r = add(2,4);
  • 函数调用不能写在函数外面。
  • 变量定义语法两要素:类型、变量名、再加一个可选的:初始值。如:int r;
  • 函数声明与定义的区别是有无大括号。
  • 区分是调用函数还是使用变量的关键:有无小括号。如:int a=abc; abc肯定是一个变量;int a=abc(); abc肯定是一个函数。
  • 变量声明与定义的区别是有无extern,有extern时就是声明,声明时不能初始化。比如:extern int a; 就是声明,而int a; 就是定义。

上一篇:成为C++高手之while循环
下一篇:成为C++高手之指针与数组

4 0
原创粉丝点击