第四章 最简单的C程序设计
4.1 选择题
【题4.1】putchar函数可以向终端输出一个 。
整型变量表达式值实型变量值字符串字符或字符型变量值
【题4.2】以下程序的输出结果是 。
main()
{
printf(“\n*s1=%15s*”,“chinabeijing”);
printf(“\n*s2=%-5s*”,“chi”);
}
A)*s1=chinabeijing * B)*s1=chinabeijing *
*s2=**chi* *s2=chi *
C)*s1=*chinabeijing* D)*s1= chinabeijing*
*s2=chi* *s2=chi *
【题4.3】printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式【1】;如果字符串长度小于5,则输出按方式【2】。
从左起输出该字串,右补空格按原字符长从左向右全部输出右对齐输出该字串,左补空格输出错误信息
【题4.4】已有定义int a=-2;和输出语句:printf(“%8lx”,a);以下正确的叙述是 。
整型变量的输出格式符只有%d一种
%x是格式符的一种,它可以适用于任何一种类型的数据
%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的
%8lx不是错误的格式符,其中数字8规定了输出字段的宽度
【题4.5】以下C程序正确的运行结果是 。
main()
{
long y=-43456;
printf(“y=%-8ld\n”,y);
printf(“y=%-08ld\n”,y);
printf(“y=%08ld\n”,y);
printf(“y=%+8ld\n”,y);
}
A)y= -43456 B)y=-43456
y=- 43456 y=-43456
y=-0043456 y=-0043456
y=-43456 y=+-43456
C)y=-43456 D)y= -43456
y=-43456 y=-0043456
y=-0043456 y=00043456
y= -43456 y=+43456
【题4.6】以下C程序正确的运行结果是 。
main()
{
int y=2456;
printf(“y=%3o\n”,y);
printf(“y=%8o\n”,y);
printf(“y=%#8o\n”,y);
}
A)y= 2456 B)y= 4630
y= 2456 y= 4630
y=########2456 y=########4630
C)y=2456 D)y=4630
y= 2456 y= 4630
y= 02456 y= 04630
【题4.7】以下C程序正确的运行结果是 。
main()
{
long y=23456;
printf(“y=%3x\n”,y);
printf(“y=%8x\n”,y);
printf(“y=%#8x\n”,y);
}
A)y=5ba0 B)y= 5ba0 C)y=5ba0 D)y=5ba0
y= 5ba0 y= 5ba0 y=5ba0 y= 5ba0
y= 0x5ba0 y= 0x5ba0 y=0x5ba0 y=####5ba0
【题4.8】若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是 。
scanf(“%d%lx,%le”,&x,&y,&z);
scanf(“%2d*%d%lf”,&x,&y,&z);
scanf(“%x%*d%o”,&x,&y);
scanf(“%x%o%6.2f”,&x,&y,&z);
【题4.9】已有如下定义和输入语句,若要求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 20B<CR> B)10 A 20 B<CR>
C)10A20B<CR> D)10A20 B<CR>
【题4.10】已有定义int x; float y;且执行scanf(“%3d%f”,&x,&y);语句,若从第一列开始输入数据12345 678<回车>,则x的值为【1】,y的值为【2】。
【1】A)12345 B)123 C)45 D)345
【2】A)无定值 B)45.000000 C)678.000000 D)123.000000
【题4.11】已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是 。
int a1,a2; char c1,c2;
scanf(“%d%d”,&a1,&a2);
scanf(“%c%c”,&c1,&c2);
A)1020AB<CR> B)10 20<CR>
AB<CR>
C)10 20 AB<CR> D)10 20AB<CR>
【题4.12】已有程序段和输入数据的形式如下,程序中输入语句的正确形式应当为 。
main()
{
int a; float f;
printf(“\nInput number:”);
输入语句
printf(“\nf=%f,a=%d\n”,f,a);
}
Input number:4.5 2<CR>
scanf(“%d,%f”,&a,&f);
scanf(“%f,%d”,&f,&a);
scanf(“%d%f”,&a,&f);
scanf(“%f%d”,&f,&a);
【题4.13】根据定义和数据的输入方式,输入语句的正确形式为 。
已有定义:float f1,f2;
数据的输入方式:4.52
3.5
scanf(“%f,%f”,&f1,&f2);
scanf(“%f%f”,&f1,&f2);
scanf(“%3.2f %2.1f”,&f1,&f2);
scanf(“%3.2f%2.1f”,&f1,&f2);
【题4.14】阅读以下程序,当输入数据的形式为 25,13,10<CR> 正确的输出结果为 。
main()
{
int x,y,z;
scanf(“%d%d%d”,&x,&y,&z);
printf(“x+y+z=%d\n”,x+y+z);
}
x+y+z=48
x+y+z=35
x+z=35
不确定值
【题4.15】阅读以下程序,若运行结果为如下形式,输入输出语句的正确内容是 。
main()
{
int x; float y;
printf(“enter x,y:”);
输入语句
输出语句
}
输入形式 enter x,y:2 3.4
输出形式 x+y=5.40
scanf(“%d,%f”,&x,&y);
printf(“\nx+y=%4.2f”,x+y);
scanf(“%d%f”,&x,&y);
printf(“\nx+y=%4.2f”,x+y);
scanf(“%d%f”,&x,&y);
printf(“\nx+y=%6.1f”,x+y);
scanf(“%d%3.1f”,&x,&y);
printf(“\nx+y=%4.2f”,x+y);
【题4.16】以下说法正确的是 。
输入项可以为一实型常量,如scanf(“%f”,3.5);
只有格式控制,没有输入项,也能进行正确输入,如scanf(“a=%d,b=%d”);
当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&f);
当输入数据时,必须指明变量的地址,如scanf(“%f”,&f);
【题4.17】根据下面的程序及数据的输入方式和输出形式,程序中输入语句的正确的形式应该为 。
main()
{
char ch1,ch2,ch3;
输入语句
printf(“%c%c%c”,ch1,ch2,ch3);
}
输入形式:A B C
输出形式:A B
scanf(“%c%c%c”,&ch1,&ch2,&ch3);
scanf(“%c,%c,%c”,&ch1,&ch2,&ch3);
scanf(“%c %c %c”,&ch1,&ch2,&ch3);
scanf(“%c%c”,&ch1,&ch2,&ch3);
【题4.18】有输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b为3,c为2,从键盘输入数据的正确形式应当是 。
132<回车>
1,3,2<回车>
a=1 b=3 c=2<回车>
a=1,b=3,c=2<回车>
【题4.19】以下能正确地定义整型变量a,b和c并为其赋初值5的语句是 。
A)int a=b=c=5; B)int a,b,c=5;
C)a=5,b=5,c=5; D)a=b=c=5;
【题4.20】已知ch是字符型变量,下面不正确的赋值语句是 。
A)ch=‘a+b’; B)ch=‘\0’; C)ch=‘7’+‘9’; D)ch=5+9;
【题4.21】已知ch是字符型变量,下面正确的赋值语句是 。
A)ch=‘123’; B)ch=‘\xff’; C)ch=‘\08’; D)ch=“\”;
【题4.22】若有以下定义,则正确的赋值语句是 。
int a,b; float x;
A)a=1,b=2, B)b++; C)a=b=5 D)b=int(x);
【题4.23】设x、y均为float型变量,则以下不合法的赋值语句是 。
A)++x; B)y=(x%2)/10; C)x*=y+8; D)x=y=0;
【题4.24】设x、y和z均为int型变量,则执行语句x=(y=(z=10)+5)-5;后,x、y和z的值是 。
A)x=10 B)x=10 C)x=10 D)x=10
y=15 y=10 y=10 y=5
z=10 z=10 z=15 z=10
【题4.25】设有说明:double y=0.5,z=1.5; int x=10;则能够正确使用C语言库函数的赋值语句是 。
z=exp(y)+fabs(x);
y=log10(y)+pow(y);
z=sqrt(y-z);
x=(int)(atan2((double)x,y)+exp(y-0.2));
4.2 填空题
【题4.26】以下程序的输出结果为 。
main()
{
short i;
i=-4;
printf(“\ni:dec=%d,oct=%o,hex=%x,unsigned=%u\n”,i,i,i,i);
}
【题4.27】以下程序的输出结果为 。
main()
{
printf(“*%f,%4.3f*\n”,3.14,3.1415);
}
【题4.28】以下程序的输出结果为 。
main()
{
char c=‘x’;
printf(“c:dec=%d,oct=%o,hex=%x,ASCII=%c\n”,c,c,c,c);
}
【题4.29】已有定义int d=-2;执行以下语句后的输出结果是 。
printf(“*d(1)=%d*d(2)=%3d*d(3)=%-3d*\n”,d,d,d);
printf(“*d(4)=%o*d(5)=%7o*d(6)=%-7o*\n”,d,d,d);
【题4.30】已有定义int d=-2;执行以下语句后的输出结果是 。
printf(“*d(1)=%d*d(2)=%3d*d(3)=%-3d*\n”,d,d,d);
printf(“*d(4)=%x*d(5)=%6x*d(6)=%-6x*\n”,d,d,d);
【题4.31】已有定义float d1=3.5,d2=-3.5;执行以下语句后的输出结果是 。
printf(“*d(1)=%e*d(2)=%.4e*d(3)=%10.4e*\n”,d1,d1,d1);
printf(“*d(4)=%e*d(5)=%.6e*d(6)=%-12.5e*\n”,d2,d2,d2);
【题4.32】以下程序的输出结果为 。
main()
{
int x=1,y=2;
printf(“x=%d y=%d *sum*=%d\n”,x,y,x+y);
printf(“10 Squared is:%d\n”,10*10);
}
【题4.33】以下程序的输出结果为 。
#include <stdio.h>
main()
{
int x=10; float pi=3.1416;
printf(“(1) %d\n”,x);
printf(“(2) %6d\n”,x);
printf(“(3) %f\n”,56.1);
printf(“(4) %14f\n”,pi);
printf(“(5) %e\n”,568.1);
printf(“(6) %14e\n”,pi);
printf(“(7) %g\n”,pi);
printf(“(8) %12g\n”,pi);
}
【题4.34】以下程序的输出结果为 。
#include <stdio.h>
main()
{
float a=123.456; double b=8765.4567;
printf(“(1) %f\n”,a);
printf(“(2) %14.3f\n”,a);
printf(“(3) %6.4f\n”,a);
printf(“(4) %lf\n”,b);
printf(“(5) %14.3lf\n”,b);
printf(“(6) %8.4lf\n”,b);
printf(“(7) %.4f\n”,b);
}
【题4.35】以下printf语句中*号的作用是【1】,输出结果是【2】。
#include <stdio.h>
main()
{
int i;
for(i=1;i<=5;i++) printf(“##%*d\n”,i,i);
}
【题4.36】以下printf语句中-号的作用是【1】,该程序的输出结果是【2】。
#include <stdio.h>
main()
{
int x=12; double a=3.1415926;
printf(“%6d##\n”,x);
printf(“%-6d##\n”,x);
printf(“%14.10lf##\n”,a);
printf(“%-14.10lf##\n”,a);
}
【题4.37】以下程序的输出结果为 。
#include <stdio.h>
main()
{
int a=325; double x=3.1415926;
printf(“a=%+06d x=%+e\n”,a,x);
}
【题4.38】以下程序的输出结果为 。
#include <stdio.h>
main()
{
int a=252;
printf(“a=%o a=%#o\n”,a,a);
printf(“a=%x a=%#x\n”,a,a);
}
【题4.39】以下程序段的输出结果为 。
int x=7281;
printf(“(1) x=%3d,x=%6d,x=%6o,x=%6x,x=%6u\n”,x,x,x,x,x);
printf(“(2) x=%-3d,x=%-6d,x=$%-06d,x=$%06d,x=%%06d\n”,x,x,x,x,x);
printf(“(3) x=%+3d,x=%+6d,x=%+08d\n”,x,x,x);
printf(“(4) x=%o,x=%#o\n”,x,x);
printf(“(5) x=%x,x=%#x\n”,x,x);
【题4.40】假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。请填空。
a+=【1】; b=a-【2】; a-=【3】;
【题4.41】假设变量a、b和c均为整型,以下语句借助中间变量t把a、b和c中的值进行交换,即:把b中的值给a,把c中的值给b,把a中的值的给c。例如:交换前,a=10,b=20,c=30;交换后,a=20,b=30,c=10。请填空。
【1】; a=b; b=c; 【2】;
【题4.42】设x、y和z都是int型变量,m为long型变量,则在16位微型机上执行下面赋值语句后,y值为【1】,z值为【2】,m值为【3】。
y=(x=32767,x-1);
z=m=0xFFFF;
【题4.43】若x为int型变量,则执行以下语句后x的值是【 】。
x=7;
x+=x-=x+x;
【题4.44】若a和b均为int型变量,则以下语句的功能是【 】。
a+=b; b=a-b; a-=b;
【题4.45】在scanf函数调用语句中,可以在格式字符和%号之间加一星号,它的作用是【1】;当输入以下数据:10 20 30 40<回车>(此处每个数据之间有两个空格),下面语句的执行结果是【2】。
int a1,a2,a3;
scanf(“%d%*d%d%d”,&a1,&a2,&a3);
【题4.46】有一输入函数scanf(“%d”,k);其不能使float类型变量k得到正确数值的原因是【1】和【2】。
【题4.47】已有定义int a; float b,x; char c1,c2;为使a=3,b=6.5,x=12.6,c1=‘a’,c2=‘A’,正确的scanf函数调用语句是【1】,输入数据的方式为【2】。
【题4.48】若有以下定义和语句,为使变量c1得到字符‘A’,变量c2得到字符‘B’,正确的格式输入形式是 。
char c1,c2;
scanf(“%4c%4c”,&c1,&c2);
【题4.49】执行以下程序时,若从第一列开始输入数据,为使变量a=3,b=7,x=8.5,y=71.82,c1=‘A’,c2=‘a’,正确的数据输入形式是 。
main()
{
int a,b; float x,y; char c1,c2;
scanf(“a=%d b=%d”,&a,&b);
scanf(“x=%f y=%f”,&x,&y);
scanf(“c1=%c c2=%c”,&c1,&c2);
printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c”,a,b,x,y,c1,c2);
}
【题4.50】已有定义int i,j; float x;为将-10赋给i,12赋给j,410.34赋给x;则对应以下scanf函数调用语句的数据输入形式是 。
scanf(“%o%x%e”,&i,&j,&x);