解题思路:

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

5年前 回复TA
#include<stdio.h>
int main()
{
    int a,b,c,d;
    char s[5];
    scanf("%d",&a);
    sprintf(s,"%d",a);
    b=strlen(s);
    printf("%d\n",b);
    for(c=0;c<b;c++)
    {
    	printf("%c",s[c]);
	}
	printf("\n");
	for(c=b-1;c>=0;c--)
	{
		printf("%c",s[c]);
	}
	printf("\n");
	return 0;
}

为啥运行错误?各位大佬
柯马马 5年前 回复TA
@柯马马 temp/10=0; while()循环结束
王石石 5年前 回复TA
@柯马马 while(temp)这是什么意思?,,,,,原谅我小白
柯马马 5年前 回复TA
@mingfu1002 指针不能赋值常量,指针不是数组。数组不是指针。把指针p 指向一个数组就可以了
柯马马 5年前 回复TA
#include<stdio.h>

int main()
{
	int number,i,count = 0,num = 0,temp,NUm[5];

	scanf("%d",&number);
	temp = number;
	
	while(temp)
	{
		count =count*10+temp%10;
		NUm[num] = temp%10;
		temp/=10;
		num++;
	}
	printf("%d\n",num);
	for( i=num-1;i>0;i-- )
	{
		printf("%d ",NUm[i]);
	}
	printf("%d\n",NUm[i]);
	printf("%d\n",count);
	
	return 0;
}
无尽可 5年前 回复TA
@王九蛋 等于这个数本身那为什么要减呢
砂砾成岩兮 5年前 回复TA
@冉冰 你在想屁吃
半个包子 5年前 回复TA
@冉冰 加油
yl 5年前 回复TA
@王九蛋 任何一个数的ASCII值减去48就等于这个数本身
yl 5年前 回复TA
@王九蛋 看一下C语言ascll码值