| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 763 人关注过本帖
标题:【求助】关于简易计算器
只看楼主 加入收藏
zhangleitao
Rank: 2
等 级:论坛游民
帖 子:13
专家分:15
注 册:2011-2-24
收藏
 问题点数:0 回复次数:9 
【求助】关于简易计算器
我是初学者,这是我编的一个只能进行简单的加减乘除运算。
问题如下:
用VC++6.0进行编译,组建全部通过,没有错误和提醒。可运行时出现卡着这样的情况(下面有图片),然后就不动了。
#include"stdio.h"
#include"conio.h"
#include"stdlib.h"
void main()
{
    float data1,data2,m;
    int choose;
    char yes_no;
    yes_no='y';
    for (;yes_no=='y'||yes_no=='Y';);
{
    system("cls");
    printf("\n\n");
    printf("\t\t|---------------------|\n");
    printf("\t\t|      简易计算器     |\n");
    printf("\t\t|---------------------|\n");
    printf("\t\t|1-------加法         |\n");
    printf("\t\t|2-------减法         |\n");
    printf("\t\t|3-------乘法         |\n");
    printf("\t\t|4-------除法         |\n");
    printf("\t\t|0-------退出         |\n");
    printf("\t\t|---------------------|\n");
    printf("请选择计算方式");
    scanf("%d",&choose);
    if (choose=1)
    {printf("请输入两个数个数(用逗号分开):");
    scanf("%f,%f",&data1,&data2);
    m=data1+data2;
    printf("%f\n",m);}
    else if (choose=2)
    {    printf("请输入两个数个数(用逗号分开):");
    scanf("%f,%f",&data1,&data2);
    m=data1-data2;
    printf("%f\n",m);}
    else if (choose=3)
    {    printf("请输入两个数个数(用逗号分开):");
    scanf("%f,%f",&data1,&data2);
    m=data1*data2;
    printf("%f\n",m);}
    else if (choose=4)
    {   printf("请输入两个数个数(用逗号分开):");
    scanf("%f,%f",&data1,&data2);
    if (data2=0)
    printf("输入非法\n");
    else
        m=data1/data2;
    printf("%f\n",m);
    }
    else if (choose=0)
        exit(0);
    else
        printf("输入非法,请重新输入");
    }
    printf("\n\t\t是否继续计算(输入y或Y继续?其它字符退出。");
    scanf("\n%c",&yes_no);
}

图片附件: 游客没有浏览图片的权限,请 登录注册

搜索更多相关主题的帖子: 计算器 图片 
2011-03-20 22:41
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
把下面括号里的=换成==,再试一试吧。
在C语言里面,一个等号表示赋值, 两个等号表示检测
例如:
a=b 和 a==b 是两码事。

 if (choose=1)
else if (choose=2)
 else if (choose=3)
else if (choose=4)

if (data2=0)
else if (choose=0)

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-20 23:06
zhangleitao
Rank: 2
等 级:论坛游民
帖 子:13
专家分:15
注 册:2011-2-24
收藏
得分:0 
回复 2楼 ansic
结果还是一样。
2011-03-20 23:13
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
以下是引用zhangleitao在2011-3-20 23:13:25的发言:

结果还是一样。

建议: 先做加法的, 没问题以后,再做减法的, 没问题后,再做乘法的, 没问题以后,再做除法的。
把问题分开来,一个个解决, 或许,就知道问题所在。
(如果你不嫌麻烦的话)goodluck~~

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-20 23:20
canxden
Rank: 3Rank: 3
来 自:江西奉新
等 级:论坛游侠
帖 子:114
专家分:105
注 册:2011-3-18
收藏
得分:0 
我知道了……(choose=4)…这个是把……4赋值给choose等号是choose == 4……遇到要用等号的时候…请把定量放在左边…就是  4 == choose  这样编译器就可以防止出现一个等号还pass的情况了……   不知道…二楼……没用?…那无能为力了

一个人能有多坚强,太安静,就成了孤单。
2011-03-20 23:23
canxden
Rank: 3Rank: 3
来 自:江西奉新
等 级:论坛游侠
帖 子:114
专家分:105
注 册:2011-3-18
收藏
得分:0 
(choose=4)…这个是把……4赋值给choose等号是choose == 4……遇到要用等号的时候…请把定量放在左边…就是  4 == choose  这样编译器就可以防止出现一个等号还pass的情况了……   不知道…二楼……没用?…那无能为力了

一个人能有多坚强,太安静,就成了孤单。
2011-03-20 23:23
njkido
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:224
专家分:1184
注 册:2011-3-8
收藏
得分:0 
F9断点 F10/F11单步
2011-03-21 01:53
常建华
Rank: 2
等 级:论坛游民
帖 子:16
专家分:28
注 册:2011-3-20
收藏
得分:0 
#include"stdio.h"
#include"conio.h"
#include"stdlib.h"
void main()
{
    float data1,data2,m;
    int choose;
    char yes_no;
    yes_no='y';
temp:   for (;yes_no=='y'||yes_no=='Y';)
{
    system("cls");
    printf("\n\n");
    printf("\t\t|---------------------|\n");
    printf("\t\t|      简易计算器     |\n");
    printf("\t\t|---------------------|\n");
    printf("\t\t|1-------加法         |\n");
    printf("\t\t|2-------减法         |\n");
    printf("\t\t|3-------乘法         |\n");
    printf("\t\t|4-------除法         |\n");
    printf("\t\t|0-------退出         |\n");
    printf("\t\t|---------------------|\n");
    printf("请选择计算方式");
    scanf("%d",&choose);
    if (choose==1)
    {printf("请输入两个数个数(用逗号分开):");
    scanf("%f,%f",&data1,&data2);
    m=data1+data2;
    printf("%f\n",m);}
    else if(choose == 2) {
        printf("请输入两个数个数(用逗号分开):");
    scanf("%f,%f",&data1,&data2);
    m=data1-data2;
    printf("%f\n",m);
    }
    else if (choose == 3) {
      printf("请输入两个数个数(用逗号分开):");
    scanf("%f,%f",&data1,&data2);
    m=data1*data2;
    printf("%f\n",m);
   
    }
    else if (choose == 4) {
      printf("请输入两个数个数(用逗号分开):");
    scanf("%f,%f",&data1,&data2);
    if(data2 == 0) {
     printf("data2 should not zero\n");
     exit(0);
    }else {
    m=data1/data2;
    printf("%f\n",m);
    }
    }
    else if (choose == 0) {
      exit(0);
    }

      

   

   
}

   


}
这样是没有问题的
2011-03-21 09:04
常建华
Rank: 2
等 级:论坛游民
帖 子:16
专家分:28
注 册:2011-3-20
收藏
得分:0 
问题应该 在你的循环上
 printf("\n\t\t是否继续计算(输入y或Y继续?其它字符退出。");
    scanf("\n%c",&yes_no);
Why does the yes_no variable have not value ????
I need master-hand answer  
2011-03-21 09:22
zhangleitao
Rank: 2
等 级:论坛游民
帖 子:13
专家分:15
注 册:2011-2-24
收藏
得分:0 
for (;yes_no=='y'||yes_no=='Y';);   //这里多了一个分号,成了一个死循环了

if (choose=2)   这些判断都要用双等号 ==

printf("\n\t\t是否继续计算(输入y或Y继续?其它字符退出。");
 scanf("\n%c",&yes_no);    这两句也没有放入循环中
2011-04-15 16:43
快速回复:【求助】关于简易计算器
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026870 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved