解题思路:

在for循环中用getchar()接收输入的数字字符,并将其ASCII码赋值给temp(temp的数据类型为int),temp==10时(换行“\n”的ASCII码是10)判断输入结束跳出循环,未输入换行前则用count++统计位数,并将temp减48(字符0的ASCII码是48)后赋值给数组储存。
注意事项:

字符0的ASCII码是48,换行“\n”的ASCII码是10,输出第二行时最后一个数特殊处理。

参考代码:

#include <stdio.h>
int main()
{
    int i,count=0,x[5];             //count统计位数,x[5]储存数字
    for (i=0;i<5;i++)
    {
        int temp=0;
        temp=getchar();             //temp临时储存数字字符的ASCII码
        if (temp==10) break;      //输入换行\n后跳出for循环
        count++;
        x[i]=temp-48;               //字符0的ASCII码是48
    }
    printf("%d\n",count);
    for (i=0;i<=count-2;i++) printf("%d ",x[i]);
    printf("%d\n",x[i]);
    for (i=count-1;i>=0;i--) printf("%d",x[i]);
    return 0;
}


点赞(133)
 

0.0分

194 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 179 条评论

wahyhoo 5年前 回复TA
#include <stdio.h>
int main (void)
{
    int x=0;
    scanf("%d",&x);   
    while(x>100000)
    {
        scanf("%d",&x); 
    }
        int i=1,b=x,c=x;
        int m,n=1;
        while(b>1)
        {
            b/=10;
            i++;
            n*=10;
         }
        printf("%d\n",i);
        while(c>1)
        {   
            printf("%d ",c/n); 
            c%=n;
            n/=10;
         }    
       printf("\n");
        while(i>0)
        {
            i--;
            printf("%d",x%10);
            x/=10;  
         }
        
    return 0;
}
5049 5年前 回复TA
@陈玕 第15行输出的是最后一个数,因为题目说最后一个数后面不能有空格,所以他14行的for循环只输出到count-1位数,也就是本题的第4位数.15行已经不属于for循环了
陈玕 5年前 回复TA
在第十五行中为什么是x【i】,而且这一行应该也不是for循环中的循环体呀
想你 5年前 回复TA
#include<stdio.h>
int main()
{
	long int x;
	int sum=0,a;
	int m=0,n=0,v=0,c=0;
	scanf("%d",&x);
	a=x;
	while(x>0)
	{
		x=x/10;
		sum=sum+1;
	}
	printf("%d\t%d\n",a,sum);

	if(sum==5)
	{
		m=a/10000;
		printf("%d ",m);
		a=a%10000;
		sum=sum-1;
	}
	if(sum==4)
	{
		n=a/1000;
		printf("%d ",n);
		a=a%1000;
		sum=sum-1;
	}
	if(sum==3)
	{
		v=a/100;
		printf("%d ",v);
		a=a%100;
		sum=sum-1;
	}
	if(sum==2)
		{
			c=a/10;
			printf("%d ",c);
			a=a%10;
			sum=sum-1;
		}
	if(sum==1)
		printf("%d\n",a);
printf("%d%d%d%d%d\n",a,c,v,n,m);
			


return 0;
}
想你 5年前 回复TA
@ZZCC #include<stdio.h> int main() { 	long int x; 	int sum=0,a; 	int m=0,n=0,v=0,c=0; 	scanf("%d",&x); 	a=x; 	while(x>0) 	{ 		x=x/10; 		sum=sum+1; 	} 	printf("%d\t%d\n",a,sum); 	if(sum==5) 	{ 		m=a/10000; 		printf("%d ",m); 		a=a%10000; 		sum=sum-1; 	} 	if(sum==4) 	{ 		n=a/1000; 		printf("%d ",n); 		a=a%1000; 		sum=sum-1; 	} 	if(sum==3) 	{ 		v=a/100; 		printf("%d ",v); 		a=a%100; 		sum=sum-1; 	} 	if(sum==2) 		{ 			c=a/10; 			printf("%d ",c); 			a=a%10; 			sum=sum-1; 		} 	if(sum==1) 		printf("%d\n",a); printf("%d%d%d%d%d\n",a,c,v,n,m); 			 return 0; }
kojo 5年前 回复TA
@kojo #include<stdio.h> int qiushu() { int i,d=0,n,m,k=0,num[4]; scanf("%d",&n); for(i=n;i;k++)i/=10; printf("%d\n",k); for(i=0;i<k;i++){num[i]=n%10;n/=10;} for(i=(k-1);i>0;i--)printf("%d ",num[i]); printf("%d",num[0]); //printf("\b\n"); //此处不用\b,\b为输出左移一位操作、退格怎么不行呢???? printf("\n"); m=k; for(i=1;m>0;m--){d+=num[m-1]*i;i*=10;}//求数,所以还是输出数吧@_@ printf("%d\n",d); scanf("%d",&m); return 0; }
kojo 5年前 回复TA
第二行的特殊处理,我用\b退格处理怎么不行呢-_-+_+
三尺冰 5年前 回复TA
#include<stdio.h>

int main(){
	int n;
	int end = 0;
	int num[5] = {0};
	int isError(int n);    //判断输入的数是否正确,是则返回False
	void numDevide(int n, int num[]);     //分离输入的数字并存入一个数组
	int getEndIndex(int num[]);      //得到该数组从后往前第一个不为零元素的位置
	void dispReverse(int end, int num[]);    //正逆序显示该数字
	printf("Input the number from 0-99999:\n");
	scanf("%d", &n);
	while(isError(n)){
		if(n == 0){
			//如果是0,同样返回错误,但直接将它打印
   			printf("%d\n", n);
   			printf("%d\n", n);
   			printf("%d\n", n);
   			break;
		}
		else{
			printf("Input error, retry please:\n");
			scanf("%d", &n);
		}
	}
	numDevide(n, num);
	en
秒度人生 5年前 回复TA
@阿朁 这个厉害
阿朁 5年前 回复TA
#include<stdio.h> 
#include<string.h> 
int main() 
{   
    char a[100],i; 
    scanf("%s",a); 
    printf("%lu\n",strlen(a)); 
    for( i=0; i<strlen(a); i++){
        printf("%c ",a[i]);
    }
    printf("\n");
    for( i=strlen(a)-1; i>=0; i--){
        printf("%c",a[i]);
    }
    return 0;
}