| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 14650 人关注过本帖
标题:【输入一个不多于5位数的正整数,输出它是几位数,逆序打出各位数字。】
只看楼主 加入收藏
zxd675816777
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:252
专家分:631
注 册:2012-2-3
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:21 
【输入一个不多于5位数的正整数,输出它是几位数,逆序打出各位数字。】
下面是小弟写的一个程序,但是觉得有点儿臃肿了,希望各位大侠提供点儿改进思路,如果贴出自己的更好哈,谢谢了!

#include<stdio.h>
#include<math.h>
int F(int);
void re_print(int);
int main(void)
{
int n;
printf("Please enter a number(n<=99999):\n");
while(scanf("%d",&n)!=1||n>99999)   //这个是为了排除输入非数字或者六位数及以上的,但是当输入为字母的时候为什么会无限循环额?
{
printf("Please enter a number(n<=99999):\n");
}
printf("%d is %d_digit\n",n,F(n));
re_print(n);
printf("\n");
return 0;
}

//这个函数是判断为几位数的。
int F(int n)
{
int i,j;
for(i=1;i<=5;i++)
if((int)(n/pow(10,i))==0)
{
j=i;
break;
}
return j;
}

//这个函数是逆序输出的。
void re_print(int n)
{
int c;
if(n!=0)
{
c=n%10;
n=(int)(n/10);
printf("%d",c);
re_print(n);
}
}

[ 本帖最后由 zxd675816777 于 2012-2-8 22:30 编辑 ]
搜索更多相关主题的帖子: void 字母 include number 正整数 
2012-02-08 20:21
zxd675816777
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:252
专家分:631
注 册:2012-2-3
收藏
得分:0 
还有就是,当输入一较大的数的时候,会发生运行错误,因为学的基础不是很好,希望大家能讲讲额。
下面是运行的一个界面。
图片附件: 游客没有浏览图片的权限,请 登录注册

数学好难!
2012-02-08 20:54
回首依依
Rank: 7Rank: 7Rank: 7
来 自:苏州
等 级:黑侠
威 望:1
帖 子:193
专家分:524
注 册:2011-12-3
收藏
得分:3 
#include"stdio.h"
#include"math.h"
int main()
{
    int a,x,b,t;
    printf("Please input anumber:");
    scanf("%d",&a);
    x=(a==0?1:log10(a)+1);/*默认0为1位*/
    printf("%d\n",x);
    for(t=a,b=0;t;t/=10)
    {
        b*=10;
        b+=t%10;
    }
    printf("%d",b);
}
2012-02-08 22:44
zxd675816777
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:252
专家分:631
注 册:2012-2-3
收藏
得分:0 
回复 3楼 回首依依
谢谢你哈,那个程序实现范围内的时候可以很好解决,但是如果用户输入大于六位或者是字符的时候就不能很好的提示返回输入了额。。。

数学好难!
2012-02-08 22:56
C_596322153
Rank: 6Rank: 6
来 自:徽州
等 级:侠之大者
帖 子:182
专家分:466
注 册:2012-1-10
收藏
得分:4 
程序代码:
#include<stdio.h>

int main()
{
   int i,temp,utemp;
   printf("please input number:(0<temp<=99999)\n");
   scanf("%d",&temp);
   if(temp>0&&temp<=99999)   //判断五位正数
     { 
         utemp = 0;
       for(i = 0;temp>0;temp /= 10,i++)
       {
         utemp *= 10;
         utemp = utemp+temp%10;
       }
    
      printf("%d,%d\n",i,utemp);
     }
   else printf("input error!");
}
2012-02-10 12:35
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:3 
程序代码:
#include  <stdio.h>
#include  <windows.h>
#include  <stdlib.h>

int  main( void )
{
    int Number, Count, Array[6] = { 0 }, i;
    char ch;
  
    while (888)
    {
        Count = 0;
        printf("Please enter an integer between 1 and 99999:");
        do
        {
            scanf("%d", &Number);
        }while( Number < 1 || Number > 99999);

        while( Number != 0)
        {
            Array[Count++] = Number % 10;
            Number /= 10;   
        }

        printf( "This number contains %d digits.\n", Count );
        printf( "The reversed order is: " );
        for( i = 0; i < Count; i++)
            printf( "%-2d", Array[i] );
            putchar(10);

        getchar();
        printf("Do you want to continue? (Y / N):");
        ( ( ch = getchar() ) == 'N' || ( ch = getchar() ) == 'n' ) ? exit(0) :  printf( "Continue!\n" );
    }
   
    return  0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册
a integer 应该是an integer

[ 本帖最后由 有容就大 于 2012-2-10 13:51 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-02-10 12:57
a5276815
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2012-2-7
收藏
得分:0 
新手学习.
2012-02-10 15:09
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:3 
你们写的那个也叫代码?

程序代码:
#include <stdio.h>

void func(const char * s)
{
    static int bits=1;
    if ( s[1] == '\0')
    {
        printf("This number contains %d digits\n", bits);
    }
    else
    {
        bits ++;
        func( & s[1]);
    }
    printf("%c", s[0]);
}

int main()
{
    char buffer[1001];
    scanf("%s", buffer);
    func(buffer);

}


[ 本帖最后由 Devil_W 于 2012-2-10 18:21 编辑 ]
2012-02-10 15:19
yxiangyxiang
Rank: 3Rank: 3
来 自:/\/\/\/\/
等 级:论坛游侠
帖 子:130
专家分:186
注 册:2012-1-29
收藏
得分:3 
#include <stdio.h>
int    i=0;   
void fun( int x,char ch[] )
{    int    n=i;   
        
    if( x==i++ )
        putchar( ch[n] );
    else
    {
        fun( x, ch);
        putchar( ch[n] );
    }
}

int main( void )
{
    int    n=10;
    char    ch[100];
   
    while( n>5 )
    {
        gets( ch );
        n = strlen( ch );
    }
    printf("%d\n", n);
    fun( n-1, ch);
   
   
    return 0;
}
2012-02-10 15:21
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:3 
还是有人想到用字符串处理的

                                         
===========深入<----------------->浅出============
2012-02-10 16:15
快速回复:【输入一个不多于5位数的正整数,输出它是几位数,逆序打出各位数字。 ...
数据加载中...
 
   



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

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