24小时热门版块排行榜    

查看: 1012  |  回复: 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子 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考博] 澳大利亚 Murdoch University 全奖博士招生(3个名额)地质化工冶金领域 +34 AI8RaGaPaSCR 2026-08-07 36/1800 2026-08-13 22:45 by jBlZNDB0Qx9J
[基金申请] 小木虫上这么多卖论文的,真有人买论文么?感觉没必要啊 +9 Tide man 2026-08-10 10/500 2026-08-13 20:33 by 温淼淼淼
[文学芳草园] 阿姨 +4 汪汪锅 2026-08-09 4/200 2026-08-13 19:43 by arzu_hma
[基金申请] 静等基金结果 +8 gjjjzhong 2026-08-10 21/1050 2026-08-13 17:56 by 且听虎啸
[基金申请] filecode +14 documentary 2026-08-10 16/800 2026-08-13 16:39 by 润生71
[基金申请] Filecode 又变了,巨变 +3 WH3796 2026-08-12 4/200 2026-08-13 14:13 by 小木虫6752397
[基金申请] 我的国基提前知道中了,可是同事的操作让我实在接受不了,怎么会有这样的人 +9 家与远方 2026-08-10 14/700 2026-08-13 09:41 by 臭臭不臭01
[基金申请] 结合人工智能,周易传统文化,filecode打分制来了,3分以上希望很大。 +3 Tide man 2026-08-12 4/200 2026-08-13 08:35 by ZJTJZ
[基金申请] 2019年青年基金涵评意见,大家看看几个A,几个B? +11 Tide man 2026-08-11 11/550 2026-08-13 07:35 by 撸猫猫
[基金申请] 好奇怪的filecode +5 布布和一二 2026-08-08 6/300 2026-08-12 16:11 by 云上清扬
[基金申请] 奇怪,两个人的filecode固定段从头到尾一模一样 +7 布布和一二 2026-08-10 10/500 2026-08-12 09:12 by 布布和一二
[基金申请] 综述论文作为代表作会不会影响评审专家的印象分? +11 yufeiwaner 2026-08-09 13/650 2026-08-12 08:17 by yufeiwaner
[基金申请] 是这周出结果还是下周出结果? +3 yuleib84 2026-08-11 3/150 2026-08-11 21:53 by jnhyjjm
[硕博家园] 读博的好处 +3 lnee 2026-08-11 3/150 2026-08-11 18:10 by 希望我好好的
[基金申请] 国自然结果 +4 Vierhys 2026-08-10 8/400 2026-08-10 15:06 by Vierhys
[基金申请] 面上项目filecode邪修 +5 西山十月 2026-08-09 7/350 2026-08-10 07:32 by 仁砚薪传
[基金申请] 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
[基金申请] 国基金的申报应该改成非等额制,评价高的钱多评价低的钱少,但是增加资助率 +7 a089 2026-08-07 7/350 2026-08-08 18:05 by gltch
[基金申请] 关于filecode +4 布布和一二 2026-08-07 7/350 2026-08-07 22:55 by zhanghaozhu
信息提示
请填处理意见