C语言成长之路31:while循环获取键盘输入
声明:本笔记基于 B站UP主「来自程序员的暴击」的 「C语言成长之路」中对应课程;
while循环语法结构:
1 while (表达式) 2 { 3 语句; 4 }
当表达式为真时,则执行花括号里面的语句,直到表达式不为真;
直接上练习操作一下~
接收用户输入,如果用户输入的是大写字母,则转换成小写,反之转为大写;
如果是输入数字,则原封不动输出;
如果输入空格,则输出space
附上一个呵呵老师的写法:
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <limits.h> 4 #include <Windows.h> 5 6 void judge(char data){ 7 while (1){ 8 getchar(); 9 if (data >= 'A' && data <= 'Z'){ 10 printf("%c\n",data += 32); 11 } else if (data >= 97 && data <= 122){ 12 printf("%c\n",data -= 32); 13 } else if (data >= 48 && data <= 57){ 14 printf("%c\n",data); 15 } else if (data == 32){ 16 printf("space\n"); 17 } else { 18 printf(" I dont know what are you talking about."); 19 } 20 } 21 } 22 23 void main(){ 24 /* C语言成长之路31:while循环获取键盘输入 25 * 26 */ 27 char data = getchar(); 28 judge(data); 29 system("pause"); 30 };
这个写法有点问题,main函数执行之后,data接收到输入之后,就会带着这个data去进入judge的循环了把,judge里面的getchar()也只是做停顿作用?毕竟没有赋值给变量,所以输入的data是什么,judge函数就会一直按照这个最初输入的值去循环
然后我在这个基础上进行了修改:不知道为啥,无论输入什么,最后都会打印
I dont know what are you talking about.
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <limits.h> 4 #include <Windows.h> 5 6 void judge(char data){ 7 if (data >= 'A' && data <= 'Z'){ 8 printf("%c\n",data += 32); 9 } 10 else if (data >= 97 && data <= 122){ 11 printf("%c\n",data -= 32); 12 } 13 else if (data >= 48 && data <= 57){ 14 printf("%c\n",data); 15 } 16 else if (data == 32){ 17 printf("space\n"); 18 } 19 else { 20 printf(" I dont know what are you talking about.\n"); 21 } 22 } 23 24 void main(){ 25 /* C语言成长之路31:while循环获取键盘输入 26 * 27 */ 28 while (1){ 29 printf("Please input something if you like~ \n"); 30 char data = getchar(); 31 judge(data); 32 Sleep(1000); 33 } 34 };