注册 登录
编程论坛 C++教室

为什么这么多错

weixun 发布于 2009-10-12 19:57, 642 次点击
#include<iostream>
using namespace std;
int main()
{
    int x,y,z,k,f,e;
    int nuber;
    cout<<"请输入不大于5位的数字"<<endl;
    cin>>nuber;
    if(nuber>9999)
        e=5;
        cout<<"它是5位数"<<endl;
    else if(nuber>999)
        e=4;
        cout<<"它是4位数"<<endl;
    else if(nuber>99)
        e=3;
        cout<<"它是3位数"<<endl;
    else if(nuber>9)
        e=2;
        cout<<"它是2位数"<<endl;
    else
        e=1;
        cout<<"它是1位数"<<endl;
    x=(int)(nuber/10000);
    y=(int)(nuber-10000*x)/1000;
    z=(int)(nuber-10000*x-1000*y)/100;
    k=(int)(nuber-10000*x-1000*y-100*z)/10;
    f=(int)(nuber-10000*x-1000*y-100*z-10*k);
    switch(e)
    {
    case 5:cout<<x<<y<<z<<k<<f<<endl;
        cout<<"反顺序是:"<<f<<k<<z<<y<<x<<endl;
    case 4:cout<<y<<z<<k<<f<<endl;
        cout<<"反顺序是:"<<f<<k<<z<<y<<endl;
    case 3:cout<<z<<k<<f<<endl;
        cout<<"反顺序是:"<<f<<k<<z<<endl;
    case 2:cout<<k<<f<<endl;
        cout<<"反顺序是:"<<f<<k<<endl;
    case 1:cout<<k<<f<<endl;
        cout<<"反顺序是:"<<f<<endl;
    }
    return 0;
}
先求出是几位数,然后是相反显示出来。
谢谢!!
6 回复
#2
洪夜馨2009-10-12 20:36
我也是小白,你看下版块上就发现我的很多问题了
我不知道我说的对不对,就先提出来了,看看下面别人是怎么查的:
1、if(nuber>9999) 后面应该是回车+“{”吧,在大括号里面加e=5; cout<<"它是5位数"<<endl;+“}”
我认为正确的是:
if(n<0 || n>99999)
{
  cout<<"错误"<<endl;
}
  else
   {
    if(nuber>9999)
    {
        e=5;
        cout<<"它是5位数"<<endl;
    }
    else
    {
        if(nuber>999)
        {
            e=4;
            cout<<"它是4位数"<<endl;
        }
        else
        {
            if(nuber>99)
            {
                e=3;
                cout<<"它是3位数"<<endl;
            }
            else
            {
                if(nuber>9)
                {
                    e=2;
                    cout<<"它是2位数"<<endl;
                }
                else
                {
                    if(nuber>=0)
                    {
                        e=1;
                        cout<<"它是1位数"<<endl;
                    }
                    else
                    {
                        cout<<"输入错误"<<endl;
                    }
                }
            }
        }
    }
  }
我看书上都这样的,不知道不加可不可以。
    x=(int)(nuber/10000);
    y=(int)(nuber-10000*x)/1000;
    z=(int)(nuber-10000*x-1000*y)/100;
    k=(int)(nuber-10000*x-1000*y-100*z)/10;
    f=(int)(nuber-10000*x-1000*y-100*z-10*k);
这个我不知道,我上次问的时候别人给的是下面这个样子的:(地址我忘记了,所以不知道我写的对不对,抱歉)
        x = nuber/10000;
        y = nuber/1000%10;
        z = nuber/100%10;
        k = nuber/10%10;
        f = nuber%10
后面一样的:
    switch(e)
    {
    case 5:cout<<x<<y<<z<<k<<f<<endl;
        cout<<"反顺序是:"<<f<<k<<z<<y<<x<<endl;
    case 4:cout<<y<<z<<k<<f<<endl;
        cout<<"反顺序是:"<<f<<k<<z<<y<<endl;
    case 3:cout<<z<<k<<f<<endl;
        cout<<"反顺序是:"<<f<<k<<z<<endl;
    case 2:cout<<k<<f<<endl;
        cout<<"反顺序是:"<<f<<k<<endl;
    case 1:cout<<k<<f<<endl;
        cout<<"反顺序是:"<<f<<endl;
    }
我改成
    switch(e)
    {
    case '5':
       {
        cout<<x<<y<<z<<k<<f<<endl;
        cout<<"反顺序是:"<<f<<k<<z<<y<<x<<endl;
       }
    …………
这样子的。
也不知道这样对不对。我也是新手,也不知道我是不是越帮越忙了。你看看其他人吧。

[ 本帖最后由 洪夜馨 于 2009-10-12 20:42 编辑 ]
#3
shl3052009-10-12 21:44
两个错误
1 if-else 中每一部分都要用{}括起来
2 switch中每个case最后要加 break
#4
weixun2009-10-15 13:26
为什么(int)要用括号括起来啊?
#5
哥特复兴2009-10-15 14:56
(int)代表强制类型转换,也就是说如果用户输入一个非数子的字符,这里可以强制转换成整形类型,但在这里用就没有这个必要了。
还有,楼主在用条件分支语句switch……case的时候记得加上中断语句break;要不然每条语句系统都会执行一次。
完整代码如下:
#include<iostream>
using namespace std;
void main()
{
    int x,y,z,k,f,e;
    int nuber;
    cout<<"请输入不大于5位的数字"<<endl;
    cin>>nuber;
    if(nuber>9999)
    {
        e=5;
        cout<<"它是5位数"<<endl;}
    else if(nuber>999)
    {
        e=4;
        cout<<"它是4位数"<<endl;
    }
    else if(nuber>99)
    {
        e=3;
        cout<<"它是3位数"<<endl;
    }
    else if(nuber>9)
    {
        e=2;
        cout<<"它是2位数"<<endl;
    }
    else  
    {
        e=1;
        cout<<"它是1位数"<<endl;
    }
    x=(int)(nuber/10000);
    y=(int)(nuber-10000*x)/1000;
    z=(int)(nuber-10000*x-1000*y)/100;
    k=(int)(nuber-10000*x-1000*y-100*z)/10;
    f=(int)(nuber-10000*x-1000*y-100*z-10*k);
    switch(e)
    {
    case 5:cout<<x<<y<<z<<k<<f<<endl;
        cout<<"反顺序是:"<<f<<k<<z<<y<<x<<endl;
        break;
    case 4:cout<<y<<z<<k<<f<<endl;
        cout<<"反顺序是:"<<f<<k<<z<<y<<endl;
        break;
    case 3:cout<<z<<k<<f<<endl;
        cout<<"反顺序是:"<<f<<k<<z<<endl;
        break;
    case 2:cout<<k<<f<<endl;
        cout<<"反顺序是:"<<f<<k<<endl;
        break;
    case 1:cout<<k<<f<<endl;
        cout<<"反顺序是:"<<f<<endl;
        break;
    }
}
#6
weixun2009-10-15 15:56
好的
#7
weixun2009-10-15 15:57
非常感谢

1