神神马


私信TA

用户名:w3550320

访问量:16021

签 名:

等  级
排  名 3616
经  验 1780
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校
专  业 计算机

  自我简介:

解题思路:

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

主要利用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;
}

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

 

0.0分

21 人评分

  评论区

/**(编译错误)
	 给出一个不多于5位的整数,要求 
	 1、求出它是几位数
	 2、分别输出每一位数字
	 3、按逆序输出各位数字,例如原数为321,应输出123
	*/
#include <stdio.h>
#include "stdlib.h"
int main()
{
	int x,xf,numberI=0;
	scanf("%d",&x);
	
	xf=x;
	while(true)//计算位数 
	{
		xf/=10;
		numberI++;
		if(xf==0)
		{
			break;
		}	
	}
	printf("%d\n",numberI);
	
	
	xf=x; //初始化 
	for(int i=numberI;i>=1;i--) //取得每一位的值
	{
		int c=1;
		for(int j=1;j<=i-1;j++) //那一位在什么位置(个,十,百,千) 
		{ 
			c*=10;
		}
		int cnum=(xf/c)%10; 
	 printf("%d ",cnum);	
	}
	puts("");
	
	xf=x; //初始化 
	for(int i=1;i<=numberI;i++)
	{
	 printf("%d",xf%10);
	 xf/=10;	
	}
	puts("");
	return 0;
}
2018-09-17 13:14:22
你测试0结果是错误的
2018-08-09 13:11:09
什么回显特性??????没搞懂
2018-08-05 20:38:44
嗯,不该写成“int x[6]”吧!直接写成“int x[5]”就行了,形成习惯了以后编写大项目时,不知不觉比别人编的大了许多......
2018-08-02 21:45:59
嗯,不该写成“int x[6]”吧!直接写成“int x[5]”就行了,形成习惯了以后编写大项目时,不知不觉比别人编的大了许多......
2018-08-02 21:45:16
用devc++编译结果是有问题的,比如输入的数据不到5个,会出现莫名其妙的数
而且健壮性较差,输入非法字符,就完了
2018-07-31 20:06:44
这答案是错的吧
2018-07-10 19:32:09
惹不起惹不起
2018-06-20 16:39:49