解题思路:

看过很多人的解题思路,都觉得太麻烦了,个人认为目前我的解题思路相对简单。

主要利用getche()没有缓冲区的特性。当gerche()读到数字时,他并不回显在屏幕上,也不会把数据存入缓冲区,而是直接运行后面的程序,这导致用户每输入一个数字,就会循环一次.


注意事项: 

1.虽然你输入的是数字,但getche()读的是字母,'1'的ASCII码是49,后面需要赋值时,要-48。

2.由于getche()的回显特性,你需要在最终的出结果前将屏幕清空,也就是“空格”然后“退格”。


实例代码:

#include <conio.h>    //注意!网络编辑器找不到conio.h这个头文件,我在自己的编译器上可以成功!
#include <stdlib.h>
#include <stdio.h>

int main() {
	
	int n = 0;                                //设置n为位数。
	int x[6];			          //设置x[6]为每个位数的数字。
	for (int i = 1; i <= 6;i++)
	{
		int a = 0;
		a = getche();	                  //输入给a的数字是字符形式,所以后面需要减48。
		if (a=='\r')                      //因为不大于5,需要最后一位\r来判断输入结束。
		{
			printf("     \b\b\b\b\b");//由于getche()的特性,需要将回显清空。
			printf("%d\n", n);        //回显位数。
			break;
		}
		n++;
		x[i] = a-48;	                  
	}
	printf("%d  %d  %d  %d  %d\n",x[1],x[2],x[3],x[4],x[5]);//回显每个位数的数字。
	printf("%d%d%d%d%d\n",x[5],x[4],x[3],x[2],x[1]);        //反向回显数字。
	system("pause");
	return 0;
}

还有不懂的请在评论区留言

点赞(38)
 

0.0分

17 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 35 条评论

wa1ker 2年前 回复TA
@20级软工2班黄晨 你取余弄复杂了	a = n / 10000; 	b = (n % 10000) / 1000; 	c = (n % 1000) / 100; 	d = (n % 100) / 10; 	e = n % 10;这样就够了
瓜瓜 2年前 回复TA
@稳健ing printf("
")这是换行吧不是空格吧
放逐之刃 3年前 回复TA
@20级软工2班黄晨 错
一个小憨憨 4年前 回复TA
@20级软工2班黄晨 对
20级软工2班黄晨 4年前 回复TA
#include<stdio.h>
int main()
{
	int n, x=0, a, b, c, d, e;
	scanf("%d",&n);
	a=n/10000;
	b=((n%10000)/1000);
	c=(((n%10000)%1000)/100);
	d=((((n%10000)%1000)%100)/10);
	e=((((n%10000)%1000)%100)%10);
	for(x=0;n>0;x++)
	{
		n=n/10;
	}
	printf("%d\n",x);
	printf("%d %d %d %d %d\n",a,b,c,d,e);
	printf("%d%d%d%d%d",e,d,c,b,a);
	return 0;
}
这个简单点哈哈哈
4年前 回复TA
@奔跑的蜗牛 for(i=num-1;i>=0;i--) 	{ 		printf("%d ",a[i]); 	}这个输出的格式不对,题目要求输出最后一个数字后不空格
奔跑的蜗牛 4年前 回复TA
#include<stdio.h>
int main()
{
	int x,a[5],num=0,i=0;
	int sum=0;
	
	
	scanf("%d",&x);
	while(x!=0)
	{
		a[i]=x%10;
		x/=10;
		num++;
		i++;
	}
	for(i=0;i<num;i++){
		sum=sum*10+a[i];	
	}
	printf("%d\n",num);
	for(i=num-1;i>=0;i--)
	{
		printf("%d ",a[i]);
	}
	printf("\n%d",sum);
	
}
为什么说的答案错误;有大佬看一下吗;
如果输入是 50000,他的逆序是00005还是5??求解答
异梦 5年前 回复TA
@c175565011 你顺着写,n的值已经更改过了,不再是你输入的值,而是你赋予的个位数了
稳健ing 5年前 回复TA
为什么我的提交后一直的运行错误,但是我在自己的编辑器上能正常运行,怎么回事,有哪位大佬帮忙看一下
#include<stdio.h>
int main()
{
	int x;
	char a[4],b[4];
	int n=0;
	scanf("%d",&x);
	for(int i=0;i<=4;i++)
	{
		if(x>0)
		{
			a[i]=x%10;
			x=x/10;
			n+=1;
		}	
	}
	printf("%d\n",n);
	for(int j=n-1;j>=0;j--)
	{
		printf("%d ",a[j]);
	}
	printf("\n");
	for(int k=0;k<n;k++)
	{
		printf("%d ",a[k]);
	}
	return 0;
}
仙湖茶 5年前 回复TA
怎么我的格式错误了。。。。。。。。。。。。。。。?
#include<stdio.h>
int main()
{
    int i=0,count=0,temp;
    int a[5];
    
    for(i=0;i<5;i++)
    {
    	temp=getchar();
    	a[i]=temp-48;
    	count++;
	}
    	printf("%d\n",count);
   
		printf("%d  %d  %d  %d  %d",a[0],a[1],a[2],a[3],a[4]);
		printf("\n");
	for(i=4;i>=0;i--)
		printf("%d",a[i]);
    
        

		
    
    
        
    return 0;
        
    
}