第04章基本输入、输出和顺序程序设计
1.填空题
(1)在C语言中,格式化输入库函数为        ,格式化输出库函数为        .
(2)printf函数中的格式控制字符串的作用是              ,它包含两类字符,即
和        .
(3)格式转换符中,除了以外,其他均为小写字母.
(4)getche函数和getch函数在功能上的主要区别是                  .
(5)在输入数据类型和字符类型的两个scanf函数调用之间通常要使用库
函数以清楚键盘缓冲区中的字符.
(6)算法是                                                  .
(7)算法的描述方法有、、、和PAD图等。
(8)任何复杂的程序都可以由、和这三种基本结构组成。2.选择题
(1)在16位C编辑系统上,下列程序执行后的输出结果是()。
void main ()
{ int a = -32769; printf (“%8U\n”,a); }
A.32769      B.8U      C.32767      D.-32767
(2)下面程序段执行后的输出结果是()。(“□”表示一个空格)
int a = 3366;
printf (“∣%-08d∣”,a);
A.∣-0003366∣    B. ∣00003366∣  C. ∣3366□□□□∣  D. 输出格式非法
(3)以下程序的输出结果是()。
void main ()
{
printf (“s1 = ∣%15s∣  s2 = ∣%-5s∣”,“chinabeijing”,“chi”);
}
A.s1 = ∣chinabeijing□□□∣  s2 = ∣chi∣
B.s1 = ∣chinabeijing□□□∣  s2 = ∣chi□□∣
C.s1 = ∣□□□chinabeijing∣  s2 = ∣□□chi∣
D.s1 = ∣□□□chinabeijing∣  s2 = ∣chi□□∣
(4)在16位C编译系统上,以下程序的输出结果是()。
void main ()
{
long y = -43456;
printf(“y = ∣%-8ld∣  y = ∣%-08ld∣  y = ∣%08ld∣  y = ∣%+8ld∣”,y,y,y,y);
}
A.y = ∣□□-43456∣ y = ∣-□□43456∣ y = ∣-0043456∣ y = ∣-43456□□∣  B.y = ∣□□-43456∣ y = ∣-43456□□∣ y= ∣-0043456∣ y = ∣-□□43456∣  C.y = ∣-43456□□∣ y = ∣-43456□□∣ y= ∣-0043456∣ y = ∣□□-43456∣  D.y = ∣-43456□□∣ y = ∣-4345600∣ y = ∣-0043456∣ y = ∣□□-43456∣
(5)在16位C语言编译系统上,以下程序的输出结果是()。
void main ()
{
int y =2456;
printf (“y = ∣%3o∣ y = ∣%8o∣ y = ∣%#8o∣ y = ∣%08o∣”,y,y,y,y);    }
A.y= ∣2456∣  y= ∣□□□□2456∣  y= ∣□□□02456∣  y= ∣00002456∣B.y= ∣4630∣  y= ∣□□□□4630∣  y= ∣□□□04530∣  y= ∣00004630∣C.y= ∣2456∣  y= ∣□□□□2456∣  y= ∣###02456∣  y= ∣00002456∣
D.y= ∣4630∣  y= ∣4630□□□□∣  y= ∣###04630∣  y= ∣00004630∣
(6)若有说明语句:int a;float b;,以下输入语句正确的是()。
A.scanf(“%f%f”,&a,&b);      B. scanf (“%f%d”,&a&b);
C. scanf (“%d,%f,&a&b);
D. scanf (“%6.2%6.2f”,&a,&b);
(7)执行下面程序段,给x、y赋值时,不能作为数据分隔符的是()。
int x,y;
scanf (“%d%d”, &x, &y);
A.空格      B. Tab键        C. 回车      D. 逗号
(8)执行下面程序时,欲将25和2.5分别赋给a 和b ,正确的输入方法是()。
int a;
float b;
scanf (“a=%d,b=%f”,&a,&b);
A.25□2.5    B. 25,2.5      C.a=25,b=2.5      D. a=25□b=2.5
(9)若有说明语句:int a,b;,用户的输入为111222333,结果a 的值为111,b 的值为333,那么以下输入正确的语句是()。
A.scanf(“%*3d%3c%3d”,&a,&b);
B.scanf(“%3d%*3c%3d”,&a,&b);
C.scanf(“%3d%3d%*3d”,&a,&b);
D.scanf(“%3d%*2d%3d”,&a,&b);
(10)执行下面的程序时,假设用户输入为1□22□333,则chi1、ch2和ch3的值为()。
char ch1,ch2,ch3;
scanf (“%1c%2c%3c”,&ch1, &ch2, &ch3);
A. ‘1’,‘2’,‘3’
B. ‘1’,‘’, ‘2’
C. ‘1’,‘2’,‘’
D. ‘1’,‘’, ‘3’
(11)已知:int x,y;double z;以下语句中错误的函数调用是()。
A. scanf(“%d,%1x,%1e”,&x,&y,&z);
B. scanf(“%2d*%d%1f”,&x,&y,&z);
C. scanf(“%x%*d%o”,&x,&y);
D. scanf(“%x%o%6.2f”,&x,&y,&z);
(12)已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是()。
int a1,a2;  char c1,c2;
scanf (“%d%c%d%c”,&a1,&c1,&a2,&c2);
A. 10A□20□B↙
B. 10□A□20□B↙
C. 10A20B↙
D. 10A20□B↙
(13)阅读以下程序,当输入数据的形式为25,13,10↙,正确的输出结果为()。
void main ()
{
int x,y,z;
scanf (“%d%d%d”,&x,&y,&z);
vprintf (“x + y + z = %d\n”,x + y + z);
}
A. x + y + z =48
B. x + y + z =38
C. x + y + z =35
D. 无法确定
(14)已有定义int x;float y;且执行scanf(“%3d%f”,&x,&y);语句时,假设输入数据为12345□678↙,则x、y的值分别为()。
A.12345  678.000000          B. 123  678.000000
C. 123  45.678000
D. 123  45.000000
关于printf函数正确的是(15)阅读以下程序,当输入数据的形式为12a345b789↙,正确的输出结果为()。
void main ()
{
char  c1,c2;
int  a1,a2;
c1 = getchar ();
scanf (“%3d”,&a2);
printf (“%d, %d, %c, %c\n”, a1, a2, c1, c2);
}
A. 2,345,1,a
B. 12,345,a,b
C. 2a,45b,1,3
D. 2,789,1,a
3.编程题
(1)编写一程序要求任意输入四位十六进制整数,以反序的方式输出该十六进制数。例如:输入9AF0,则输出0FA9。
(2)编程从键盘输入两个整数分别给变量a和b,要求在不借助与其他变量的条件下,将变量a和b的值实现交换。
(3)编程从键盘输入圆的半径r,计算并输出圆的周长和面积。
(4)编程从键盘输入任意一个十六进制负整数,以输入的形式输出。例如:输入-FA98,输出-F98。
(5)已知一元二次方程ax2 + bx + c = 0,编一程序当从键盘输入a、b、c的值后,计算x的值。
(6)假设从键盘输入从某日午夜零点到现在已经历的时间(单位:s),编一程序计算到现在为止已过了多少天,现在的时间是多少?