【C程序设计教程实验】基础练习题(四)
2022/3/19 13:00:09
本文主要是介绍【C程序设计教程实验】基础练习题(四),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- 代码一:getchar()
- 代码二:输出字符 'A'
- 代码三:整型48对应字符'0' -----记忆常见整型与字符型 大小转换
- 代码四:getchar()与putchar()
- 代码五:域宽
- 代码六:还是 getchar()
代码一:getchar()
//getchar() //按照如下输入格式(其中<CR>代表回车,注意 回车也是一个字符)则输出结果是? //12<CR> //34<CR> #include <stdio.h> int main() { char a,b,c,d; //printf("请输入:\n"); scanf("%c%c",&a,&b); c=getchar(); d=getchar(); printf("输出如下:\n"); printf("%c%c%c%c\n",a,b,c,d); }
输出:
为何会出现上述结果呢?输入的 4 去哪儿了?
注意:
函数getchar()没有参数,函数的返回值就是从终端键盘读入的字符,一次只能读取一个字符。用户输入的字符被存放在键盘缓冲区中,包括回车符’\n’。但是,对于 scanf 函数,’\n’ 会触发 scanf 读取输入缓冲区的内容,但遇到 ‘\n’ 或空格 ’ ’ 会停止读取,而 getchar 会直接读取 ‘\n’ 和空格。
可以再加上如下测试语句:
#include <stdio.h> int main() { char a,b,c,d; //printf("请输入:\n"); scanf("%c%c",&a,&b); c=getchar(); d=getchar(); printf("输出如下:\n"); printf("%c%c%c%c\n\n",a,b,c,d); printf("-------------------------\n\n"); printf("测试:\n\n"); printf("a=%c\n\n",a); printf("b=%c\n\n",b); printf("c=%c\n\n",c); printf("d=%c\n\n",d); }
结果为:
也就是说,用户输入12和回车之后,’‘c=gerchar();"这个语句就已经将回车符读取了,那么自然,用户输入的3被’‘d=getchar();’'这个语句所读取。
所以本题的结果正如看到的那样,12 回车符(看不见,即换行了)3(在下一行)
代码二:输出字符 ‘A’
//以下不能输出字符A的语句是? //已知字符A的ASCII码值为65,字符a的ASCII码值为97 #include <stdio.h> int main() { printf("%c\n\n",'a'-32);//97-32=65 输出整型数字65对应的字符A printf("%d\n\n",'A'); //显然输出为字符A对应的整型数字65 printf("%c\n\n",65);//输出整型数字65对应的字符A printf("%c\n\n",'B'-1);//66-1=65 输出整型数字65对应的字符A }
输出:
原因显然:
代码三:整型48对应字符’0’ -----记忆常见整型与字符型 大小转换
//若运行程序时从键盘输入 48<回车>,则输出结果是? #include <stdio.h> int main() { char c1,c2; //48~57对应字符'0'到'9' scanf("%d",&c1); //需要知道48对应的字符为'0' c2=c1+9; //那么,48+9=57,故c2='9' printf("%c%c\n\n",c1,c2); //故输出 09 }
输出:
注释已经说明。另外,字符'A' ~ 'Z' 对应 整型 65 ~ 90
。字符'a' ~ 'z' 对应 整型 97 ~ 122
,每一个小写字母都比其对应的大写字母 大32。字符'0' ~ '9' 对应 整型 48 ~ 57
。这是初学者应当记忆的基础知识。
代码四:getchar()与putchar()
//输入 YES<回车> 则结果是? #include <stdio.h> int main() { char a,b,c; a=getchar();//从键盘输入一个字符,送给字符变量a b=getchar();//从键盘输入一个字符,送给字符变量b c=getchar();//从键盘输入一个字符,送给字符变量c putchar(a);//输出变量a的值 putchar(b);//输出变量b的值 putchar(c);//输出变量c的值 putchar('\n');//换行 return 0; }
输出:
简析
:在连续输入“YES”并按回车键后,字符才被送到计算机中,然后输出“YES”3个字符。
说明
:在用键盘输入信息时,并不是在键盘上按一次键,对应的字符就会立即输入到计算机中。输入的字符先暂存在键盘缓冲器中,只有按了回车键,才把它们一起输入到计算机中,然后按先后顺序分别赋给相应的变量。
如果:运行本程序时,输入一个字符立马按回车键,会得到什么结果呢?本例中,如果输入字符Y后马上按回车键,再输入字符E后也马上按回车键,则会分别输出Y和E。如下所示:
这里,第1行输入的不是一个字符Y,而是两个字符:Y和换行符
,其中字符Y赋给了变量a,换行符赋给了变量b。第2行接着输入两个字符,E和换行符,其中字符E赋给了变量c,换行符没有赋给任何变量
。在用putchar()函数输出变量a,b,c的值时,就输出了字符Y,然后输出换行,再输出字符E,然后执行putchar(’\n’),换行。
另外注意,执行getchar()函数不仅可以从输入设备获取一个可显示的字符,还可以获取在屏幕上无法显示的字符,如控制字符。
代码五:域宽
//执行以下程序,输出结果是? #include <stdio.h> int main() { int x=12; double y=3.1415926; printf("%d%10.6f\n",x,y); }
输出为:
在’’%10.6f
’'格式控制字符中,10代表域宽
,包括小数点“.”,6代表小数点后的位数,由于第七位是6,因此第6位四舍五入为3
。
代码六:还是 getchar()
//还是getchar() //已知输入格式为 4空格5回车 // 67回车 //则输出结果是? #include <stdio.h> int main() { char a,b,c,d,e; scanf("%c%c",&a,&b);//注意这里输入的是字符型数据,空格也会被作为字符 c=getchar(); d=getchar(); e=getchar(); printf("%c%c%c%c%c\n",a,b,c,d,e); }
输出:
简析
:在用scanf()函数输入字符型数据时要注意,如果用%c格式声明输入字符,那么空格字符和转义字符都作为有效字符输入,因此4和5之间的空格会被赋值给b。其次,要注意数字和数字字符之间的差别。最后,getchar()函数可以接收回车键,把回车也作为一个字符输入。
所以,a是’4’,b是空格,c是’5’,d是回车符(换行效果),e是’6’。(7 没有被赋值给任何变量)即为输出的效果。
这篇关于【C程序设计教程实验】基础练习题(四)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16在电脑上怎么模拟手机的运行环境?-icode9专业技术文章分享
- 2024-11-16接收socket数据,莫名其妙socket就关闭了是怎么回事?-icode9专业技术文章分享
- 2024-11-16ts nightly是什么?-icode9专业技术文章分享
- 2024-11-16如何升级vscode版本?-icode9专业技术文章分享
- 2024-11-16如何设置vscode默认的node版本?-icode9专业技术文章分享
- 2024-11-16shell 如何创建一个文件夹?-icode9专业技术文章分享
- 2024-11-16useReducer案例详解:从零开始理解与应用
- 2024-11-15聊聊用LangChain4J构建聊天机器人的那些事儿
- 2024-11-15LangChain 和 LlamaIndex 在检索增强生成(RAG)中的大比拼:全面对比评测
- 2024-11-15平台工程不只是配置管理:超越CFEngine的方法