| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 545 人关注过本帖
标题:关于每位数的问题
只看楼主 加入收藏
淡蓝星情
Rank: 2
等 级:论坛游民
帖 子:9
专家分:14
注 册:2011-12-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
关于每位数的问题
给一个不多于五位的正整数~
要求
1。它是几位数
2.分别打出每一个数
3.倒序打出每一个数~
现在问题一已解决
问题二和三不知为什么最后结果总是一个很大的数
printf ("测试%ld\n%ld\n%ld\n%ld\n%ld\%ld\n",a,b,c,d,e);
是我测试值用的~按说a,b,c,d,e都是一位数的
可结果却都是一个很大的数~
哪点错了?
求解~
谢谢~~
程序代码:
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
    long x;
    int a,b,c,d,e;
    scanf ("%ld",&x);
    if (x>9999)
    printf("它是五位数");
    else if (x>999)
    printf("它是4位数");
    else if (x>99)
    printf("它是3位数");
    else if (x>9)
    printf("它是2位数");
    else printf("它是一位数");
    a=x/10000;
    b=(int)(x-a*10000)/1000;
    c=(int)(x-a*10000-b*1000)/100;
    d=(int)(x-a*10000-b*1000-c*100)/10;
    e=(int)(x-a*10000-b*1000-c*100-d*10);
     printf ("测试%ld\n%ld\n%ld\n%ld\n%ld\%ld\n",a,b,c,d,e);
    printf ("正%d%d%d%d%d%d",a,b,c,d,e);
    printf("倒%d%d%d%d%d",e,d,c,b,a);    
搜索更多相关主题的帖子: 测试 正整数 color 
2011-12-22 06:38
strivelong87
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:68
专家分:159
注 册:2011-11-24
收藏
得分:2 
感觉有点乱乱的啊
2011-12-22 07:58
hengde_li
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:131
专家分:178
注 册:2010-1-15
收藏
得分:12 
你多了%ld和%d了。

#include "stdio.h"
void main()
{
    long x;
    int a,b,c,d,e;
    printf("请输入一个五位以内的数:\n");
    scanf ("%ld",&x);
    if (x>9999)
    printf("它是五位数\n");
    else if (x>999)
    printf("它是4位数\n");
    else if (x>99)
    printf("它是3位数\n");
    else if (x>9)
    printf("它是2位数\n");
    else printf("它是一位数\n");
    a=x/10000;
    b=(int)(x-a*10000)/1000;
    c=(int)(x-a*10000-b*1000)/100;
    d=(int)(x-a*10000-b*1000-c*100)/10;
    e=(int)(x-a*10000-b*1000-c*100-d*10);
    printf ("测试\t%ld\t%ld\t%ld\t%ld\t%ld\n",a,b,c,d,e); //这一行原来你多了%ld
    printf ("正\t%d%d%d%d%d\n",a,b,c,d,e);//这一行原来你多了%d
    printf("倒\t%d%d%d%d%d\n",e,d,c,b,a);
}
2011-12-22 08:48
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
收藏
得分:6 
printf ("测试%d\n%d\n%d\n%d\n%d\n",a,b,c,d,e);正如上面所说,多了一个输出,而且abcde是int,应当用d,而不是用ld,ld是long的
printf ("正%d%d%d%d%d",a,b,c,d,e);
printf("倒%d%d%d%d%d",e,d,c,b,a);   

2011-12-22 10:52
淡蓝星情
Rank: 2
等 级:论坛游民
帖 子:9
专家分:14
注 册:2011-12-21
收藏
得分:0 
回复 3楼 hengde_li
谢谢~原来只能多了一个输出就把结果弄得乱七八糟~真无奈了~
2011-12-22 19:07
狼狐之王
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-12-22
收藏
得分:0 
#include<stdio.h>
void main()
{
    int n,len,i=1,a[20];
    printf("请输入一个数:");
    scanf("%d",&n);
    while(n!=0) //这一步比你的好,这样的话就没有几位数的限定,更加的方便,而且如果要改成其他进制数的话只要将10改成几就好了//
    {
        a[i]=n%10;
        n=n/10;
        len=i;         
        i++;
    }
    printf("\n 这个数是%d位数",len);
    printf("\n分别打出每一个数: ");
        for(i=len;i>0;i--)
        printf("%d ",a[i]);
    printf("\n逆序打出每一个数: ");
         for(i=1;i<=len;i++)
        printf("%d ",a[i]);
}
2011-12-22 20:24
快速回复:关于每位数的问题
数据加载中...
 
   



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

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