scanf、printf函数的复习

scanf函数格式输入数据

重点归纳:

%d和%i是十进制输出整数
%o无符号八进制形式输出整数(012、0102)
%x和X无符号十六进制输出整数(0X2A、0XA0)
%u无符号十进制输出整数
%c字符形式只输出一个字符(char)
%s输出字符串(string length)
%f小数形式输出单双精度数,隐含输出6位小数(float)
%e、%E、%g、%G与f作用相同,e和f、g可以相互替换
附加格式字符:%l用来输入长整型数据(可%ld,%lo,%lx,%lu)
%h用来输入短整型数据(%hd,%ho,%hx)
%*用来表示输入后不赋值变量(直接跳过)
注意:对unsigned型变量赋值时用%u、%d、%x格式输入
scanf(“%4c”,&ch);如果从键盘输入xyz,由ch,故第一个字符x只赋值给了ch
scanf(“%2d”%*3d%2d,&a,&b);输入1234567后,2d就是12,3d就是345,2d就是67,三个部分由于中间有个(星号),所以345不赋值,a=12,b=67
例子:
有如下语句:
scanf(“%c%c%c”,&cl, &c2, &c3);
如果输入:a]b[c后按回车键,试确定字符变量cl,c2,c3的值。
我们来分析一下,在这个scanf语句中,格式说明符都是“%c”,空格字符也作为有效字符输入,因“此,变量cl的值是“a”,而变量c2的值则是空格”,变量c3的值为“b”。
“%c”格式输入字符时,空格字符和转义字符都将作为有效字符进行输入

【例1】以下叙述中正确的是( )。
A)在sanf函数中的格式控制字符串是为了物入数据用的,不会输出到屏幕上
B)在使用scanf函数输入整数或实数时,所输入的数据之间只能用空格来分隔
C)在printf函数中,各个输出项只能是变量(常变量均可)
D)使用printf函数无法输出百分号%
【解析】scanf函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上,所以选项A正确。scanf函数的格式控制申可以使用其他非空白字符,如逗号,但在输入时必须输入这些字符,以保证匹配就可以,所以选项B错误。prinf函数可以输出常量,也可以输出变量,所以选项C错误。printf函数可以用“%”来输出百分号“%”
,所以选项D错误。

【例2】有以下程序段:
scanf(“ddd”,&a,&b,&c);
if(a>b)a=b;
if(a>c) a=c;
printf(“&d\n”,a);
空格 该程序段的功能是( )。
A)输出a、b、c中的最小值
改要 B)输出a、b、c中的最大值
口下 C)输出a的原始值
D)输出a、b、c中值相等的数值
(a>b已经将a和b进行比较了,而a=b则是为了将b和c比较,当a>c已经说明b>c的)
衣的 【解析】程序执行过程为:从键盘读入3个整型我遇 数据,依次赋给a、b、c,判断a>b,若成立,将较小的
值b赋值给较大的值a;判断a>c,若成立,将较小的 的值c赋值给较大的值a。if实现了将从键盘读入._ 的数据中最小值赋给a的功能,最后输出a,即输出
最小值。因此选项A正确。
【例3】若有定义char c; int d;,程序运行时
入1、2和<回车>,能把值1输入给变量c,值2输
入给变量d的输入语句是( )。
A)scanf(“8c,d”,&c,&d); 任意
B)scanf(“&c&d”,&c, &d); 如下
C)scanf(“d,f”,&c,&d);
D)Vscanf(“&d&d”,&c, &d);
选项A正确
.
【例4】若变量已正确定义为int型,要通过语句scanf("ad,al,al”,&a,8b,&e);给a赋值1,给b赋
值2,给c赋值3,以下输入形式中错误的是(
(注:□代表一个空格符)
A)1,2,3<回车>
B)□□□1,2,3<回车>
C)1,□□ □2, □□□3<回车>
D)1□2□3<回车>
【解析】scanf函数的格式控制串可以使用其非空白字符,如本题中的逗号,但在输入时必须输这些字符,以保证匹配。所以逗号必须输入,,因此案为选项D。
(由例子可知空格为一个数,可以输出,但例四却连续三个空格却相当于没有,有些疑惑,请帖子们帮忙分析一下,是不是三个空格等于没有空格)
【答案】D
.

printf函数输出数据

【例3-5】分析程序的运行结果。
程序代码
#include stdio.h>
main()
int a,b;
a=123;
b=12345;
printf(“%4d,%4d\n”,a,b);
程序中变量a按4位输出,由于其值为位,因此左边补一个空格。变量b本身是5,按指定宽度4位输出时宽度不够,因此按际位数输出。所以执行结果如下:
□123,12345
其中“□”表示空格

知识归纳

数字0-9对应的ASCII码(十进制)为“48”~“57”
大写字母A-Z对应的ASCII码(十进制)为“65”~“90”
小写字母a-z对应的ASCII码(十进制)为"97"~“122”

printf(“%5.3f\n”,12345.6789);
此语句的格式说明为%5.3f,表示输出总宽度
为5,小数位为3,这样整数部分只有1位,小于实际的数据位数,只能按实际位数输出,而小数部分指定输出3位,将小数点后的第4位四舍五入,所以结果为“12345.679”。
(3)对齐方式
上面的格式字符在指定了输出宽度后,
如果指定的宽度多于数据的实际宽度,则在输出时数据自动右对齐,左边用空格补足。此时,也可以指定将输出结果左对齐,方法是在宽度前加上“-”符号。
【例3-6】分析下列程序的运行结果。
程序代码
#include <stdio.h>
main()
(int a=123;
printf(“%4d,%-4d\n”,a,a) ;
)
两个输出项都是3位,两个格式说明中的宽度都是4位,多于实际宽度,第1个格式说明中为右对齐,第2个格式说明中为左对齐,多余部分用空格补足,所以,输出结果如下:
□123,123□
(4)输出%
如果想输出“%”,则应该在“格式控制串”中用连续两个%表示,“%%”。在格式控制串中连续两个%用来输出字符“%”本身。
【例1】以下不能输出字符A的语句是( )。 3齐,方法是 (注:字符“A”的ASCIⅡ码值为65,字符“a”的ASC结果。 码值为97。)
A)printf(“%e \n”,‘a’-32);
B)printf(”%d \n", ‘A’);
C)printf(“%c \n”,65);
D)printf (”%c\n",‘B’-1);
【解析】选项B输出的格式为“%d”,即为整型
格式,所以输出字符“A”的ASCII码值65,而不是字
式说明中 符“A”。由于大写字母比其对应的小写字母的1个格式 ASCI码值小32,所以选项A正确。字符“A”的中为左对 ASCII码值就是65,所以以“%c”格式输出可以输出结果 字符“A”,所以选项C正确。由于字符“A”的ASCI码值比字符“B”的小1,所以选项D正确。
【答案】B
【例2】已知字符“A”的ASCII代码值是65,字符变量cl的值是“A”,c2的值是“D”,则执行语句 printf(“%d,%d”,cl,c2-2);
符“%” 的输出结果是()。
A)65,68 B)A,68
C)A,B D)65,66
【解析】打印时以“ad”整型格式打印输出,所
写字母, 字符标量l的值打印出来就是65,从02-2的值20240224ns印出来就是68-2,即66所以选择选项D。
在这里插入图片描述

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值