原题链接:[编程入门]数字的处理与判断
解题思路:
看过很多人的解题思路,都觉得太麻烦了,个人认为目前我的解题思路相对简单。
主要利用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分
17 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
/**(编译错误) 给出一个不多于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; }