| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1154 人关注过本帖
标题:关于 if 的运用问题  (我是新手)
只看楼主 加入收藏
青草蓝天
Rank: 2
等 级:论坛游民
帖 子:178
专家分:20
注 册:2008-12-6
结帖率:90%
收藏
 问题点数:0 回复次数:11 
关于 if 的运用问题  (我是新手)
最近刚学C 
对if 的运用还不是很明白,有时已经用if把输入值进行界定了,可是运行时还是不能按照我分的组运行.
我表达能力也不好,我用题来说明我的疑惑吧:
要求输入一个位数不超过5数字后能指出它的位数以及各位上的数字分别是什么.
我知道能用循环做,还很简单.可我想试试用if,
主要步骤就是
if(s>=10000 && s<100000)
    {
        a=s/10000;
        b=s/1000-10*a;
        c=s/100-100*a-10*b;
        d=s/10-1000*a-100*b-10*c;
        e=s-10000*a-1000*b-100*c-10*d;

        printf("你输入的数字的位数是5,\n各位上的数字是:%d,%d,%d,%d,%d.\n",a,b,c,d,e);
    }
后面的就是类似的方法
可是最后问题就出来了 比如我输入个123,显示结果就是

你输入的数字的位数是5,
各位上的数字是:0,0,1,2,3.
你输入的数字的位数是4,
各位上的数字是:0,0,1,2,3.
你输入的数字的位数是3,
各位上的数字是:0,0,1,2,3.
你输入的数字的位数是2,
各位上的数字是:0,0,1,2,3.
你输入的数字的位数是1,
各位上的数字是:0,0,1,2,3.

我用if对s进行了限定,为什么还会出现限定范围之外的结果?

请哪位指点下,最好能点一下用if限定时的用法,谢谢.
搜索更多相关主题的帖子: 能力 
2008-12-06 20:17
就搞C
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2008-6-9
收藏
得分:0 
看来你那个S的值获取有问题.

上学前我是天才,经中国教育毕业后变成了蠢材
2008-12-06 20:52
xxwpk007
Rank: 4
等 级:业余侠客
帖 子:166
专家分:289
注 册:2007-7-29
收藏
得分:0 
把全部代码帖出来看看把
2008-12-06 20:58
long198668
Rank: 1
来 自:河南--开封
等 级:新手上路
帖 子:53
专家分:0
注 册:2008-5-8
收藏
得分:0 
看你贴出来的程序是没有问题
关键就是看你前边是怎么写的了;

上楼说的对  你把代码全都贴出来  大家才能帮你

仔细看了下代码  是不是程序溢出了?

[[it] 本帖最后由 long198668 于 2008-12-6 21:12 编辑 [/it]]
2008-12-06 21:10
zhangyafei4353
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-11-28
收藏
得分:0 
请高手指点:
#include <iostream>
using namespace std;

int deal1(int x,int b)
{
    int a=0;
    if(x>=b && x<b*10)
    {
        a=(int)(x/b);
    }
    return a;
}

int deal2(int x,int a,int b)
{
    return x-a*b;
}

void main()
{
    int x,i,a[5];
    do
    {
        system("cls");
        cout<<"请输入一个数(X<100000):";
        cin>>x;
    }while(x>=100000);

    a[0]=deal1(x     ,10000);
    x   =deal2(x,a[0],10000);

    a[1]=deal1(x     ,1000 );
    x   =deal2(x,a[1],1000 );

    a[2]=deal1(x     ,100  );
    x   =deal2(x,a[2],100  );

    a[3]=deal1(x     ,10   );
    x   =deal2(x,a[3],10   );

    a[4]=deal1(x     ,1    );
    x   =deal2(x,a[4],1    );

    do
    {
        cout<<"要显示第几数(1:万 2:千 3:百 4:十 5:个):";
        cin>>i;
        cout<<"第"<<i<<"位数是:"<<a[i-1]<<endl;
    }while(i>0&&i<5);
    system("pause");
}

未命名.jpg (370.92 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2008-12-06 22:02
青草蓝天
Rank: 2
等 级:论坛游民
帖 子:178
专家分:20
注 册:2008-12-6
收藏
得分:0 
ls 的 很好
我发一下我的 吧
大家帮我看看哪里的问题
#include <stdio.h>
void main()
{
    int x,a,b,c,d,e;

    printf("请输入一个不超过五位的正整数:\n");
    scanf("%d",&x);


    if(x<100000 && x>=10000 );
    {
        a=x/10000;
        b=x/1000-10*a;
        c=x/100-100*a-10*b;
        d=x/10-1000*a-100*b-10*c;
        e=x-10000*a-1000*b-100*c-10*d;
    
    printf("它的位数是5\n它的各位上的数分别是:%d,%d,%d,%d,%d.\n",a,b,c,d,e);
    }

    if(x<10000 && x>=1000);
    {
        a=x/10000;
        b=x/1000-10*a;
        c=x/100-100*a-10*b;
        d=x/10-1000*a-100*b-10*c;
        e=x-10000*a-1000*b-100*c-10*d;
       
    
    printf("它的位数是4\n它的各位上的数分别是:%d,%d,%d,%d.\n",a,b,c,d);
    }

    if(x<1000 && x>=100);
    {
        a=x/10000;
        b=x/1000-10*a;
        c=x/100-100*a-10*b;
        d=x/10-1000*a-100*b-10*c;
        e=x-10000*a-1000*b-100*c-10*d;
       
    printf("它的位数是3\n它的各位上的数分别是:%d,%d,%d.\n",a,b,c);
    }

    if(x<100 && x>=10);
    {
        a=x/10000;
        b=x/1000-10*a;
        c=x/100-100*a-10*b;
        d=x/10-1000*a-100*b-10*c;
        e=x-10000*a-1000*b-100*c-10*d;
       
       
    printf("它的位数是2\n它的各位上的数分别是:%d,%d.\n",a,b);
    }

    if(x<10 && x>=1);
    {
        a=x/10000;
        b=x/1000-10*a;
        c=x/100-100*a-10*b;
        d=x/10-1000*a-100*b-10*c;
        e=x-10000*a-1000*b-100*c-10*d;


    printf("它的位数是1\n它的各位上的数分别是:%d.\n",a);
    }

}
输入1 结果很诡异.
2008-12-07 12:31
raodapeng
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-11-22
收藏
得分:0 
using namespace std是什么意思啊
2008-12-07 13:22
jdh99
Rank: 2
来 自:南师大
等 级:论坛游民
威 望:1
帖 子:59
专家分:15
注 册:2008-11-7
收藏
得分:0 
if后面的表达式不要加;
如if(x<100000 && x>=10000 );去掉;

作鲲鹏,遨游于天地沧海
2008-12-07 13:37
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1694
专家分:4282
注 册:2007-12-27
收藏
得分:0 
是啊,就是这些if后面的分号造成的,你还在一楼误导大家

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2008-12-07 18:40
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1694
专家分:4282
注 册:2007-12-27
收藏
得分:0 
另外你自己不分析么?
不到5位的应该输出的是后面的那几个数。
a,b,c,d,e
b,c,d,e
c,d,e
d,e
e

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2008-12-07 18:42
快速回复:关于 if 的运用问题  (我是新手)
数据加载中...
 
   



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

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