红联Linux门户
Linux帮助

这个程序怎么就不按照顺序显示呢?

发布时间:2009-03-09 09:13:36来源:红联作者:winterwy
#include
int jiafa();
int jianfa();
int chengfa();
float chufa();

int main(void)
{int x;
char c;
int y;
printf("Welcome to use this little calculator!!!\n");
printf("Now you can start calculating...\n");
printf("Input a number:\n");
scanf("%d",&x);
printf("Input a calculating char:\n");
c=getchar();
printf("Input anther number:\n");
scanf("%d",&y);
switch(c){
case 43 :{ jiafa(x,y);

break;}
case 45 :{ jianfa(x,y);

break;}
case 42 :{ chengfa(x,y);

break;}
case 47 :{ chufa(x,y);

break;}
case 101 :{ puts("you want to exit the program,exiting now...\n");

break;}
default: {puts("you put wrong command,try again!");}
}
return 0;}


int jiafa(int a, int b)
{ int answer;
answer=a+b;
printf("the answer is:%d\n",answer);
return(answer);}

int jianfa(int a, int b)
{ int answer;
answer=a-b;
printf("the answer is:%d\n",answer);
return(answer);}

int chengfa(int a, int b)
{ int answer;
answer=a*b;
printf("the answer is:%d\n",answer);
return(answer);}

float chufa(int a, int b)
{ float answer;
answer=a/b;
printf("the answer is:%f\n",answer);
return(answer);}



我想编写一个简单的计算器,嘻嘻。上面列出来的还没有完全编好,但是我编译是成功的,运行结果却是这个样子的:

Welcome to use this little calculator!!!
Now you can start calculating...
Input a number:
3
Input a calculating char:
Input anther number:
5
you put wrong command,try again!



我想了很久也不知道是为什么?所以贴来这里,想请大家帮我看一看。
我是个笨笨,大家要是觉得我编的程序可笑,也不要使劲拍我呀!哈
谢谢!!!
文章评论

共有 7 条评论

  1. embedman 于 2009-04-16 23:49:35发表:

    看到这个帖子,我深有体会,太希望学嵌入式Linux的朋友能多多发帖,我做过一些很简单的程序,理论上绝对不会错的,可就是不运行。但是同样的程序在烧进NAND FLASH就能运行,直接烧进SDRAM却不能运行。百般无奈......

  2. ShinyGuo 于 2009-03-13 20:24:26发表:

    建议楼主写程序时注意些格式。你这样写,小程序还行,大了让别人看,会很痛苦的...

  3. ShinyGuo 于 2009-03-13 20:22:19发表:

    [i=s] 本帖最后由 ShinyGuo 于 2009-3-13 20:23 编辑 [/i]

    当然还没有解决了。原因是:getchar()一次只接收一个字符。你输入3的时候其实接收的是3\n,多了个回车字符。等下一个getchar()就把\n当成操作符来接收了。进入switch里边的回车符当然跟+-*/对不上号。
    c=getchar();应该改为:while((c=getchar()) == '\n') ;
    意思是如果getchar()得到的是回车符,就什么也不做,接着getchar。明白不?

  4. winterwy 于 2009-03-09 21:02:11发表:

    4# michrykitty


    {:2_97:} 嗯! 唉,这个问题其实还没解决

  5. michrykitty 于 2009-03-09 15:09:48发表:

    精彩!我也在学习中:0wmjh(1

  6. winterwy 于 2009-03-09 10:38:19发表:

    2# wang7131984
    :0wl;l1

    恩,知道了
    谢谢!

  7. wang7131984 于 2009-03-09 10:07:15发表:

    getchar()只能接受一个字符而实际上你输入了一个字符串“x\n"
    c=getchar()
    getchar()
    y=getchar()