解题思路:
看过很多人的解题思路,都觉得太麻烦了,个人认为目前我的解题思路相对简单。
主要利用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 人评分
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C++代码)(手动优化一下计算)浏览:1365 |
C语言训练-排序问题<2> (C++代码)浏览:935 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:702 |
【亲和数】 (C语言代码)浏览:541 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:648 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:642 |
哥德巴赫曾猜测 (C语言代码)浏览:2560 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:645 |
陶陶摘苹果2 (C语言代码)浏览:650 |
简单的a+b (C语言代码)浏览:587 |