| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 22989 人关注过本帖, 1 人收藏
标题:初学C 求助题目:给出一个不多于5位数的正整数,要求:求出他是几位数,分别 ...
只看楼主 加入收藏
liusf1988
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-11-30
收藏(1)
 问题点数:0 回复次数:15 
初学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
songsfly
Rank: 1
来 自:厦门大学
等 级:新手上路
帖 子:44
专家分:0
注 册:2008-11-25
收藏
得分:0 
程序代码:
#include "stdio.h"
void main()
{
    int x,a,b,c,d,e,n;
    printf("请输入一个不多于5位的正整数\n");
    scanf("%d",&x);
    a=x/10000;
    b=x/1000-a*10;
    c=x/100-a*100-b*10;
    d=x/10-a*1000-b*100-c*10;
    e=x-a*10000-b*1000-c*100-d*10;
    if(a!=0)n=5;
    else if(a==0&&b!=0)n=4;
    else if(a==0&&b==0&&c!=0)n=3;
    else if(a==0&&b==0&&c==0&&d!=0)n=2;
    else n=1;
    if(a>9)printf("输入的数大于5位\n");
    else
    printf("该数字是%d位数,万位%d,千位%d,百位%d,十位%d,个位%d\n",n,a,b,c,d,e);
}
2008-12-01 12:43
dream19850911
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-12-1
收藏
得分:0 
#include "stdio.h"
void main()
{
    int x;
    int i = 0;
    printf("请输入一个不多于5位的正整数\n");
    scanf("%d",&x);
    while (x)
    {
        x /= 10;
        i++;
    }
    switch (i)
    {   
    case 1:...;
    case 2:...;
    ...
    }
}
2008-12-01 14:51
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
weihua
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-12-1
收藏
得分:0 
回复 第3楼 dream19850911 的帖子
这个还不错!!
2008-12-01 20:13
weihua
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-12-1
收藏
得分:0 
#include "stdio.h"
void main()
{
    int x;
    int i = 0;
    char a[10];
    printf("请输入一个不多于5位的正整数\n");
    scanf("%d",&x);
    while (x)
    {
        a[i]=x%10+48;
        x /= 10;
        i++;
    }
     a[i]='\0';
    for (i=0;a[i]!='\0';i++)
          printf("%c",a[i]);
}
输出的结果是反向的,要想正向输出还得先求出数的长度。如果用递归就简单多了!!!
2008-12-01 20:30
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
zrf625278699
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-10-14
收藏
得分:0 
#include<stdio.h>
void print(int a)
{
    int sum=0;
    do
    {
        int s;
        sum++;

        s=a%10;
        printf("%d\n",s);
        a=a/10;
    }while(a>0);
    printf("%d\n",sum);
}
int main()
{
    int n;

    while(1==scanf("%d",&n))
        print(n);
    return 0;
}
2008-12-01 21:23
快速回复:初学C 求助题目:给出一个不多于5位数的正整数,要求:求出他是几位数 ...
数据加载中...
 
   



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

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