解题思路:

在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
不是很懂为什么要将temp减48(字符0的ASCII码是48)
mkdir 5年前 回复TA
@达人 帮你改了下#include<stdio.h> #include<string.h>  int main(void) {      int n,i = 0,j = 0;     int num; 	int a[5]; 	scanf("%d", &n); 	 	while(n != 0){ 		a[i] = n % 10;  		n = n / 10; 		 		i ++;  	}  	printf("%d\n",i);               //输出位数   	num = i; 	 	for (j = num - 1; j >= 0; j --) 		printf("%d ",a[j]);	 	putchar('\n'); 	for (j = 0; j <= num - 1; j++) 		printf("%d",a[j]);  	 	return 0; }
杨少 5年前 回复TA
@达人 想法不错,不过这个是错的
杨少 5年前 回复TA
@达人 窝草  可以可以
茧枫 5年前 回复TA
@冉冰 佩服佩服
谋刘 5年前 回复TA
@达人 666
风芳逆 5年前 回复TA
@达人 牛逼
mingfu1002 5年前 回复TA
#include <stdio.h>
int main(int argc, char ** argv)
{
    int num;
    int i, j;
    int * p;

    i = 0;

    scanf("%d", &num);

    while(num != 0)
    {
        *p = num % 10;
        num /= 10;
        p++;
        i++;
    }

    for(j=0; j<i; j++)
    {
        printf("%d ", *(p-j-1));
    }
    putchar('\n');

    printf("%d\n", i);
    for(j=i; j>0; j--)
    {
        printf("%d", *(p-j));
    }
    putchar('\n');

    return 0;
}
借楼问问题, 我这个写法在本地编译没有问题,可是网站老师提示我运行时错误,,大佬们帮忙解答一下,非常感谢!
冉冰 5年前 回复TA
我也一定会写出 ,这样让人 ,恍然大悟的代码
kirito 5年前 回复TA
#include "stdio.h"
int main()
{
	int a[5],c;
	int i=0,count=0;
	while((c=getchar())!='\n')
	{	
		a[i]=c-48;
		count++;
		i++;
		
	}
	printf("%d\n",count);

	for(int j=0;j<i;j++)
	{
		if(j!=i-1)
		   printf("%d ",a[j]);
		else
			printf("%d\n",a[j]);
	}
	for(int j=4;j>=0;j--)
	{
		printf("%d",a[j]);
	}
	return 0;

}
大佬们这个哪里有问题啊,说我运行错误50%