首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个简单程序引出的几个问题`

2012-02-19 
一个简单程序引出的几个小问题````Cprimer4th练习的8.8作个这样的程序有加减乘除功能如果输入的不是数字,

一个简单程序引出的几个小问题````
C   primer   4th   练习的8.8
作个这样的程序
有加减乘除功能
如果输入的不是数字,要有纠错功能
打印出“该输入不是数字”,然后提示重新输入
在除法项目,如果被除数是0,也要提示错误
重新输入```

这是我在别人提示下写出来的
有几个问题
1   buff[0]   !=   '0 ';是什么意思   atof函数识别不了0??

2   怎么判断数组buff的值是不是0.......
我的程序如果碰到00识别不出来
如果判断第一个元素是0...那小数   0.x   又判断不出来

3  
while(getchar()   !=   '\n ')
        continue;

if(ch   ==   '\n ')
        continue;
这两段代码   分别在什么样的情况下需要加??

4   最后问个基础的题目...
为什么   char   a;后
a   =   '\79 ';是合法的
而   a   =   '039 ';就不行呢??
后面的 ' '里   为什么只能装下两个字符,而把‘’去掉就可以  
---------------------------------------
#include <math.h>
#include <stdlib.h>

int   main()
{
        char   ch;
        float   num1,num2;
        char   buff[10],buff1[10];

        printf( "Enter   the   operation   of   your   choice:\n ");
        printf( "a.   add             s.   subtract\n ");
        printf( "m.   multiply           d.   divide\n ");
        printf( "q.   quit\n ");
        while((ch   =   getchar())   !=   'q ')
        {
                while(getchar()   !=   '\n ')     /*   清空输入行   */
                        continue;
                if(ch   ==   '\n ')     /*   不会把回车作为输入   */
                        continue;
                switch(ch)
                {
                        case   'a ':
                        {
                                printf( "Enter   first   number: ");

                                gets(buff);
                                num1   =   atof(buff);
                                while   (num1   ==   0   &&   buff[0]   !=   '0 '   )
                                {
                                        printf( "%s ",buff);
                                        printf( "   is   not   an   number\n ");


                                        printf( "Enter   a   number,such   as   2.5,-1.78E8,or   3: ");
                                        gets(buff);
                                        num1   =   atof(buff);
                                }

                                printf( "Enter   second   number: ");
                                gets(buff1);
                                num2   =   atof(buff1);
                                while   (num2   ==   0   &&   buff1[0]   !=   '0 ')
                                {
                                        printf( "%s ",buff1);
                                        printf( "   is   not   an   number.\n ");
                                        printf( "Enter   a   number,such   as   2.5,-1.78E8,or   3: ");
                                        gets(buff1);
                                        num2   =   atof(buff1);
                                }
                                printf( "%f   +   %f   =   %.2f\n ",num1,num2,num1   +   num2);
                        }
                                break;


                      case   's ':
                      {
                                printf( "Enter   first   number: ");

                                gets(buff);
                                num1   =   atof(buff);


                                while   (num1   ==   0   &&   buff[0]   !=   '0 ')
                                {
                                        printf( "%s ",buff);
                                        printf( "   is   not   an   number\n ");
                                        printf( "Enter   a   number,such   as   2.5,-1.78E8,or   3: ");
                                        gets(buff);
                                        num1   =   atof(buff);
                                }

                                printf( "Enter   second   number: ");
                                gets(buff1);
                                num2   =   atof(buff1);
                                while   (num2   ==   0   &&   buff1[0]   !=   '0 ')
                                {
                                        printf( "%s ",buff1);
                                        printf( "   is   not   an   number.\n ");
                                        printf( "Enter   a   number,such   as   2.5,-1.78E8,or   3: ");
                                        gets(buff1);
                                        num2   =   atof(buff1);
                                }
                                printf( "%f   -   %f   =   %.2f\n ",num1,num2,num1   -   num2);
                        }
                                break;



                        case   'm ':
                        {
                                printf( "Enter   first   number: ");

                                gets(buff);
                                num1   =   atof(buff);
                                while   (num1   ==   0   &&   buff[0]   !=   '0 ')
                                {
                                        printf( "%s ",buff);
                                        printf( "   is   not   an   number\n ");
                                        printf( "Enter   a   number,such   as   2.5,-1.78E8,or   3: ");
                                        gets(buff);
                                        num1   =   atof(buff);
                                }

                                printf( "Enter   second   number: ");
                                gets(buff1);
                                num2   =   atof(buff1);
                                while   (num2   ==   0   &&   buff1[0]   !=   '0 ')
                                {
                                        printf( "%s ",buff1);
                                        printf( "   is   not   an   number.\n ");
                                        printf( "Enter   a   number,such   as   2.5,-1.78E8,or   3: ");
                                        gets(buff1);


                                        num2   =   atof(buff1);
                                }


                                printf( "%f   *   %f   =   %.2f\n ",num1,num2,num1   *   num2);
                        }
                                break;

                        case   'd ':
                        {
                                printf( "Enter   first   number: ");

                                gets(buff);
                                num1   =   atof(buff);
                                while   (num1   ==   0   &&   buff[0]   !=   '0 ')
                                {
                                        printf( "%s ",buff);
                                        printf( "   is   not   an   number\n ");
                                        printf( "Enter   a   number,such   as   2.5,-1.78E8,or   3: ");
                                        gets(buff);
                                        num1   =   atof(buff);
                                }

                                printf( "Enter   second   number: ");
                                gets(buff1);
                                num2   =   atof(buff1);
                                while   (num2   ==   0   &&   buff1[0]   !=   '0 ')
                                {
                                        printf( "%s ",buff1);


                                        printf( "   is   not   an   number.\n ");
                                        printf( "Enter   a   number,such   as   2.5,-1.78E8,or   3: ");
                                        gets(buff1);
                                        num2   =   atof(buff1);
                                }
                                while(buff1[0]   ==   '0 '   &&   buff1[1]   ==   '\0 ')   /*   当输入为0时   */
                                {
                                        printf( "Enter   a   number   other   than   0: ");
                                        gets(buff1);
                                        num2   =   atof(buff1);
                                }

                                printf( "%f   /   %f   =   %.2f\n ",num1,num2,num1   /   num2);
                        }
                                break;

                        default   :
                                printf( "Please   enter   a   right   character.\n ");
                }

                                printf( "Enter   the   operation   of   your   choice:\n ");
                                printf( "a.   add             s.   subtract\n ");
                                printf( "m.   multiply           d.   divide\n ");
                                printf( "q.   quit\n ");

        }
                printf( "Bye!\n ");



                getch();
                return   0;
}



[解决办法]
浮点数是不是0的判断是(num1> -0.000001 && num1 <0.000001)
判断是不是数字应该还有asccii码值判断,看字符是不是在0~9之间,有没有小数点,正负号等
  

[解决办法]
while (num1 == 0 && !isdigit(buff[0]))
判断第一个字符是否为0
atof对于第一个字符是非数字会返回0
对于0.XX 等也会返回0

热点排行