解题思路:

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

好大的鱼 6年前 回复TA
@好大的鱼 在scanf的前面加上一个int a,b,c,e,F,E;我刚刚写漏了。
好大的鱼 6年前 回复TA
#include<stdio.h>
int main()
{
	scanf("%d",&E);
	a=E/10000%10;
	b=E/1000%10;
	c=E/100%10;
	d=E/10%10;
	e=E%10;
    F=a*1+b*10+c*100+d*1000+e*10000;
	printf("%d %d %d %d %d\n",a,b,c,d,e);
	printf("%d\n",F);
        return 0;
}
请问我这个程序哪里错了,为什么说答案错误?
Lee 6年前 回复TA
#include<stdio.h>
#include<math.h>
int main()
{
    int m=0,n;
    int s[10];
    int i=0;
    scanf("%d",&n);
    while(n)
    {
    	s[i++]=n%10;
    	n/=10;
    	m++;
	}
	printf("%d\n",m);
	while(i--)
	{
		printf("%d ",s[i]);
	}
	printf("\n");
	i+=1;
	while(m--)
	{
		printf("%d",s[i++]);
	}
       
    return 0;
}
怪小兽 6年前 回复TA
@gy 兄弟,你输入一个不是5位数的试试
李海阔 6年前 回复TA
#include <stdio.h>
int main()
{
	 int a, b=0, c[100];
	scanf("%d", &a);
	while (a > 0)
		{
		c[b] = a % 10;
			a /= 10;
			if (a == 0)
				break;
			b++;
		}
		printf("%ld\n", b+1);
		for (int i = b; i >=0; i--)
			printf("%d ", c[i]);
		printf("\n");
			for(int i=0;i<=b;i++)
		printf("%d", c[i]);
			printf("\n");
			return 0;
}
请问一下为什么输入的数字不能超过十位呢?需要修改哪里呢?
gy 6年前 回复TA
@gy 我想知道哪里错了
gy 6年前 回复TA
#include"stdio.h"
int main(){
  int a,b,c,d,e;
  int x;
  scanf("%d",&x);
  if(x>9999)
    printf("5\n");
		else if(x>999&&x<10000)
	printf("4\n"); 
		else if(x>99&&x<1000)
	printf("3\n"); 
		else if(x>9&&x<100)
	printf("2\n");
		else 
	printf("1\n");
  	 	a=x/10000;
   		b=x%10000/1000;
   		c=x%1000/100;
   		d=x%100/10;
   		e=x%10;
   printf("%d %d %d %d %d\n",a,b,c,d,e);
    while(x)
    {
        printf("%d ",x%10);
       x/=10;
	   }
    return 0;
}
JIA 6年前 回复TA
#include<stdio.h>
int main()
{
    long int number;
    int a,b,c,d,e,i;
    scanf("%ld",&number);
    if(number>9999)
    i=5;
    else if(number>999)
    i=4;
    else if(number>99)
    i=3;
    else if(number>9)
    i=2;
    else i=1;
    e=number/10000;
    d=(int)(number-e*10000)/1000;
    c=(int)(number-e*10000-d*1000)/100;
    b=(int)(number-e*10000-d*1000-c*100)/10;
    a=(int)(number-e*10000-d*1000-c*100-b*10);
    switch(i)
    {case 5:printf("%d %d %d %d %d",e d c b a);
    printf("%d%d%d%d%d",abcde);
    break;
    case 4:printf("%d %d %d %d",d c b a);
    printf("%d%d%d%d",abcd);
逸轩 6年前 回复TA
@MRCHIANG #include<stdio.h> #include<string.h> int main() { 	char a[10],i; 	scanf("%s",a); 	printf("%d\n",strlen(a)); 	for(i=0;i<strlen(a);i++) 	printf("%c ",a[i]); 	printf("\n"); 	for(i=0;i<strlen(a);i++) 	printf("%c",a[strlen(a)-i-1]); 	getchar();getchar(); 	return 0; }
苏海波 6年前 回复TA
@龚必叡 没毛病啊