| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 427 人关注过本帖
标题:C语言的一个小问题
只看楼主 加入收藏
lzcrainbow
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-3-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
C语言的一个小问题
初学C语言,一个课后题,要求是输入一个小于等于五位的数字,然后输出这个数是几位数,每一位的数字是多少,再输出这个数的逆序数,比如输入123,输出3位数,百位1,十位2,个位3 ,逆序数为321.自己编的,有错误。。。希望帮忙改一下。。谢谢



#include <stdio.h>
main()
{
    int a,*b,*c,*d,*e,*f,g,h,i,j,k;
    printf("输入一个<100000的正整数\n");
    scanf("%d",&a);
    if (a>99999) printf("重新输入\n");
    else if (10000<=a&&a<99999) b=&a;
    else if (1000<=a&&a<9999) c=&a;
    else if (100<=a&&a<999) d=&a;
    else if (10<=a&&a<99) e=&a;
    else f=&a;
    if (a=*b) printf("5位数\n");
    else if (a=*c) printf("4位数\n");
    else if (a=*d) printf("3位数\n");
    else if (a=*e) printf("2位数\n");
    else if (a=*f) printf("1位数\n");
   
    if (a=*b)
    {
        g=(*b%10000); printf("万位上的数字为%d\n",g);
        h=(*b-10000*g)%1000; printf("千位上的数字为%d\n",h);
        i=(*b-10000*g-1000*h)%100; printf("百位上的数字为%d\n",i);
        j=(*b-10000*g-1000*h-100*i)%10; printf("十位上的数字为%d\n",j);
        k=(*b-10000*g-1000*h-100*i-10*j)%1; printf("个位上的数字为%d\n",k);
    }
    else if (a=*c)
    {
        h=*c%1000; printf("千位上的数字为%d\n",h);
        i=(*c-1000*h)%10; printf("百位上的数字为%d\n",i);
        j=(*c-1000*h-100*i)%10; printf("十位上的数字为%d\n",j);
        k=(*c-1000*h-100*i-10*j)%1; printf("个位上的数字为%d\n",k);
    }
    else if (a=*d)
    {
        i=*d%100; printf("百位上的数字为%d\n",i);
        j=(*d-100*i)%10; printf("十位上的数字为%d\n",j);
        k=(*d-100*i-10*j)%1; printf("个位上的数字为%d\n",k);
    }
    else if (a=*e)
    {
        j=*e%10; printf("十位上的数字为%d\n",j);
        k=(*e-10*j)%1; printf("个位上的数字为%d\n",k);
    }
    else if (a=*f)
    {
        k=*f%1; printf("个位上的数字为%d\n",k);
    }
    printf("逆序数字为%d%d%d%d%d\n",k,j,i,h,g);
   
    return 0;
}
搜索更多相关主题的帖子: 正整数 C语言 
2011-04-12 18:21
性感
Rank: 2
等 级:论坛游民
帖 子:25
专家分:15
注 册:2011-3-20
收藏
得分:0 
else f=&a; 感觉程序太烦
2011-04-12 18:38
C梦天下
Rank: 2
等 级:论坛游民
帖 子:53
专家分:38
注 册:2011-4-10
收藏
得分:10 
程序代码:
/*题目:
给一个不多于五位的正整数.要求:一,求它是几位数.二.逆序打印出各位数字.
1.程序分析:
2.程序源代码:
*/
#include "stdio.h"
int main()
{
    long a,b,c,d,e,x;
    scanf("%ld",&x);
    a=x/10000;
    b=x%10000/1000;
    c=x%1000/100;
    d=x%100/10;
    e=x%10;
    if(a!=0) printf("there are 5,\n%ld,%ld,%ld,%ld,%ld",e,d,c,b,a);
    else if(b!=0) printf("there are 4,\n%ld,%ld,%ld,%ld",e,d,c,b);
    else if(c!=0) printf("there are 3,\n%ld,%ld,%ld",e,d,c);
    else if(d!=0) printf("there are 2,\n%ld,%ld",e,d);
    else if(e!=0) printf("there is 1,\n%ld",e);
    return 0;
}

2011-04-12 19:22
迷糊战神no1
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:59
专家分:129
注 册:2010-11-29
收藏
得分:0 
楼上的代码  挺好的  值得借鉴
2011-04-12 20:35
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:10 
楼主的if太复杂啦。
程序代码:
root@~ #cat 1.c
#include <stdio.h>

int main (void) {
        int n,m,p,c=0;
        int fun (int n);
        scanf("%i",&m);
        n=m;
        p=m;
        do {
                n%10;
                n/=10;
                c++;
        }while(n!=0);

        do {
                printf ("%i\n",m/fun(c));
                m%=fun(c);
                c--;
        }while(c!=0);

        do {
                printf ("%i",p%10);
                p/=10;
        }while(p!=0);

        printf ("\n");

        return 0;

}
int fun (int n) {
        int i,j;
        for(i=1,j=1;i<n;i++) j*=10;
        return j;
}
root@~ #./1
123456789
1
2
3
4
5
6
7
8
9
987654321
root@~ #

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-12 21:08
lzcrainbow
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-3-6
收藏
得分:0 
回复 5楼 ansic
可以把我那个改改么?谢了。。。。

No rain no rainbow!
2011-04-13 18:44
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
看数的低位就求余

看高位就除10的n次方  高地位以中间的位为界限

                                         
===========深入<----------------->浅出============
2011-04-13 18:54
快速回复:C语言的一个小问题
数据加载中...
 
   



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

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