原题链接:[编程入门]数字的处理与判断
解题思路:
看过很多人的解题思路,都觉得太麻烦了,个人认为目前我的解题思路相对简单。
主要利用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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include<stdio.h> #include<conio.h> int main() { int b[5],a,n,m,i,j,k; i=0; printf("请输入一个数字:"); scanf("%d",&a); while(a) { m=a%10; a=a/10; b[i]=m; i++; } printf("%d\n",i); k=i; for(;i-1>=0;i--) printf("%-2d",b[i-1]); printf("\n"); for(j=0;j<k;j++) { printf("%d",b[j]); } getch(); return 0; }@c175565011 #include<stdio.h> int main() {int a,b,c,d,e,f; scanf("%d",&a); b=a/10000; c=a/1000%10; d=a/100%10; e=a%100/10; f=a%10; if((a/10000)>0) printf("%d\n",5); else if((a/1000)>0) printf("%d\n",4); else if ((a/100)>0) printf("%d\n",3); else if((a/10)>0) printf("%d\n",2); else if(a>0) { printf("%d\n",1);} printf("%d %d %d %d %d\n",b,c,d,e,f); printf("%d%d%d%d%d\n",f,e,d,c,b); return 0; }@c175565011 #include<stdio.h> int main() { int n,a1,a2,a3,a4,a5; scanf("%d",&n); a1=n%10; a2=n/10%10; a3=n/100%10; a4=n/1000%10; a5=n/10000; if(n>9999) n=5; else if(n>999) n=4; else if(n>99) n=3; else if(n>9) n=2; else n=1; printf("%d\n",n); printf("%d %d %d %d %d\n",a5,a4,a3,a2,a1); printf("%d%d%d%d%d\n",a1,a2,a3,a4,a5); return 0; }#include <stdio.h> #include <conio.h> main(){ int a[5]={0},n=0,i,ch; for(i=0;i<5;i++) { ch=0; ch=getche(); if(ch=='\r') { break; } n++; a[i]=ch-48; } printf("\n%d\n",n); for(i=0;i<n;i++){ printf("%d ",a[i]); } printf("\n"); for(i=n-1;i>=0;i--){ printf("%d",a[i]); } printf("\n"); }#include<stdio.h> int main() { int n,a1,a2,a3,a4,a5; scanf("%d",&n); a1=n%10; a2=n/10%10; a3=n/100%10; a4=n/1000%10; a5=n/10000; printf("%d %d %d %d %d",a5,a4,a3,a2,a1); putchar('\n'); printf("%d%d%d%d%d",a1,a2,a3,a4,a5); putchar('\n'); if(n>9999) n=5; else if(n>999) n=4; else if(n>99) n=3; else if(n>9) n=2; else n=1; printf("%d",n); return 0; } 我这个写反了 运行后显示:1 2 3 4 5 54321 5 顺着写就读不出来了 怎么解? 求指教 非常感谢!