2.3顺序结构程序设计
2.3.1 要点导读
1.printf() 与scanf()语句。
printf() 与scanf()语句是最通用的输入输出函数,它们可以在程序设计者的控制下以各种格式分别实现数据的输出和输入操作。它们位于stdio.h库文件中。
2.字符数据的输入输出。
最简单的字符输入输出函数是getchar()和putchar()。两者分别从键盘读一个字符或向显示屏写一个字符。
2.3.2 经典例题分析
1.下列程序运行后输出的结果是         
#include <stdio.h> 
void main()
{
int a=0,b=0;
a=10;
b=20;
printf(a+b=%d,a+b);
}
分析:printf( )是输出函数,它的括号内由两部分组成:
1)控制字符串,是用双引号括起来的字符串,它包括两种信息:
(1)  格式说明。由%和格式字符组成,如:%d、%f、%c等。它的作用是将输出的数据转换成指定的格式输出。
(2)  普通字符。需要原样输出的字符。
2)输出表列是需要输出的一些数据,可以是表达式。
题目中a的值是10,b的值是20,在
中,a+b= 是普通字符,需原样输出。输出表列是一个表达式,它的结果以整型输出。
答案:a+b=30。
2.下列程序运行后输出的结果是         
#include <stdio.h>
void main()
int a=732;
printf(%d\n,a);
printf(%2d\n,a);
printf(%10d\n,a);
printf(%-10d\n,a);
}
分析:d格式符,用来输出十进制整数。其中%d,按整型数据的实际长度输出。%md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
printf(%d\n,a);把a的值按原样输出:732。printf(%2d\n,a);结果占2列,但732占3列大于2列,所以按实际位数输出:732。printf(%10d\n,a);结果占10列,但732占3列小于10列,所以左端补7个空格。printf(%-10d\n,a); 结果占10列,“-”表示把数值放到左端,732占3列
小于10列,所以右端补7个空格。
答案:  732
732
        □□□□□□□732      /*□表示空格*/
        732□□□□□□□
3.已知char a=\103;则语句printf(“%3d”,a);执行后的输出结果为(□表示空格)c语言char的用法           
A)□67        B)c            C)67□        D)103
分析:\103是一个转义字符,表示一个八进制数所代表的字符,转换为十进制为67。printf(%3d,a);把\103转换为十进制数输出,结果占3列。但67占2列,小于要求的3列,所以左补空格,即□67。
答案:C。
4.下列程序运行后结果是         
#include <stdio.h>
#define a 3345.67
void main()
{  printf(%f\n,a);
printf(%e\n,a);
printf(%4.2f\n,a);
printf(%3.1f\n,a);
printf(%10.3f\n,a);
printf(%-10.3f\n,a);
}
分析:f格式符,用来输出实数,以小数形式输出,小数点后输出6位。所以printf(%f\n,a);输出结果为3345.670000。
%m.nf是指,要输出的数占m列,同时小数点保留n位(四舍五入),如果输出的数大于m,则原样输出,同时小数点保留n位(四舍五入)。如果小于m,则左补空格,同时小数点保留n位(四舍五入)。printf(%4.2f\n,a);输出结果为3345.67。
printf(%3.1f\n,a);输出结果为3345.7。
e格式符,以规范化指数的形式输出,所以printf(%e\n,a);3.345670e+03。
答案:3345.670000
      3.345670e+03
      3345.67
      3345.7
□□3345.670  /*(□表示空格)*/
3345.670□□
5.下列程序运行后结果是         
#include <stdio.h>
void main()
{
  char x=0x227f;
  printf(%d\n,x);
}
A) 22        B) 127        C) 255        D)8831
分析:变量x被定义成字符型,字符型占1个字节,而x被赋值为一个4位16进制的值22ff,占16位。所以227f高8位被舍去,x的值为7fH。执行printf(%d\n,x);即把x以有符号的十进
制整数输出。
答案:B。
6.设int b=0;下列语句的输出结果是         
printf(%d,%d,++b,b--);
A) 1,1        B) 1,0        C) 0,0        D) 0,-1
分析:printf函数的执行顺序是由右到左,输出顺序是由左向右。
答案:C。
7.下列程序运行时,若从键盘输入:123<回车>45678<回车>后结果是         
#include <stdio.h> 
void main()
{
char c1,c2,c3,c4,c5,c6;
  scanf(%c%c%c%c,&c1,&c2,&c3,&c4);
  c5=getchar( );
c6=getchar( );
putchar(c1);
putchar(c2);
printf(%c%c\n,c5,c6);
}
分析:scanf(格式控制,地址表列)的功能是:从键盘读取输入的信息。其中格式控制的含义同printf函数;地址表列是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。其scanf(%c%c%c%c,&c1,&c2,&c3,&c4)的作用是:按照c1,c2,c3,c4在内存的
地址将c1,c2,c3,c4的值存进去。由于%c表示按字符形式输入数据,所以回车符作为一个字符,输入有效。getchar( )函数的作用从终端输入一个字符。putchar( )函数的作用是向终端输出一个字符。所以c1=1、c2=2、c3=3、c4=回车,c5=4、c6=5。
答案:1245。
8.设有定义int a;float b;执行scanf(“%2d%f”,&a,&b);语句时,若从键盘输入876 543.0<回车>,a和b的值分别是         
分析:scanf()可以指定输入数据所占的列数,系统自动按它截取所需数据。%2d说明了a占两列,即为87,剩下的数字应该赋给b,但是6和5之间有一个空格,为输入终止符,所以543.0被舍弃,即b的值为6。
答案:87 6。
9.已知a,b,c为int类型,执行scanf(a=%d,b=%d,c=%d,&a,&b,&c);后,若要使得a为1,b为2,c为3,则以下选项中正确的输入形式是(  )。
A) 1,2,3        B) a=1,b=2,c=3        C) 1 2 3        D) a=1 b=2 c=3
分析:scanf中如果在字符控制串中除了格式说明符以外还有其他字符,则在输入数据时应输入与这些相同的字符。
答案:B。
10.设有int x,y;scanf(%d%*d%d,&x,&y);从键盘输入数据10□20□30<回车>后,y的值是         
分析:%*d表示跳过。所以y的值是30。
答案:30。
2.3.3 习题
一、选择题
1.设a、b、c为整型变量,若从键盘给a、b、c输入数据,则正确的输入语句是       
A)scanf(%f%f%f,&a,&b,&c) ;        B) scanf(%d%d%d,&a,&b,&c);
C) scanf(%d%d%d,a,b,c);            D) scanf(%d%d%d,&a;&b;&c);
2.下列程序执行后输出的结果是               
#include<stdio.h>
void main()
{
int x=d;
printf(%c,A+(x-a+1));
}
A) G        B) H            C) E            D) J
3.设整型变量a,b的值均为8。printf(%d,%d,(a++,++b),b--);的输出值是               

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。