24小时热门版块排行榜    

查看: 999  |  回复: 15

fengfeng子

银虫 (正式写手)

[求助] 初学者,C++纠错 已有2人参与

//这个是几个数相加得小代码,最后总是结果输不出来,麻烦哪位大神帮忙看一下
//多个数字的加减乘除
#include<iostream>
#include<conio.h>
#include<stdio.h>
using namespace std;

int main()
{
        int num1=0;
        int num2;
        char ap;
        cout<<"Expression:";
        cin>>num1;
         if(!cin)exit(0);  //如果输入的类型不一致就错误
while(cin>>ap)
{
        if(ap!=';')cin>>num2;
        if(!cin)exit(0);
        switch(ap)
        {
        case'+':
                num1+=num2;
                break;
        case'-':
                num1-=num2;
                break;
        case'*':
                num1*=num2;
                break;
        case'/':
                num1/=num2;
                break;
        default:
        cout<<"error.\n";
        }
}
cout<<"result:"<<num1<<"\n";
getch();
return 0;
}
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

YouthUtopian

至尊木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
fengfeng子: 金币+10, 有帮助 2015-08-05 17:31:37
while(cin>>ap) 有问题,这个while循环是个死循环,出不来。
2楼2015-08-05 16:51:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fengfeng子

银虫 (正式写手)

引用回帖:
2楼: Originally posted by YouthUtopian at 2015-08-05 16:51:46
while(cin>>ap) 有问题,这个while循环是个死循环,出不来。

我也觉得是,但是不知道怎么改
3楼2015-08-05 17:29:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

alexisalex

铁虫 (初入文坛)

【答案】应助回帖

可以通过代码,大概知道你的意思。就是输入一个长的计算字符串,类如:“3+2x4-2= "这样的字符串然后输出结果对吧!

你说的不出结果应该是因为你在”=“的后面没有加空格吧,注意你的代码的这一句
if(!cin)exit(0);  // 如果cin为null就退出

还有,看得出来你是新手!注意代码风格
658dd0e8jw1eurj1we6n6j21w02iou0x
4楼2015-08-05 18:24:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

alexisalex

铁虫 (初入文坛)

引用回帖:
2楼: Originally posted by YouthUtopian at 2015-08-05 16:51:46
while(cin>>ap) 有问题,这个while循环是个死循环,出不来。

代码里面有跳出语句,注意!
658dd0e8jw1eurj1we6n6j21w02iou0x
5楼2015-08-05 18:26:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

alexisalex

铁虫 (初入文坛)

引用回帖:
4楼: Originally posted by alexisalex at 2015-08-05 18:24:55
可以通过代码,大概知道你的意思。就是输入一个长的计算字符串,类如:“3+2x4-2= "这样的字符串然后输出结果对吧!

你说的不出结果应该是因为你在”=“的后面没有加空格吧,注意你的代码的这一句
if(!ci ...

上面我说的”没有加空格“不严谨,应该是没有加 空白字符
658dd0e8jw1eurj1we6n6j21w02iou0x
6楼2015-08-05 18:28:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

YouthUtopian

至尊木虫 (著名写手)

引用回帖:
3楼: Originally posted by fengfeng子 at 2015-08-05 17:29:55
我也觉得是,但是不知道怎么改...

#include<iostream>
#include<conio.h>
#include<stdio.h>
using namespace std;

int main()
{
        int num1=0;
        int num2;
        char ap;
        cout<<"Expression:";
        cin>>num1;
        if(!cin)exit(0);  //如果输入的类型不一致就错误

        while(cin>>ap)
        {
                if(ap!=';')cin>>num2;
                else break;
                if(!cin)exit(0);
                switch(ap)
                {
                case'+':
                        num1+=num2;
                        break;
                case'-':
                        num1-=num2;
                        break;
                case'*':
                        num1*=num2;
                        break;
                case'/':
                        num1/=num2;
                        break;
                default:
                        cout<<"error.\n";
                }
        }
        cout<<"result:"<<num1<<"\n";
        getch();
        return 0;
}
输入完之后按 分号(英文输入法下的)退出
7楼2015-08-05 18:52:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

YouthUtopian

至尊木虫 (著名写手)

引用回帖:
5楼: Originally posted by alexisalex at 2015-08-05 18:26:16
代码里面有跳出语句,注意!...

你是说 if(!cin) exit(0); 吗? 这只是针对输入的类型不一致做出判断。 while(cin>>ap) ,ap 是char型,键盘输入任何字符都可以看作char型。
8楼2015-08-05 18:55:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fengfeng子

银虫 (正式写手)

引用回帖:
7楼: Originally posted by YouthUtopian at 2015-08-05 18:52:24
#include<iostream>
#include<conio.h>
#include<stdio.h>
using namespace std;

int main()
{
        int num1=0;
        int num2;
        char ap;
        cout<<"Expression:";
        cin> ...

你只做了else break这一行的修改啊?循环跳出还是没有解决
9楼2015-08-05 21:23:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fengfeng子

银虫 (正式写手)

引用回帖:
4楼: Originally posted by alexisalex at 2015-08-05 18:24:55
可以通过代码,大概知道你的意思。就是输入一个长的计算字符串,类如:“3+2x4-2= "这样的字符串然后输出结果对吧!

你说的不出结果应该是因为你在”=“的后面没有加空格吧,注意你的代码的这一句
if(!ci ...

”=“只有两种情况,一种是mun1=0,另一种是num1+=num2.我不知道这两处的等号后面加空格跟循环跳出有什么关系。
10楼2015-08-05 21:26:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 fengfeng子 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 面上项目filecode邪修 +4 西山十月 2026-08-09 6/300 2026-08-10 00:16 by liufeng0619
[基金申请] 应该是93bebmhtak前后十一个字符比较关键 +7 Lanmanbaby 2026-08-09 14/700 2026-08-09 23:33 by Tide man
[基金申请] filecode与中标关系的预测 +5 布布和一二 2026-08-07 5/250 2026-08-09 16:15 by 袁向阳007
[基金申请] fileCode有新解读? +10 Tide man 2026-08-08 18/900 2026-08-09 12:55 by 仁砚薪传
[基金申请] 关于filecode,很负责任的告诉大家 +6 爱看书的可乐 2026-08-08 7/350 2026-08-08 22:13 by a_niu
[考博] 【2027博士申请】纳米药物递送方向 20+3 13586093586 2026-08-03 5/250 2026-08-08 21:54 by 13586093586
[基金申请] 关于豆爷回答的JTJC与%2F数量 +5 yang182083 2026-08-06 7/350 2026-08-08 18:29 by zhanghaozhu
[基金申请] 基金中了 +14 laoda193707 2026-08-06 14/700 2026-08-08 00:23 by 实验小白ha
[基金申请] 关于filecode +4 布布和一二 2026-08-07 7/350 2026-08-07 22:55 by zhanghaozhu
[基金申请] 娱乐 +6 Tide man 2026-08-03 6/300 2026-08-07 22:40 by 铁帽子农民
[基金申请] 化学口download_prp&amp;fileCode的固定段好像这几天一直没变,有变的大神么? +3 Tide man 2026-08-07 4/200 2026-08-07 22:39 by Tide man
[基金申请] 固定端突然变了,今天 +6 archvillain 2026-08-06 10/500 2026-08-07 16:03 by 医学老男孩
[基金申请] 听说今天filecode变了 +24 布布和一二 2026-08-06 47/2350 2026-08-07 16:02 by zhiyanjiang
[基金申请] filecode变化情况 +6 布布和一二 2026-08-07 22/1100 2026-08-07 14:45 by 且听虎啸
[基金申请] filecode +14 等待解的谜 2026-08-06 19/950 2026-08-07 12:20 by wlwhappy
[基金申请] filecode +8 布布和一二 2026-08-06 11/550 2026-08-06 20:41 by tangpu318
[基金申请] 求各位大神看下 100+6 hpkpkpkp 2026-08-05 33/1650 2026-08-06 14:49 by zhiyanjiang
[基金申请] 8月时间戳变的,举个手。玩一下,释放压力 +9 archvillain 2026-08-04 11/550 2026-08-05 20:06 by wlwhappy
[基金申请] 有没有H口的?有收到消息的吗? +3 超级海虾 2026-08-04 3/150 2026-08-04 17:26 by 学教育滴
[基金申请] 纯娱乐,不喜欢勿喷 +7 Tide man 2026-08-04 10/500 2026-08-04 15:10 by loufangrui
信息提示
请填处理意见