| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 22993 人关注过本帖, 1 人收藏
标题:初学C 求助题目:给出一个不多于5位数的正整数,要求:求出他是几位数,分别 ...
取消只看楼主 加入收藏
liusf1988
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-11-30
收藏(1)
 问题点数:0 回复次数:5 
初学C 求助题目:给出一个不多于5位数的正整数,要求:求出他是几位数,分别输出每一位数字。。 求简单方法
题目:给出一个不多于5位数的正整数,要求:求出他是几位数,分别输出每一位数字。。
我刚学的C 只学了到 if和switch 这2个东西
我写了一下好复杂 有简单的不  还有一个问题 a,b,c,d,e 不设long 数据算出来就不对。
main()
{int g;
 long  f,b,a,c,d,e;
scanf ("%ld",&f);
if (f<100000&&f>9999) g=5, printf("该数是%d位数\n",g) ;
else if (f<10000&&f>999) g=4, printf("该数是%d位数%d\n",g);
else if (f<1000&&f>99) g=3, printf("该数是%d位数%d\n",g) ;
else if (f<100&&f>9) g=2,   printf("该数是%d位数%d\n",g);
else if (f<10&&f>=0) g=1 , printf("该数是%d位数%d\n",g);

else printf ("不是5位数正整数\n") ;
printf ("该%d数分别是\n",g ) ;
switch(g)
{ case 5:a=f/10000;
printf("%d\n",a) ;
   b=(f-a*10000)/1000;
 printf("%d\n",b);
 c=(f-a*10000-b*1000)/100 ;
 printf("%d\n",c);
 d=(f-a*10000-b*1000-c*100)/10;
 printf("%d\n",d);
 e=f-a*10000-b*1000-c*100-d*10;
 printf("%d\n",e); break;
case 4:a=f/1000,
printf("%d\n",a) ;
 b=(f-a*1000)/100;
 printf("%d\n",b);
 c=(f-a*1000-b*100)/10 ;
 printf("%d\n",c);
 d=f-a*1000-b*100-c*10;
 printf("%d\n",d);  break;
 ...(case 3.. case  2  case 1  省略?...........

}}

[[it] 本帖最后由 liusf1988 于 2008-12-1 21:09 编辑 [/it]]
搜索更多相关主题的帖子: 初学 
2008-11-30 22:41
liusf1988
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-11-30
收藏
得分:0 
回复 第3楼 dream19850911 的帖子
这道题目只可用到 if  和switch
不过 while (x)
    {
        x /= 10;
        i++;
    }
用这个求X是几位数 真的精辟。。
不过当数在55537-64536时 数据就会是4位数
我用win tc 运行的  不知道有什么办法解决这数据溢出问题吗 ?

[[it] 本帖最后由 liusf1988 于 2008-12-2 17:48 编辑 [/it]]
2008-12-01 17:05
liusf1988
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-11-30
收藏
得分:0 
回复 第2楼 songsfly 的帖子
谢谢
不过我写的哪个为什么a,b,c,d,e为int时算出来的数据是错的 ????
2008-12-01 17:08
liusf1988
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-11-30
收藏
得分:0 
回复 第2楼 songsfly 的帖子
运行时当x>32767时得出来的数据就不对。。  
把int 该为long 形 数据也不对 这是哪出错了哦??

[[it] 本帖最后由 liusf1988 于 2008-12-1 20:56 编辑 [/it]]
2008-12-01 17:12
liusf1988
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-11-30
收藏
得分:0 
回复 第8楼 weihua 的帖子
。。。。。。说只可以用 if  ,  switch
而且  运行 当X大于32767时 数据就会错误 。。。。

[[it] 本帖最后由 liusf1988 于 2008-12-1 21:04 编辑 [/it]]
2008-12-01 20:39
liusf1988
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-11-30
收藏
得分:0 
回复 第14楼 luoxiaohua27 的帖子
我用的WIN TC运行 当数据大于32767时 输出就会错误
 int的范围是-32768-32767
2008-12-02 17:32
快速回复:初学C 求助题目:给出一个不多于5位数的正整数,要求:求出他是几位数 ...
数据加载中...
 
   



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

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