鱼C论坛

 找回密码
 立即注册
查看: 2680|回复: 8

自制计算器问题

[复制链接]
发表于 2014-3-7 22:10:17 | 显示全部楼层 |阅读模式
1鱼币
file:///C:\Users\zhao\AppData\Roaming\Tencent\Users\954260765\QQ\WinTemp\RichOle\@3C`{(_CD5LZ{CL`SJ]YC@R.jpgfile:///C:\Users\zhao\AppData\Roaming\Tencent\Users\954260765\QQ\WinTemp\RichOle\@3C`{(_CD5LZ{CL`SJ]YC@R.jpg#include<stdio.h>
float fun(float x,float y,char c);
main()
{
        float x,y,s;
        char c;
        printf("please enter two interge and a char :");
        scanf("%f%f%c",&x,&y,&c);
        s=fun(x,y,c);
        printf("%.2f",s);
}
float fun(float x,float y,char c)
{
        float s=0;
        switch(c)
        {
                case '+':s=x+y;break;
                case '-':s=x-y;break;
                case '*':s=x*y;break;
                case '/':s=x/y;break;
        }
        return(s);
       
}                                            输入以后就错了,难道又是因为是局部变量的关系吗


最佳答案

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-3-7 22:10:18 | 显示全部楼层
看注释
  1. #include<stdio.h>
  2. float fun(float x,float y,char c);
  3. int main()
  4. {
  5.         float x,y,s;
  6.         char c;
  7.         printf("please enter two interge and a char :");
  8.         scanf("%f%*c%f%*c%c",&x,&y,&c);        //%*c去除空格或回车
  9.         s=fun(x,y,c);
  10.         printf("%.2f",s);

  11.                 return 0;
  12. }
  13. float fun(float x,float y,char c)
  14. {
  15.         float s=0;
  16.         switch(c)
  17.         {
  18.                 case '+':s=x+y;break;
  19.                 case '-':s=x-y;break;
  20.                 case '*':s=x*y;break;
  21.                 case '/':s=x/y;break;
  22.         }
  23.         return(s);
  24.         
  25. }      
复制代码
无标题.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-3-7 22:17:36 | 显示全部楼层
本帖最后由 oggplay 于 2014-3-7 22:23 编辑

switch(i) {case  1  ... ;case 2......; .....}

!!!!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-3-7 22:46:49 | 显示全部楼层
本帖最后由 oggplay 于 2014-3-7 23:32 编辑
  1. #include<stdio.h>
  2. float fun(float x,float y,char c);
  3. int main()
  4. {
  5.         float x,y,s;
  6.         char c;
  7.         printf("please enter two interge and a char :");
  8.         scanf("%f%f%c",&x,&y,&c);
  9.         s=fun(x,y,c);
  10.                
  11.         printf("s=%.8f\n",s);return 0;
  12. }
  13. float fun(float x,float y,char c)
  14. {
  15.         float b;
  16.         c=getchar();
  17.         

  18.         

  19.           switch(c){
  20.                 case '+':b=x+y;break;
  21.                 case '-':b=x-y;break;
  22.                 case '*':b=x*y;break;
  23.                 case '/':b=x/y;break;               
  24.                 default:printf("error result!\n");
  25.         }
  26.         return b;
  27.         
  28. }            
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-3-7 23:54:37 | 显示全部楼层
这里改成这样
scanf("%f %f %c",&x,&y,&c);

输入的时候以空格分隔
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-3-8 00:39:00 | 显示全部楼层
  1. #include<stdio.h>

  2. void Input(float * n1,float * n2);
  3. int main()
  4. {
  5.         float n1,n2,sum;
  6.         char ch;
  7. s:        setbuf(stdin,NULL);
  8.         printf("-----------------\n");
  9.         printf("- please choose -\n");
  10.         printf("-     1 : +     -\n");
  11.         printf("-     2 : -     -\n");
  12.         printf("-     3 : *     -\n");
  13.         printf("-     4 : /     -\n");
  14.         printf("-     5 : exit  -\n");
  15.         printf("-----------------\n");
  16.        
  17.         ch = getchar();
  18.         if(ch == '5')
  19.         {
  20.                 return 0;
  21.         }
  22.         else
  23.         {
  24.                 switch(ch)
  25.                 {
  26.                 case '1':
  27.                 case '+':
  28.                         Input(&n1,&n2);
  29.                         sum = n1 + n2;
  30.                         break;
  31.                 case '2':
  32.                 case '-':
  33.                         Input(&n1,&n2);
  34.                         sum = n1 - n2;
  35.                         break;
  36.                 case '3':
  37.                 case '*':
  38.                         Input(&n1,&n2);
  39.                         sum = n1 * n2;
  40.                         break;
  41.                 case '4':
  42.                 case '/':
  43.                         Input(&n1,&n2);
  44.                         sum = n1 / n2;
  45.                         break;
  46.                 default:
  47.                         printf("Input error!\n");
  48.                         goto s;
  49.                 }
  50.         }
  51.         printf("sum = %f\n",sum);
  52.         goto s;
  53.        
  54. }


  55. void Input(float * n1,float * n2)
  56. {
  57.                 printf("Please putinto the fist number:");
  58.                 scanf("%f",n1);
  59.                 printf("Please input the second number:");
  60.                 scanf("%f",n2);
  61. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-3-8 10:52:06 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-3-8 10:52:37 | 显示全部楼层
oggplay 发表于 2014-3-7 22:17
switch(i) {case  1  ... ;case 2......; .....}

!!!!!!!

switch这里有什么错吗
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-3-8 11:22:19 | 显示全部楼层
  1. #include<stdio.h>
  2. #include <stdlib.h>

  3. float fun(float x,float y,char c);
  4. int main(void)
  5. {
  6.         float x,y,s;
  7.         char c;
  8.         printf("please enter two integer and a char :");
  9.         scanf("%f,%f,%c",&x,&y,&c);
  10.         s=fun(x,y,c);
  11.         printf("%.2f",s);

  12.         system("pause");
  13.         return 0;
  14. }
  15. float fun(float x,float y,char c)
  16. {
  17.         float s=0;
  18.         switch(c)
  19.         {
  20.         case '+':s=x+y;break;
  21.         case '-':s=x-y;break;
  22.         case '*':s=x*y;break;
  23.         case '/':s=x/y;break;
  24.         }
  25.         return(s);

  26. }
复制代码

运行结果……

运行结果……

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-18 02:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表