| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 522 人关注过本帖
标题:请问什么地方出错了?
只看楼主 加入收藏
zhen4858
Rank: 1
等 级:新手上路
帖 子:8
专家分:1
注 册:2010-5-26
结帖率:100%
收藏
 问题点数:0 回复次数:6 
请问什么地方出错了?
给一个不多于5位的正整数,要求:
1.求出它是几位数;
2.安逆序输出。
#include <stdio.h>
void main()
{
    int z;
long int a,gw,sw,bw,qw,ww;
printf("输入99999以内的数");
scanf("%ld",&a);
if(a>9999){z=5;ww=a/10000;}
else if(a>999){z=4;qw=a/1000;}
else if(a>99){z=3;bw=a/100;}
else if(a>9){z=2;sw=a/10;}
else z=1;gw=a/1;
printf("是%d位数\n",z);
printf("逆序是");
            if(z==5)
            printf("%ld%ld%ld%ld%ld\n",gw,sw,bw,qw,ww);
            else if(z==4)
            printf("%ld%ld%ld%ld\n",gw,sw,bw,qw);
            else if(z==3)
            printf("%ld%ld%ld\n",gw,sw,bw);
            else if(z==2)
            printf("%ld%ld\n",gw,sw);
            else printf("%ld\n",gw);
}
搜索更多相关主题的帖子: 正整数 include 
2010-05-30 17:32
vs_inzaghi
Rank: 5Rank: 5
来 自:湖北
等 级:职业侠客
威 望:1
帖 子:303
专家分:364
注 册:2009-8-17
收藏
得分:0 
如果你输入一个5位数,那么满足a>9999条件,计算出万位的值,但是,你后面因为用了else if,所以你剩下的位数就不再计算,也就是说,你只得到一个万位的值……当然得不到想要的结果啦……
建议不要用else if,不如用switch函数,方便简洁也好处理……

我很懒,但我讨厌别人说我懒……
2010-05-30 18:10
vs_inzaghi
Rank: 5Rank: 5
来 自:湖北
等 级:职业侠客
威 望:1
帖 子:303
专家分:364
注 册:2009-8-17
收藏
得分:0 
何况,你逻辑有问题,就算能计算,你输入5位数,万位的值是正确的,但是a的值不变的前提下你又a/1000得出千位的值,请想一下,这样能得出千位的值吗?假设你输入10000,那么你算出的千位的值就是10,显然不可能啊……
建议楼主逻辑再严密点……
收到的鲜花
  • zhen48582010-05-30 18:30 送鲜花  3朵   附言:谢谢

我很懒,但我讨厌别人说我懒……
2010-05-30 18:12
zhen4858
Rank: 1
等 级:新手上路
帖 子:8
专家分:1
注 册:2010-5-26
收藏
得分:0 
原来是这样的 谢谢你了
#include <stdio.h>
void main()
{
    int z;
long int a,gw,sw,bw,qw,ww;
printf("输入99999以内的数");
scanf("%ld",&a);
if(a>9999)z=5;
else if(a>999)z=4;
else if(a>99)z=3;
else if(a>9)z=2;
else z=1;
printf("是%d位数\n",z);
ww=a/10000;
qw=(a-ww*10000)/1000;
bw=(a-ww*10000-qw*1000)/100;
sw=(a-ww*10000-qw*1000-bw*100)/10;
gw=(a-ww*10000-qw*1000-bw*100-sw*10);
printf("逆序是");
            if(z==5)
            printf("%ld%ld%ld%ld%ld\n",gw,sw,bw,qw,ww);
            else if(z==4)
            printf("%ld%ld%ld%ld\n",gw,sw,bw,qw);
            else if(z==3)
            printf("%ld%ld%ld\n",gw,sw,bw);
            else if(z==2)
            printf("%ld%ld\n",gw,sw);
            else printf("%ld\n",gw);
}
2010-05-30 18:23
myhnuhai
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:3
帖 子:425
专家分:1725
注 册:2010-3-17
收藏
得分:0 
兄弟你换个思路去解题,你的这个思路很迷糊的也不成立啊,算法思想错了,你常使用字符串处理很简单的!
#include "stdio.h"
#include<string.h>
main()
{
    char a[30];
    int i,k;
    printf("请输入数值:");
    scanf("%s",a);
    k=strlen(a);
    for(i=k-1;i>=0;i--)
    printf("%c",a[i]);
   
}

不要让肮脏的记忆,迷失了原本纯洁的心灵!
2010-05-30 18:24
想思
Rank: 1
等 级:新手上路
帖 子:4
专家分:5
注 册:2010-5-30
收藏
得分:0 
希望大家多多关照!!!!

谢谢解答::::
函数f()、g()的定义如下所示。已知调用f()时传递给其形参x的值是1,若以传值 主式调用g,则函数f的返回值为__3___;若以传引用方式调用g,则函数f的返回值为___4___;
f(int x)      g(int y)
{int a=5;     {y=y+1;
a=g(x);        return y;
return a+x:    }
}
这是软考的题目2010年上午   41)题的题目!!!!
我不知道为什么等4( 若以传引用方式调用g,则函数f的返回值为___4___;)
2010-05-30 20:21
想思
Rank: 1
等 级:新手上路
帖 子:4
专家分:5
注 册:2010-5-30
收藏
得分:0 
希望大家多多关照!!!!

谢谢解答::::
函数f()、g()的定义如下所示。已知调用f()时传递给其形参x的值是1,若以传值 主式调用g,则函数f的返回值为__3___;若以传引用方式调用g,则函数f的返回值为___4___;
f(int x)      g(int y)
{int a=5;     {y=y+1;
a=g(x);        return y;
return a+x:    }
}
这是软考的题目2010年上午   41)题的题目!!!!
我不知道为什么等于4( 若以传引用方式调用g,则函数f的返回值为___4___;)
2010-05-30 20:22
快速回复:请问什么地方出错了?
数据加载中...
 
   



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

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