ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【C程序设计教程实验】基础练习题(四)

2022-03-19 10:03:27  阅读:122  来源: 互联网

标签:练习题 字符 教程 输出 c% printf 程序设计 输入 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%,printf,程序设计,输入,getchar
来源: https://blog.csdn.net/qq_44731019/article/details/123588603

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有