解题思路:

在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 条评论

丙夜 4年前 回复TA
@王九蛋 @yyqxnpy 因为temp不是一个确定的数无法直接赋值给x[i],就用这种形式了。
114514 4年前 回复TA
#include<stdio.h>
int main()
{
    int m,i;
    int a[5]={0};
    int sum=0;
    int cnt=0;
    scanf("%d",&m);
    while(m>0){
        cnt++;
        i=m%10;
        m=m/10;
        a[cnt-1]=i;
        sum=sum*10+a[cnt-1];
    }
    printf("%d\n",cnt);     
    for(cnt--;cnt>=0;cnt--){
    printf("%d ",a[cnt]);
	}
    printf("\n");
    printf("%d\n",sum);
}
小怂 5年前 回复TA
@王九蛋 同问呐
在劫 5年前 回复TA
@柯马马 当输入为0时, 	输出为: 		0 		0 		-858993460 		0
钻石之心 5年前 回复TA
@钻石之心 while(numCount-- && sumNum1) 多打了个循环。。。。
钻石之心 5年前 回复TA
int num;
	int numCount = 0;
	int sumNum = 0;
	int sumNum1 = 0;
	int tempNum;
	scanf("%d",&num);
	 if(num <= 99999 && num) //判断用户输入的数字是否为5位数并且不为0 
	 {
	 	while(num)
	 	{
	 		sumNum *= 10;
	 		tempNum = num % 10;
	 		num /= 10;
	 		sumNum += tempNum;
	 		numCount++;
		 }
		 printf("%d\n",numCount);
		 sumNum1 = sumNum;
		while(numCount--)
		{
			while(sumNum1)
			{
				tempNum = sumNum1 % 10;
				sumNum1 /= 10;
				printf("%d ",tempNum);
			}
			
		}
		printf("\n%d\n",sumNum);
		 
	 }
	 else{
	 	printf("要求输入的数字长度小于等于五位数!");
	 }
312邓响芳 5年前 回复TA
@刘 sprintf是啥
一往而深 5年前 回复TA
@一往而深 本地DIE运行没问题的
一往而深 5年前 回复TA
#include<stdio.h>
int main()
{
    int a=0,m[10],temp=0;
    
    while(temp!=10)
    {
        temp=getchar();
        if(temp!=10)
       {
		 a++;
        m[a]=temp-48;
		};
	};
    printf("%d\n",a);
    for(int i=1;i<=a-1;i++)
    printf("%d ",m[i]);
    printf("%d\n",m[a]);
    for(int i=a;i>0;i--)
    printf("%d",m[i]);
}

大佬们求救,提示数组越界,指针异常??哪儿有问题呀
柯马马 5年前 回复TA
@柯马马 @845587687 temp/10=0; while()循环结束