【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程序设计教程实验】基础练习题(四)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程