C语言第四章习题

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

练习4-1
一、选择题
1.已知:char c='A'; int i=1, j;,执行语句j=!c&&i++;,则i和j的值是( )。

A.1,1 B.1,0 C.2,1 D.2,0
2.已知:int x=1, y=2, z;,则执行z=x>y?++x:++y;,则z的值为( )。

A.1 B.2 C.3 D.4
3.已知:int a=4, b=5, c;,则执行表达式c=a=a>b后变量a的值为( )。

A.0 B.1 C.4 D.5
4.已知:char ch='A';,则表达式ch=(ch>='A'&&ch<='Z')?(ch+32):ch;的值是( )。

A.'A' B.'a' C.'Z' D.'z'
5.若w=1, x=2, y=3, z=4;,则条件表达式w>x?w:y<z?y:z的结果为( )。

A.4 B.3 C.2 D.1
6.已知:int w=3, x=10, z=7;,则执行下面语句后的结果为( )。

printf("%d",x>10?x+100:x-10);
printf("%d",w++||z++);
printf("%d",!w>z);
printf("%d",w&&z);
A.0111 B.1111 C.0101 D.0100
7.已知:a=b=c=1且a、b、c均为int型变量,执行以下语句:++a||++b&&++c;
则变量a值为( ①),b值为( ②)。

①A.不正确B.0 C.2 D.1
②A.1 B.2 C.不正确D.0
8.执行下面语句后x的值为( )。

int a=14, b=15, x;
char c='A';
x=((a&b)&&(c<'a'));
A.TRUE B.FALSE C.0 D.1
9.要判断char型变量m是否是数字,可以使用下列表达式( )。

A.0<=m&&m<=9 B.'0'<=m&&m<='9'
C."0"<=m&&m<="9" D.前面三个答案均是错误的
10.能正确表示“当x取值在[1..10]和[200..210]范围内为真,否则为假”的表达式是( )。

A.(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
B.(x>=1)||(x<=10)||(x>=200)||(x<=210)
C.(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
D.(x>=1)||(x<=10)&&(x>=200)||(x<=210)
11.设x、y和z是int型变量,且x=3, y=4, z=5,则下面表达式中值为0的是( )。

A.'x'&&'y'B.x<=y C.x||y+z&&y-z D.!((x<y)&&!z||1) 12.已知x=43, ch='A', y=0;,则表达式x>=y&&ch<'B'&&!y的值是( )。

A.0 B.语法错C.1 D.“假”
13.判断char型变量c1是否为小写字母的正确表达式为( )。

A.'a'<=c1<='z' B.(c1>=a)&&(c1<=z)
C.('a'>=c1)||('z'<=c1) D.(c1>='a')&&(c1<='z') 二、读程序、写结果
14.下面程序的运行结果:①( )、②( )、③( )、④( )、⑤( )。

#include <stdio.h>
main()
{ int i=16, j, x=6, y, z;
j=i+++1; printf("%d\n", j); /*输出①*/
x*=i=j; printf("%d\n", x); /*输出②*/
x=1; y=2; z=3;
x+=y+=z;
printf("%d\n", z+=x>y?x++:y++); /*输出③*/
x=0x02ff; y=0xff00;
printf("%d\n", (x&y)>>4|0x005f); /*输出④*/
x=y=z=-1;
++x||++y&&++z;
printf("%d%d%d\n", x, y, z); /* ⑤*/
}
练习4-2
一、选择题
1.下面程序的输出是( )。

#include <stdio.h>
main()
{int x=1, y=0, a=0, b=0;
switch (x)
{ case 1: switch (y)
{ case 0: a++; break;
case 1:b++; break;
}
case 2: a++; b++; break;
}
printf("a=%d, b=%d\n", a, b);
}
A .a=2, b=1
B .a=1, b=1
C .a=1, b=0
D .a=2, b=2
2.若有说明:int x ,y;,不能实现以下函数关系的程序段是( )。

()()()
⎪⎩⎪⎨⎧>=<-=00010
1x x x y A .if (x<0) y=-1; B .y=-1; C .y=0; D .if (x>=0) else if (x==0) y=0; if (x!=0) if (x>=0) if (x>0) y=1; else y=1; if (x>0) y=1; { if (x>0) y=1; } else y=0; else y=0; else y=-1; else y=-1;
3.已知:int x, a, b;,下列选项中错误的if 语句是( )。

A .if (a=b) x++;
B .if (a=<b) x++;
C .if (a-b) x++;
D .if (x) x++;
4.若int i=10;,执行下列程序后,变量i 的正确结果是( )。

switch (i)
{case 9: i+=1;
case 10:i+=1;
case 11:i+=1;
default:i+=1;
}
A .10
B .11
C .12
D .13
5.设有说明语句:int a=1, b=0;,则执行以下语句后输出为( )。

switch (a)
{case 1: switch (b)
{ case 0: printf("**0**"); break;
case 1: printf("**1**"); break;
}
case 2: printf("**2**"); break;
}
A.**0** B.**0****2** C.**0****1****2** D.有语法错误6.阅读下列程序,其运行结果是( )。

#include <stdio.h>
main()
{char c='A';
if ('0'<=c<='\x39') printf("YES");
else printf("NO");
}
A.YES B.NO C.YESNO D.语句错误7.下列程序的运行结果为( )。

#include <stdio.h>
main()
{int a=2, b=-1, c=2;
if (a<b)
if (b<0) c=0;
else c+=1;
printf("%d\n", c);
}
A.0 B.1 C.2 D.3
8.阅读程序,其运行结果是( )。

#include <stdio.h>
main()
{int a=-1, b=1, k;
if ((++a<0)&&(b--<=0)) printf("%d %d\n", a, b);
else printf("%d %d\n", b, a);
}
A.-1 1 B.0 1 C.1 0 D.0 0
9.选择运行结果。

#include <stdio.h>
main()
{char ch;
ch=getch();
switch (ch)
{ case 65: printf("%c", 'A');
case 66: printf("%c", 'B');
default:printf("%s\n", "other");
}
}
如程序可以正常运行,当从键盘输入字母A时,输出结果为( )。

A.A B.ABother C.Aother D.编译错误,无法运行10.当a=1, b=3, c=5, d=4时,执行完成下面一段程序后x的值是( )。

if (a<b)
if (c<d) x=1;
else if (a<c)
if (b<d) x=2;
else x=3;
else x=6;
else x=7;
A.1 B.2 C.3 D.6
二、填空题
11.以下程序的输出结果是( )。

main()
{ int a=100, x=10, y=20, ok1=5, ok2=0;
if (x<y)
if (y!=10)
if (!ok1) a=1;
else if (ok2) a=10;
a=-1;
printf("%d\n",a);
}
12.阅读以下程序:
main()
{ int t, h, m;
scanf("%d", &t);
h=(t/100)%12;
if (h==0) h=12;
printf("%d:", h);
m=t%100;
if (m<10) printf("0");
printf("%d",m);
if (t<1200||t==2400) printf("AM");
else printf("PM");
}
若运行时输入:1605<CR>,程序的运行结果是( )。

13.若运行时输入:3 5/<CR>,则以下程序的运行结果是( )。

main()
{ float x, y; char o; double r;
scanf("%f%f%c", &x, &y, &o);
switch (o)
{ case '+': r=x+y; break;
case '-': r=x-y; break;
case '*': r=x*y; break;
case '/': r=x/y; break;
}
printf("%f", r);
}
练习4-3
一、选择题
1.以下不是死循环的语句为( )。

A.for ( ; ; x+=i) B.while (1) { x++; }
C.for (i=10; ; i--) sum+=i; D.for (; (c=getchar())!='\n'; ) printf("%c", c); 2.执行语句for (i=0; i++<3; );后,变量i的值为( )。

A.2 B.3 C.4 D.5
3.下面的for语句( )。

for (x=0, y=0; (y!=123)&&(x<4); x++);
A.是无限循环B.循环次数不定C.循环执行4次D.循环执行3次4.与语句while (!x)等价的语句是( )。

A.while (x==0) B.while (x!=0) C.while (x!=1) D.while (~x) 5.定义int i=1;,执行语句while (i++<5);后,i的值为( )。

A.3 B.4 C.5 D.6
6.若a=1, b=10为int型变量,则执行以下语句后b的值为( ① ),a的值为( ② )。

do
{b-=a;
a++;
} while(b--<0);
① A.9 B.-2 C.-1 D.8
② A.4 B.2 C.1 D.3
7.若int a=5;,则执行以下语句后打印的结果为( )。

do
{printf("%2d\n",a--);
} while(!a);
A.5 B.不打印任何内容C.4 D.陷入死循环8.若int x;,且有下面的程序片段,则输出结果为( )。

for (x=3; x<6; x++) printf((x%2)?"**%d":"##%d\n", x);
A.**3 B.##3 C.##3 D.**3##4 ##4 **3 **4##5 **5
**5 ##5
9.等比数列的第一项a=1,公比q=2,下面程序的功能是求满足前n项和小于100的最大n,请选择填空。

( ① ),( ② )。

#include <stdio.h>
main()
{int a, q, n, sum;
a=1; q=2; n=sum=0;
do
{ ①;
++n;
a*=q;
} while (sum<100);
②;
printf("%d\n",n);
}
①A.sum++ B.sum+=a C.sum*=a D.a+=sum
②A.n=n-2 B.n=n C.n++ D.n-=1 二、读程序,写结果
10.下列程序的运行结果为:i=( ① ),j=( ② ),k=( ③ )。

#include <stdio.h>
main()
{ int a=10, b=5, c=5, d=5;
int i=0, j=0, k=0;
for (; a>b; ++b) i++;
while (a>++c) j++;
do k++;
while (a>d++);
printf("%d,%d,%d\n",i,j,k);
}
11.下面过程的运行结果:①是( ),②是( )。

#include <stdio.h>
main()
{ int i, j;
for (i=0, j=10; i<j; i+=2, j--);
printf("%d\n", i ); /*输出①*/
printf("%d\n", j); /*输出②*/
}
12.下面程序的运行结果是( )。

#include <stdio.h>
main()
{ int k, j, m;
for (k=5; k>=1; k--)
{ m=0;
for (j=k; j<=5; j++) m=m+k*j;
}
printf("%d\n",m);
}
练习4-4
读程序,写结果
1.下面程序的运行结果是( )。

#include <stdio.h>
main()
{int i=0, j=0, k=0, m;
for (m=0; m<4; m++)
switch (m)
{ case 0: i=m++;
case 1: j=m++;
case 2: k=m++;
case 3: m++;
}
printf("\n%d,%d,%d,%d", i, j, k, m);
}
2.下面程序的运行结果是( )。

#include <stdio.h>
main()
{int i=1;
while (i<=15)
if (++i%3!=2) continue;
else printf("%d ",i);
printf("\n");
}
3.若运行以下程序时,从键盘输入Adescriptor<CR>(<CR>表示回车),则下面程序的运行结果是( )。

#include <stdio.h>
main()
{char c;
int v0=0, v1=0, v2=0;
do
{ switch (c=getchar())
{ case 'a': case'A':
case 'e': case'E':
case 'i': case'I':
case 'o': case'O':
case 'u': case'U': v1+=1;
default: v0+=1; v2+=1;
}
} while (c!='\n');
printf("v0=%d,v1=%d,v2=%d\n", v0, v1, v2);
}
4.下面程序段的输出结果是( )。

x=3;
do
{y=x--;
if (!y)
{ printf("*");
continue;
}
printf("#");
} while (1<=x<=2);
5.下面程序的运行结果是( )。

#include <stdio.h>
main()
{int i, j, x=0;
for (i=0; i<2; i++)
{ x++;
for (j=0; j<=3; j++)
{ if (j%2) continue;
x++;
}
x++;
}
printf("x=%d\n", x);
}。

相关文档
最新文档