解题思路:

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

又年i 5年前 回复TA
@又年i 后来查了ASCII表发现回车键的值是13,把temp==10换成13没啥问题,但是把getchar情况下的temp==13又出问题了
又年i 5年前 回复TA
我有一个疑问,如果将getchar换成getch,为啥跳不出循环,必须输满五个数才能跳出,求解~
又年i 5年前 回复TA
@李子函 加一个do while循环 条件是count==0 就行了
饮鸩止渴 5年前 回复TA
@阿朁 这个算法有问题,题目要求的 是 输出的 正序的五个数字, 最后一个后面不要带空格
林深见鹿 5年前 回复TA
#include<stdio.h>
int main()
{
    int a,t,i,j,c,m;
	scanf("%d",&t);
	c=t;
	if(t>=10000)j=5;
	else if(t>=1000)j=4;      /*学艺不精只能用死办法*/
	else if(t>=100)j=3;
	else if(t>=10)j=2;
	else j=1;
	m=j;
	printf("%d\n",j);
	for(i=10000;i>=1;i/=10)
	{
		if(a=t/i)
		{
			printf("%d",a);
			if(j)
			{
				printf(" ");
				j--;
			}
		}
		t=t%i; 
	}
	printf("\n");
	for(i=1;i<=m;i++)
	{
		a=c%10;
		printf("%d",a);
		c=c/10;
		if(c==0)break;
	}
}
十一 5年前 回复TA
@阿朁 这个才应该是最优解,简单易懂
编程cxk 5年前 回复TA
#include<stdio.h>
int main(int argc,const char *argv[])
{
	int x;
	scanf("%d",&x);
	int cnt=0;
	int y,mask=1;
	y=x;
	int d[5];
	while(y>0){
		d[cnt]=y%10;
		y/=10;
		cnt++;
		mask*=10;
	}
	mask/=10;
	printf("%d\n",cnt);
	int b;
	do{
		b=x/mask;
		printf("%d",b);
		if(mask>9){
			printf(" ");
		}
		x%=mask;
		mask/=10;
	}while(mask>0);
	printf("\n");
	int i;
	for(i=0;i<cnt;i++)printf("%d",d[i]);
	printf("\n");
	return 0;
}
jtyoui 5年前 回复TA
#include <stdio.h>

int main() {
    char a[6];
    int len;
    fgets(a,sizeof(a), stdin);
    len = 0;
    for (int i = 0; i <= 5; i++) {
        if (a[i] == '\0') len = i;
    }
    printf("%d\n", len);
    for (int i = 0; i < len; i++)  printf("%c ", a[i]);
    printf("\n");
    for (int i = len - 1; i >= 0; i--) printf("%c", a[i]);
    return 0;
}
JiamTan 5年前 回复TA
@阿朁 这一段厉害呀
达人 5年前 回复TA
#include<stdio.h>
int main()
{
  int x,y=0,a[5];
  
  scanf("%d",&x);
  
  while(x!=0){
      a[y]=x%10;
      x=x/10;
      y++;
  }
  
  printf("%d\n",y);
  
  printf("%d %d %d %d %d\n",a[0],a[1],a[2],a[3],a[4]);
  
  printf("%d%d%d%d%d\n",a[4],a[3],a[2],a[1],a[0]);
  
  
  return 0;
}