第4章程序设计三种基本结构一、选择题:【例1】(2002年4月)下面的程序的输出结果是( )。
#includemain( ){int i=010,j=10;printf("%d,%d",++i,j--);}A. 11,10B. 9,10C. 010,9D. 10,9【答案】B (i的值是以八进制定义的)【例2】(2002年4月)以下的程序的输出结果是( )。
main( ){int a=5,b=4,c=6,d;printf(("d\n",d=a>b?)(a>c?a:c):(b));}A. 5B. 4C. 6D. 不确定【答案】C【例3】(2002年4月)以下程序的输出结果是( )。
{int a=4,b=5,c=0,d;d=!a&&!b||!c;printf("%d\n",d);}A. 1B. 0C. 非0的数D. -1【答案】A【例4】(2002年4月)以下程序的输出结果是( )。
main( ){char x=040;printf("%o\n",x<<1);}A. 100B. 80C. 64D. 32【答案】A【例5】(2002年9月)已知i,j,k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2,k的值为3,以下选项中正确的输入语句是(C )。
A. scanf("---",&I,&j,&k);B. scanf("%d %d %d",&I,&j,&k);C. scanf("%d,%d,%d",&I,&j,&k);D. scanf("i=%d,j=%d,k=%d",&I,&j,&k);【例6】(2002年9月)若有以下程序main( ){int k=2,i=2,m;m=(k+=i*=k);printf(“%d,%d\n”,m,i);}执行后的结果是( )。
A. 8,6B. 8,3C. 6,4D. 7,4【答案】C【考点解析】根据C语言中printf函数的用法可知,格式控制参数是d,即是输出是十进制的数,复合运算表达式是右结合性,先从右边开始计算i*=k得i= i*k=2*2=4,k+=i得k=k+i=2+4=6,所以m的值为6。
输出结果为m=6,i=4。
【例7】(2003年4月)若有以下程序段(n所赋的是八进制数)int m=32767, n=032767;printf(“%d,%o\n”,m,n);执行后输出结果是( )。
A. 32767,32767B. 32767,032767C. 32767,77777D. 32767,77777【答案】A【例8】(2003年4月)有以下程序段int m=0,n=0,char c='a';scanf("%d%c%d",&m,&c,&n);prinft("%d,%c,%d\n",m,c,n);若从键盘上输入:10A10<回车>,则输出结果是()。
A. 10,A,10B. 10,a,10C. 10,a,0D. 10,A,0【答案】A【例9】(2003年4月)有以下程序main( ){int i=10,j=1;printf("%d,%d\n ",i--,++j);}执行输出的结果是(B)。
A. 9,2B. 10,2C.9,1D. 10,1【答案】B【例10】(2003年9月)有以下程序main()int a ;char c=10;float f=100.0;double x;a=f/=c*=(x=6.5);printf("%d %d %3.1f %3.1f\n ",a,c,f,x);}程序运行后的输出结果是()。
A. 1 65 1 6.5B. 1 65 1.5 6.5C. 1 65 1.0 6.5D. 2 65 1.5 6.5【答案】B【例11】(2003年9月)有以下程序main(){int a=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=aprintf("%d,%d\n",k,m);}程序运行后的输出结果是()。
A. 0,0B. 0,1C. 1,0D. 1,1【答案】C【例12】(2003年9月)有定义语句:int x,y;若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是"A. 11 12<回车>B. 11, 12<回车>C. 11,12<回车>D. 11,<回车> 12<回车>【答案】A【例13】(2003年9月)设有以下程序段:int x=2002,y=2003;printf(“%d\n”,(x,y));则以下叙述中正确的是"A. 输出语句中格式说明符的个数少于输出项的个数,不能正确输出。
B. 运行时产生出错信息。
C. 输出值为2002。
D. 输出值为2003。
【答案】D【例14】(2003年9月)有以下程序main ( ){int x=3,y=2,z=1;printf("%d\n",x/y&~z);}程序运行后的输出结果是()。
A. 3 B. 2 C. 1 D. 0 【答案】D【例15】(2004年4月)有以下程序main(){int x=102,y=012;printf("-,-\n",x,y);}执行后输出结果是()。
A. 10,01B. 02,12C. 102,10D. 02,10【答案】C【例16】(2004年4月)有以下程序main(){unsigned char a,b;a=4|3;b=4&3;printf("%d%d\n",a,b);执行后输出结果是( )。
A. 70B. 07C. 11D. 430【答案】A【例17】(2004年9月)有以下程序main(){chara,b,c,d;scanf("%c,%c,%d,%d ",&a,&b,&c,&d);printf("%c,%c,%c,%c\n ",a,b,c,d);}若运行时从键盘上输入:6,5,65,66<回车>。
则输出结果是()。
A. 6,5,A,BB. 6,5,65,66C. 6,5,6,5D. 6,5,6,6【答案】A【考点解析】在C语言程序设计中,scanf函数的格式控制参数中“%d”表示输入整数,“%c”表示输入字符,也就是说,前两个输入的数是以字符形式输入的,后两个输入的数是以整数形式输入的,输出时,全部都以字符形式输出,而刚才的后两个整数应该用ASCII码转化为字符。
则输出的是6,5,A,B。
【例18】(2004年9月)有以下程序main ( )int m=3,n=4,x;x=-m++;x=x+8/++n;printf(“%d\n”,x);}程序运行后的输出结果是()。
A. 3B. 5C. -1D.-2【答案】D【考点解析】在本题中,根据C语言中printf函数的用法可知,格式控制参数是d,即是输出是十进制的数,表达式x=-m++可以转换成x=-(m++),可得x的值为-3,而表达式x=x+8/++n可以转换成x=x+8/(++n),代入x的值得x=-3+8/5=-2,所以最后的输出结果是-2。
【例19】(2004年9月)有以下程序main ( ){char a=’a’,b;printf(“%c”,++a);printf(“%c\n”,b=a++);}程序运行后的输出结果是()。
A. b,bB. b,cC. a,bD. a,c【答案】A【例20】(2004年9月)有以下程序main ( ){int m=0256,n=256;printf("%o %o\n",m,n);}程序运行后的输出结果是()。
A. 0256 0400 B. 0256 256 C. 256 400 D. 400 400【答案】C【例21】(2004年9月)有以下程序main ( ){int a=666,b=888;printf(“%d\n”,a,b);}程序运行后的输出结果是()。
A. 错误信息B. 666C. 888D. 666,888【答案】B【例22】(2004年9月)有以下程序main ( ){unsignedint a;int b=-1;a=b;printf(“%u”,a);}程序运行后的输出结果是()。
A. -1B. 65535C. 32767D. -32768【答案】B【考点解析】在本题中,有一无符号变量和一整型变量,它们的值都是-1,在计算机整型的存储是以二进制存在,即是1000000000000001,输出函数的要求输出无符号a的值,即要把1000000000000001转化为十进制,得65535。
二、填空题:【例23】(2002年4月)以下程序的输出结果是_______。
main(){int a=177;printf("%o\n ",a);}【答案】261【考点解析】本题中先定义了一个十进制整数值为177的a,而printf()函数格式控制参数是o,也就是以八进制的整数形式输出,a的十进制数值是177转换为八进制数是261。
【例24】(2002年4月)以下程序的输出结果是_______。
main(){int a=0;a+=(a=8);printf(“%d\n”,a);}【答案】16【考点解析】在程序是用printf函数输出十进制的整数,表达式经过复合运算:a=a +a=8+8=16,则结果是16。
【例25】(2002年4月)以下程序的输出结果是_______。
main(){int a=5,b=4,c=3,d;d=(a>b>c);printf(“%d\n”,d);}【答案】0【考点解析】在C语言中规定了关系运算符”>”按左结合来运算的,所以在本题中先计算a>b,结果是真,即是1,再计算a>c,结果是假,所以最后结果是0。
【例26】(2003年4月)若有语句int i=-19,j=i%4;printf(“%d\n”,j);则输出结果是。