文档库 最新最全的文档下载
当前位置:文档库 › 顺序结构程序设计练习题 (1)

顺序结构程序设计练习题 (1)

顺序结构程序设计练习题 (1)
顺序结构程序设计练习题 (1)

C语言练习题总汇

一、单选题:

【顺序结构程序设计】

1.己知int k,m=1;执行语句k=-m++;后k的值是(A )。(提示:负号与自加运算符同级,结合方向从右向左)

A)-1 B) 0 C)1 D)2

2.若有定义int x=4;则执行语句x + = x * = x + 1;后,x的值为(C )。A)5 B)20 C)40 D)无答案

3.若有定义:float a=,b=,c=;则表达式1/2*(a+b+c)的值为( C )。

A) B)6 C) D)无答案

4.以下程序段的输出结果是( C )。(提示:a当约束过严时,约束失效。按自由格式输出。)

int a=1234;

printf("%2d\n",a);

A)12 B)34 C)1234 D)提示出错,无结果

5.下列程序段的输出结果是(C)。

int a=1234;

float b=;

double c=;

printf("%2d,%,%",a,b,c);

A)无输出 B)12, , C)1234,, D)1234,,

6.设x, y均为整型变量,且x=8, y=5,则以下语句的输出结果是(D)。

printf("%d,%d\n",x--,++y);

A)8,5 B)7,5 C) 7,6 D) 8,6

7.以下程序的输出结果是( A )。

int main()

{ int a=20,b=10;

printf("%d,%%d\n",a+b,a-b); }

A) 30,%d B)30,10 C)30,%10 D)以上答案均不正确(%%d中第一个%后面的表示字符)

8.下列程序的运行结果是(A)。

int main()

{ float x=;

int y;

y=(int)x;

printf("x=%f,y=%d",x,y);}

A) x=,y=2 B)x=,y=2 C)x=2,y=2 D) x=,y=

9.以下程序的输出结果是(A)。

int main()

{ char c=‘z’;

printf("%c",c-25);}

A)a B)z C)z-25 D)y (字母共有26个,而z是最后一个) 10.下面程序的输出结果是(C)。

int main( )

{ double d= ;

int x=, y ;

y=(x+/ ;

printf("%d\n",d*y);}

A) 3 B) C)0 D)

11.下面程序的输出结果是( C )。(提示:输出时无定界符)

int main()

{ int k=17;

printf("%d,%o,%x\n",k,k,k);}

A)17,17,17 B)17,021,0x11 C)17,21,11 D)17,0x11,021

12.下列程序执行后的输出结果是(C)。

int main()

{ char x =OxFFFF;

printf("%d\n",x--);}

A)-32767 B)FFFE C)-1 D)=-32768

("a\bre\'hi\'y\\\bou\n");的输出结果是(C)。

A)a\bre\'hi\'y\\\bou B)a\bre\'hi\'y\bou

C)re'hi'you D)abre'hi'y\bou

14.有定义语句:int x,y;若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中错误的是(A)。

A)11<空格>12<回车> B)11,<空格>12<回车>

C)11,12<回车> D)11,<回车>12<回车>

15.有以下程序段:

int m=0,n=0;

char c=‘a';

scanf("%d%c%d",&m,&c,&n);

printf("%d,%c,%d\n",m,c,n);

若从键盘上输入:10A10 <回车>,则输出结果是(A)。

A)10,A,10 B)16,a,10 C)10,a,0 D)10,A,0

16.若变量已正确说明为int类型,要通过语句scanf("%d %d %d ",&a,&b,&c);

给a赋值1,b赋值2,c赋值3,不正确的输入形式是(B)。

A) 1<空格>2<空格>3<回车> B)1,2,3<回车> C)1<回车>2<空格>3<回车> D)1<空格>2<回车>3<回车>

, b,c被定义为int型变量,若从键盘给a, b,c输入数据,正确的输入语句是(D) A)input a,b,c; B)read("%d%d%d",&a,&b,&c); C)scanf("%d%d%d",a,b,c);

D)scanf("%d%d%d",&a,&b,&c);

18.已知a,b,c为int型变量,若从键盘输入:1,2,3<回车>,使a的值为1,b的值为2,c的值为3,以下选项中正确的输入语句是(B)。

A)scanf("%2d,%2d,%2d",a,b,c); B)scanf("%d,%d,%d",&a,&b,&c);

C)scanf("%d %d %d",&a,&b,&c); D)scanf("i=%dj=%d,k=%d",&a,&b,&c);

19.执行下程序时输入:123<空格>456<空格>789<回车>,输出结果是( D )。

int main()

{char s;

int c,i;

scanf("%c",&c);

scanf("%d",&i);

scanf("%c",&s);

printf("%c,%d,%c\n",c,i,s);}

A)123,456,789 B)1,456,789 C)1,23,456,789 D) 1,23,

20.已定义c为字符型变量,则下列语句中正确的是( C )。

A)c='97 ' B)c=“97 “ C)c=97 D)c=“a”

21.以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错。#include <>

void main()

{

int r;

float s;

scanf("%d",&r);

s=p*r*r;

printf("s=%f\n",s);

}

出错的原因是()。

A)注释语句书写位置错误

B)存放圆半径的变量r不应该定义为整型

C)输出语句中格式描述符非法

D)计算圆面积的赋值语句中使用了非法变量

答案:D

22.有以下程序

#include <>

void main( )

{

int m=12,n=34;

printf("%d%d",m++,++n);

printf("%d%d\n",n++,++m);

}

程序运行后的输出结果是()。

答案:A

23.数字字符0的ASCII值为48,若有以下程序

#include <>

void main( )

{

char a='1',b='2';

printf("%c,",b++);

printf("%d\n",b-a);

}

程序运行后的输出结果是______。

A)3,2 B)50,2 C)2,2 D)2,50

答案:C

24.有以下程序

#include <>

void main( )

{

char c1='1',c2='2';

c1=getchar( ); c2=getchar( ); putchar(c1); putchar(c2);

}

当运行时输入:a<回车> 后,以下叙述正确的是______。

A)变量c1被赋予字符a,c2被赋予回车符

B)程序将等待用户输入第2个字符

C)变量c1被赋予字符a,c2中仍是原有字符2

D)变量c1被赋予字符a,c2中将无确定值

答案:A

25.

【选择结构程序设计】

1.有变量说明语句int a,b ,c;,顺序执行下面语句:

a=b=c=1;

++a||++b&&++c;

那么,变量b的值应是( B )

A.2 B.1 C.0 D.3

2.有变量说明int a=3;,则表达式a<1&&--a>1的运算结果和a的值应该是( B )A.0和2 B.0和3 C.1和2 D.1和3

3.设int a=3,b=4,c=5;,下列表达式的值不为1的是( A )。

A)a+b>c&&b==c B)a||b+c&&b-c

C)!(a>b)&&!c||1 D)!(a+b)+c-1&&b+c/2

4.#include<>

int main( )

{

int a,b,c;

a=10;b=50;c=30;

if(a>b) a=b;b=c;c=a;

printf(“a=%d,b=%d,c=%d\n”,a,b,c);

}

程序的输出结果是( C )。

=10, b=50, c=10 B. a=10, b=50, c=30

=10, b=30, c=10 D. a=50, b=30, c=50

5.若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a

(A)1 (B)2 (C)3 (D)4

6.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是( C )。A)abs(x-y)<10 B)x-y>-10&&x-y<10 C)!(x-y)<-10||!(y-x)>10 D)(x-y)*(x-y)<100

7.若有定义:int a=7;f1oat x=,y=;则表达式x+a%3*(int)(x+y)%2/4的值是( A )。

A) B) C) D)

8.若有定义和语句:

int s,p;

s=p=5; p=s++,++p,p+2,p++;则执行语句后 p的值是( C )

A)9 B)8 C)7 D)6

9.若有定义:int a,b;则表达式 a=4,b=3,a+b+2,a++,a+b+2的值为( C )。

A) 12 B)11 C)10 D)无答案

10.己知int k=10 , m=3,n;则下列语句的输出结果是( B )。

printf("%d\n",n=(k%m,k/m));

A) 2 B)3 C)4 D)5

11.设x和y均为int型变量,则以下语句:x+=y; y=x-y; x-=y; 的功能是()。

A) 把x和y按从大到小排列 B) 把x和y按从小到大排列

C) 无确定结果 D) 交换x和y中的值

答案:D

12.设int i=2,j=3,k=4,a=4,b=5,c=3;,则执行表达式(a=ik)&&(c=i,j,k)后,c值是()。

A)0 B)1 C)2 D)3

答案:D

13.若x、a、b、c均为int型变量,则执行表达式x= (a = 4, b = 8, c = 12)后,x的值为_______。A)4 B)8 C)12 D)24

答案:C

14.以下程序的输出结果是_______。

#include <>

void main()

{

int a=-1, b=4, k;

k = ( ++a < 0) && ( b += 5);

printf ("%d%d%d \n", k, a, b );

}

A)104 B)103 C)003 D)004

答案:D

15.下列运算符中,结合方向为自左向右的是()。

(A)?:(B),(C)+ = (D)+ +

答案:(B)

16.下列运算符中优先级最高的是()

A)! B)% C)- = D)&&

答案:(A)

17.有以下程序

#include <>

void main( )

{

int m=3,n=4,x;

x=-m++;

x=x+8/++n;

printf("%d\n",x);

}

程序运行后的输出结果是()。

A)3 B)5 C)-1 D)-2

答案:D

18.

【循环结构练习题】

1.下面有关for循环的正确描述是( )

A.for循环只能用于循环次数已经确定的情况

B.for循环是先执行循环体语句,后判定表达式

C.在for循环中,不能用break语句跳出循环体

D.for循环体语句中,可以包含多条语句,但要用花括号括起来答案:D

2.对于for(表达式1;;表达式3)可理解为()

A.for(表达式1:1;表达式3)

B.for(表达式1;1;表达式3)

C.for(表达式1;表达式1;表达式3)

D.for(表达式1;表达式3;表达式3)

答案:B

3.以下正确的描述是( )。

A.continue语句的作用是结束整个循环的执行

B.只能在循环体内和switch语句体内使用break语句

C.在循环体内使用break语句或continue语句的作用相同

D.从多层循环嵌套中退出时,只能使用goto语句

答案:B

4.下面程序段不是死循环的是( )。

A.int I=100; B.for ( ; ; );

while(1)

{ I=I%100+1;

if(I>100) break;}

C.int k=0; D.int s=36;

do{- -k; } while(s);

while(k>=0); --s;

答案:C

5.以下能正确计算1*2*3*……*10的程序是( )。

A.do{i=1;s=1; B.do{i=1;s=0;

s=s*i; s=s*i;

i++; i++;

}while(i<=10); }while(i<=10); C.i=1;s=1; D.i=1;s=0;

do{ s=s*i; do{ s=s*i;

i++; i++;

}while(i<=10); }while(i<=10); 答案:C

6.下面程序的运行结果是( )。

#include <>

int main( )

{ int y=10;

do{y--;}

while(--y);

printf("%d\n",y--);}

A.-1 B.1 C.8 D.0

答案:D

7.下面程序的运行结果是( )。

#include<>

int main()

{ int num=0;

while(num<=2)

{num++;

printf("%d\n",num);

}

}

A.1 B.1 2 C.1 2 3 D.1 2 3 4

答案:C

8.若运行以下程序时,从键盘输入 表示回车),则下面程序的运行结果是( )。

#include<>

#include<>

void main( )

{ float x,y,z;

scanf(“%f%f”,&x,&y);

z=x/y;

while(1)

{ if(fabs(z)>

{ x=y;y=z;z=x/y;}

else

break;

}

printf(“%f\n”,y);

}

A. B. C. D.

答案:B

9.有以下程序:

#include <>

void main( )

{

int i=0,s=0;

for(; ;)

{

if(i==3||i==5)continue;

if(i==6) break;

i++;

s+=i;

};

printf("%d\n",s);

}

程序运行后的输出结果是()。

A)10 B)13 C)21 D)程序进入死循环答案:D

10.若有程序段:

for (m=1;m<=100;m++)

{

scanf("%d",&y);

if(y<0) continue;

printf("%3d",m);

}

正确的描述是()。

A)当y<0时整个循环结束 B)y>=0时什么也不输出

C)printf函数永远也不执行 D)最多允许输出100个非负整数

答案:D

11.下列程序的运行结果是()。

# include “”

void main( )

{ int i=23;

do{++i;}

while(i);

printf(“%d”,i);

}

A)23 B)24 C)死循环 D)无任何结果

答案:C

12.

二、填空题

【顺序结构程序设计】

1.有以下程序:

int main()

{ int m,n,p;

scanf("m=%dn=%dp=%d",&m,&n,&p);

printf("%d%d%d\n",m,n,p);}

若想从键盘上输入数据,使变量m中的值为123, n中的值为456, p中的值为789,则正确的输入是

m=123n=456p=789。

2.以下程序段的输出结果是 28 。

int main()

{ int a=2,b=3,c=4;

a*=16 +(b++)-(++c);

printf("%d",a);}

3.以下程序段的输出结果是 5 。

int x=17,y=26;

printf("%d",y/=(x%=6));

4.下列程序的输出结果为 12 。

int main()

{ int x=3,y=5;

printf("%d",x= (x--)*(--y));}

5.若有以下程序:

int main()

{ char a;

a=‘H’-‘A’+‘0’; (‘0’,’o’) printf("%c, %d\n",a,a);}

执行后的输出结果是 7,55 。

6.以下程序段的输出结果是 261 。

void main()

{ int a=177;

printf("%o\n",a); }

7.以下程序的输出结果是 0 (-32767~32767int) 。void main( )

{ unsigned short a=65536; int b;

printf("%d\n",b=a); }

提示:当unsigned short和int 均占2个字节时。

8.输入“12345,xyz”,下列程序输出的结果是。

int main( )

{ int x;char y;

scanf (“%3d%3c”,&x,&y);

printf (“%d,%c”,x,y);}

答案:123,4

9.以下程序的运行结果是。

#include <>

void main( )

{

int i=8,j=9,m,n;

m=++i;

n=j++;

printf("%d,%d,%d,%d\n",i,j,m,n);

}

答案:9,10,9,9

10.下列程序的输出结果是。

#include <>

void main( )

{

int a = 3 , b = 14 , c = 5 ;

c = c + a *a + b % 5 * 10 ;

printf("%o\n" , c );

}

答案:66

11.阅读程序,并按给定的输出格式将程序运行结果写在“运行结果:”之后

#include <>

void main( )

{

int a, b, c;

a = (

b = (

c = 3) * 5)*5;

printf ("a=%d, b=%d, c=%d \n", a, b, c);

}

运行结果是:

答案:运行结果是:a = 75, b = 15, c = 3

12.

【选择结构程序设计】

1.以下程序运行的结果是。

#include <>

void main( )

{

int a,b,c;

a=1;b=2;c=3;a=b--<=a||a+b!=c;

printf("%d,%d",a,b);

}

答案:1,1

2.以下程序的运行结果是。

#include <>

void main( )

{

int a,b,c;

a=b=c=1;

if (a++||++b) c++;

printf("%d,%d,%d\n",a,b,c);

}

答案:2,1,2

3.以下程序的输出结果是。

#include <>

void main( )

{

int k, i=0, j=2;

k = i++&&j++;

printf ("%d,%d,%d\n", i, j, k);

}

答案:1,2,0

4.

【循环结构程序设计】

1.若运行以下程序时,从键盘输入ADescriptor↙,则下面程序的运行结果是 v0=12,v1=4,v2=12 。#include <>

void 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); }

2.下面程序的运行结果是 8,-2 。

#include<>

void main( )

{ int i,b,k=0;

for(i=1;i<=5;i++)

{ b=i%2;

while(b- ->=0) k++;

}

printf(“%d,%d”,k,b);

}

3.下面程序的运行结果是 8,22 。

#include<>

void main( )

{ int a,b;

for (a=1,b=1;a<=100;a++)

{ if(b>=20) break;

if(b%3==1) {b+=3; continue;}

b-=5;

}

printf(“%d,%d\n”,a,b);

}

4.下面程序的运行结果是 x=8 。

#include<>

void 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);

}

5.下面程序的运行结果是 *#*#*#$ 。

#include<>

void main( )

{ int i;

for (i=1;i<=5;i++)

{ if(i%2) printf(“*”);

else continue;

printf(“#”);

}

printf(“$\n”);

}

6.下面程序的运行结果是 4 。

#include<>

void main()

{

int i,j,a=0;

for(i=0;i<2;i++)

{ for (j=0; j<4; j++)

{ if (j%2) break;

a++;

}

a++;

}

printf(“%d\n”,a);

}

7.有以下程序, 若从键盘输入:247<回车>,则程序的输出结果是。

#include <>

void main( )

{

int c;

while ((c=getchar())!='\n')

{

switch (c-'2')

{

case 0:

case 1: putchar(c+4);

case 2: putchar(c+4);break;

case 3: putchar(c+3);

default:putchar(c+2);break;

}

}

}

答案:6689

8.

三、程序填空题

1.下面程序的功能是将小写字母变成对应的大写字母后的第二个字母,其中y变成A,z变成B,请在空白处填入正确内容。

#include<>

void main( )

{

char c;

while((c=getchar())!=’\n’)

{ if(c>=’a’&&c<=’z’)

{ ;

if(c>’Z’&&c<=’Z’+2);

;

}

printf(“%c”,c);

}

}

答案:c-=30,c-=26。

2.下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数 n,并输出m,n中的较大数,请在内填入正确内容。

#include<>

void main( )

{

int m=0,n=0;

char c;

while(( )!=’\n’)

{ if(c>=’A’&&c<=’Z’) m++;

if(c>=’a’&&c<=’z’) n++;

}

printf(“%d\n”,m

}

[解答]:c=getchar( ),n:m。

3.从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束。请在内填入正确内容。

#include <>

void main( )

{

float x, amax, amin;

scanf(“%f”,&x);

amax=x;

amin=x;

while( )

{

if(x>amax)

amax=x;

if( )

amin=x;

scanf(“%f”,&x);

}

printf("amax=%f\namin=%f\n",amax, amin);

}

相关文档