解题思路:
看过很多人的解题思路,都觉得太麻烦了,个人认为目前我的解题思路相对简单。
主要利用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分
22 人评分
/**(编译错误) 给出一个不多于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; }
嗯,不该写成“int x[6]”吧!直接写成“int x[5]”就行了,形成习惯了以后编写大项目时,不知不觉比别人编的大了许多......
AC1FLAG 2018-08-02 21:46:38 |
对不起,不小心多发了,浏览器出问题了
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:661 |
1005答案错误为什么浏览:1988 |
开心的金明 (C语言代码)浏览:563 |
分糖果 (C++代码)浏览:2728 |
A+B for Input-Output Practice (VI) (C语言代码)浏览:522 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:447 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:426 |
Manchester- IP判断(逐级排除法)浏览:3935 |
薪水计算 (C语言代码)浏览:1257 |
wu-C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:692 |
不记当年 2018-09-30 19:59:51 |
我和大佬的解题思路差不多
c175565011 2018-10-17 15:45:45 |
为什么我粘贴复制上去提交 提示说编辑错误?
9527 2019-05-15 20:40:53 |
思路很清晰。