当前位置:文档之家› C语言程序设计课后题答案

C语言程序设计课后题答案

C语言程序设计课后题答案
C语言程序设计课后题答案

习题一

一、选择题

1.C程序的基本单位是(A)。

A.函数B.文件C.语句D.字符

2.C程序中的变量(B)。

A.不用说明B.先说明后引用

C.先引用后说明D.引用和说明顺序无关

3.变量的说明在(B)。

A.执行语句之后B.执行语句之前

C.执行语句当中D.位置无关

4.C语言是一种(C)。

A.机器语言B.符号语言

C.高级语言D.面向对象的语言

二、填空题

1.一个C程序总是从主函数开始执行。

2.结构化程序由顺序、选择、循环三种基本结构构成。

3.一个C程序只有一个名为main的主函数。

4.C程序中的每个语句以分号结束。

5.C程序中,函数由函数首部和函数体组成。

6.每个基本结构有一个入口和一个出口,没有死循环和死语句。7.算法是计算机解决问题所依据的步骤。

习题二

一、选择题

1.下列数据中属于字符串常量的是( B)。

A.ABC B."ABC" C.'abc' D.'A'

2.在计算机内存中,'\n'占用的字节数是( C)。

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

3.字符串"ABC"在内存中占用的字节数是( D)。

A.6 B.8 C.3 D.4

4.在C语言中,合法的长整型常数是( B)。

A.568701400 B.0L C.0.03546287 D.2.654e11

5.char型常量在内存中存放的是( A)。

A.ASCII代码值B.BCD代码值

C.十进制代码值D.内码值

6.下列各项中正确的标识符是( D)。

A.?bb B.a=8 C. b.βD.b_4

7.下列不正确的转义字符是( D)。

A.\\ B.\ 0 C.\" D.0x4

8.设整型变量a、b的值均为5,则表达式(m=n=a++)/(n=b-2)的值为( B)。

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

9.设a的值为5,执行下列语句后,b的值不为2的是( C)。

A.b=a/2 B.b=6-(--a) C.b=a%2 D.b=(float)a/2

10.执行语句x=(a=3,b=a--)后,x、a、b的值依次是( C)。

A.3,3,2 B.3,2,2 C.3,2,3 D.2,3,2

11.设有语句int a=3;,则执行了语句a+=a-=a*a;后,变量a的值是( D)。

A.3 B.0 C.9 D.-12

12.在下列运算符中,优先级最高的是( B)。

A.&& B.% C.= D.>=

13.设整型变量a的值为3,则计算表达式a---a后,表达式的值为(B)。

A.1 B.0 C.2 D.表达式出错

14.设整型变量a、b、c的值均为2,表达式a---b+++c++的结果是( C)。

A.6 B.9 C.2 D.表达式出错

15.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是( D)。

A.1 B.2.5 C.2 D.2.0

16.下列表达式中符合C语言语法的赋值表达式是( C)。

A.a=4+b++c=a+8 B.a=4+b++=a+8

C.a=(4+b,b++,a+8) D.a=4+b,c=a+8

17.若有以下定义:char a;int b;float c;double d;,则表达式a*b+d-c的值的类型为( D)。

A.int B.float C.char D.double

二、填空题

1.在内存中存储"A"要占 2 个字节,存储'A'要占 1 个字节。

2.符号常量的定义方法是 #define 常量名常量。

3.无符号基本整型的数据类型符为 unsigned int双精度实型数据类型符为 double ,字符型数据类型符为 char 。

4.十进制数673的二进制、八进制和十六进值数分别为 1010100001 、 2412 和 2A1 。

5.在C语言中,书写八进制数时必须加前缀 0 ;书写十六进制数时必须加前缀 0x 。6.在微机上,int型、short型、long型、float型和double型数据一般在内存中分别占 2 字节、 2 字节、 4 字节、 4 字节和 8 字节。

7.设有下列运算符:<<、+、++、&&、>=,其中优先级最高的是 ++ ,优先级最低的是 && 。8.设x、y为int型变量,且x=1,y=2,则表达式1.0+x/y的值为 1.0 。

9.设整型变量x、y、z均为5,则:

①执行x-=y-z后,x的值为 5 。

②执行x%=y+z后,x的值为 5 。

10.数学式

a

b×c

的C语言表达式为 a/b*c) 。

三、简答题

1.字符常量与字符串常量有什么区别?

2.对于Turbo C系统来说,char型变量与int型变量在内存中存储数据的区别是什么?3.整型变量可细分为哪六类?

4.什么是一个实型数据的规范化指数形式?

5.设x=3.5,a=5,y=6.7,求算术表达式x+a%3*(int)(x+y)%2/4的值。

6.设a=2,b=3,x=4.5,y=1.6,求表达式(float)(a+b)/2+(int)x%inty的值。

7.设整型变量a=12,写出下列表达式运算后a的值。

① a*=2+5 ② a/=a+a ③ a+=a-=a*=a

8.写出下列程序的运行结果。

main()

{ char c1='A',c2='B',c3='C',c4='\101',c5='\h42';

printf("A%cb%c\t%c\t bc\n",c1,c2,c3);

printf("\t\b%c%c",c4,c5);

}

结果:AAbB C abc

AB

9.写出下面程序的运行结果。

main()

{ int i,j,m,n;

i=5;

j=6;

m=++i;

n=--j;

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

}

结果:6,5,6,5

习题三

一、选择题

1.printf()函数输出实数时,使用的格式字符是(C)。

A.%d B.%c C.%f D.%o

2.下面变量说明中(C)是正确的。

A.char:a ,b ,c; B.char a;b;c;

C.char a , b , c; D.char a,b ,c

3.putchar()函数可以向终端输出一个(D )。

A.整型变量表达式值B.实型变量值

C.字符串D.字符或字符型变量值

4.阅读以下程序,当输入数据的形式为:25,13,10〈CR〉,正确的输出结果为( D )。

main()

{ int x,y,z;

scanf("%d%d%d",&x,&y,&z);

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

}

A.x+y+z=48 B.x+y+z=35 C.x+z=35 D.不确定值

5.以下说法正确的是( D )。

A. 输入项可以是一个实型常量

B. 只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d,b=%d");

C. 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f",&f);

D. 当输入数据时,必须指明变量的地址,如scanf("%f",&f);

6.以下能正确地定义整型变量a、b和c并为其赋初值5的语句是(C )。

A.int a=b=c=5; B.int a,b,c=5;

C.int a=5,b=5,c=5; D.a=b=c=5;

7.已知ch是字符型变量,下面正确的赋值语句是(B )。

A.ch='a+b'; B.ch='\xff'; C.ch='\08'; D.ch="\";

8.设x、y均为float型变量,则以下不合法的赋值语句是( B )。

A.++x; B.y=(x%2)/10; C.x*=y+8; D.x=y=0;

9.以下格式符中,不能用来输入实型数的是( B )

A.f B.e(E)C.g(G)D.x

10. 若float num=123.456,以%+10.4d的格式输出,结果正确的是( B )

A.123.456000 B. 123.4560 C.123.4560 D.+123.4560

二、填空题

1.以下程序的输出结果是 x=1 y=2 *sum*=3

10 squaredis :100 。

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

}

2.以下程序的输出结果是 a=325 x= 3.14 。

main()

{ int a=325;double x=3.1415926;

printf("a=%2d x=%7.2f\n",a,x);

}

3.假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。请填空:a+=b ; b=a-b ;a-=b ;

4.若x为int型变量,则执行以下语句后x的值是 -14 。

x=7;

x+=x-=x+x;

5.C语句可以分为五类,含 7 种控制语句、声明语句、表达式语句、空语句和复合语句。

6.赋值语句是由赋值表达式加上一个分号构成。

7.a=12,n=5,表达式a%=(n%=2)值是 0 。

8.有一个输入函数scanf("%d",k);则不能使float类型变量k得到正确数值的原因是 k前无& 和 %d与k的类型不一致。

9.putchar()函数可以向终端输出一个字符。

10.已有定义int i,j;float x;为将-10赋给 i,12赋给 j,410.34赋给x,则对应以下scanf()函数调用语句的数据输入形式是 -12 C 410.34 。

scanf("%o%x%e",&i,&j,&x);

11.pirntf()函数中用到格式符%5s,其中数字5表示输出的字符串占5列,如果字符串长度大于5,则按实际宽度输出。

12.使用getchar()和putchar()函数必须在源程序中加 #include"stdio.h" 。

三、简答及程序设计题

1.解释输入输出的概念。

2.已知圆柱高h=5,要求输入圆的半径,求出圆周长、圆面积和圆柱体积。找出错误,改正使其可以得出正确结果。

main()

{ int h=5;

float r,d,s,v;

d=2*3.14*r;

s=3.14*r*r;

v=s*h;

printf("d=%f,s=%f,v=%f",d,s,v);

}

3.下面程序用来求解总电流I,要求保留两位小数,已知输入值为220,30,60,45,正解为15.89,请分析得到15.00的原因。找出错误后改正。

main( )

{ int U,R1,R2,R3;

float I;

scanf("\n%d,%d,%d,%d",&U,&R1,&R2,&R3);

I=U/R1+U/R2+U/R3;

printf("\nI=%5.2f",I);

}

4.编写一个程序,从键盘上输入一个球的半径(实数),求此球的表面积和体积(保留两位小数)5.下面程序是用来输入三角形的三边长,求三角形面积的。请在【】处填入适当内容。

#include 【1】

main()

{ float a,b,c,s,area;

scanf("%f,%f,%f",【2】);

s=1.0/2*(a+b+c);

area=【3】;

printf("area=%7.2f\n",area);

}

6.编写程序,输入两个整数,求出它们的商数和余数并输出。

7.编写程序,读入三个双精度数,求它们的平均值,并保留此平均值小数点后的一位,对小数点后第二位进行四舍五入,输出结果。

8.编写程序,读入三个整数a、b、c,然后交换它们中的数:把a中的值给b,把b中的值给c,把c中的值给a。

习题四

一、选择题

1.执行下面的程序段后,b的值为(B)。

int x=35;

char z='A';

int b;

b=((x&&15)&&(z<'a'));

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

2.设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n-c>d)后n的值为(B)。

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

3.若k是int型变量,且有下面的程序段,输出结果是(A)。

K=-3;

if(k<=0) printf("####");

else printf("&&&&");

A.#### B.&&&&

C.####&&&& D.有语法错误,无输出结果

4.设A、B和C都是int型变量,且A=3,B=4,C=5,则下面表达式中值为0的达式是(D)。

A.A&&B B.A<=B

C.A‖B+C&&B D.!((A

5.阅读程序:

#include"stdio.h"

main()

{ float x,y;

scanf("%f",&x);

if(x<0.0) y=0.0;

else if((x<5.0)&&(x!=2.0))

y=1.0/(x+2.0);

else if(x<10.0) y=1.0/x;

else y=10.0;

printf("%f\n",y);

}

若运行时从键盘上输入2.0,则上面程序的输出结果是(C)

A.0.000000 B.0.250000

C.0.500000 D.1.000000

6.阅读程序:

#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.a=2,b=l B.a=l,b=l

C.a=l,b=0 D.a=2,b=2

7.下面程序的输出是(C)。

main( )

{ int a=–1,b=4,k;

k=(a++<=0)&&(!(b--<=0));

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

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

8.为表示关系x≥y≥z,应使用C语言表达式( A )。

A.(x>=y)&&(y>=z) B.(x>=y)AND(y>=z)

C.(x>=y>=z) D.(x>=y)&(y>=z)

9.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为( D)。

A.a<>0 B.!a C.a=0 D.a

10.若有以下定义:

float x; int a,b;

则正确的switch语句是(D)。

A.switch(x)

{case 1.0:printf("*\n");

case2.0:printf("**\n");}

B.switch(x)

{case 1,2:printf("*\n");

case 3:printf("**\n");}

C.switch(a+B)

{case 1:printf("\n");

case 1+2:printf("**\n");}

D.switch(a+b);

{case 1:printf("*\n");

case 2:printf("**\n");}

11.下列语句中,错误的是(C)。

A.while(a=b)a++; B.while(0); C.do D.do

{printf(“ok\n”); {x++;

}while(x==5) }while(--x==0);

12. 执行语句:for(i=1;i++<4; )后变量i的值为:(B)。

A.3 B.4 C.5 D.6

13. 以下程序的输出结果是:(D)。

main()

{ int x=10,y=10,i;

for(i=0;x>8;y=++i)

printf("%d %d",x--,y);

}

A.10 1 9 2 B.9 8 7 6 C.10 9 9 0 D.10 10 9 1 14. 以下for语句的循环次数为:( B )。

int i=0,j=0;

for(;!j&&i<=5;i++)j++;

A.5次B.1次C.6次D.无限多次

15. 以下程序段中内嵌循环共被执行的次数为:( A )

for(i=5;i;i--)

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

{…}

A.20 B.24 C.25 D.30

二、填空题

1.设ch是char型变量,其值为A,且有下面的表达式:

ch=(ch>'A'&&ch<='Z')? (ch+32):ch

该表达式的值是 A。

2.若已知a=10,b=20,则表达式“!a

3.已知a=10,b=20,c=30,则表达式

a=25&&b--<=2&&c++?printf("***a=%d,b=%d,C=%d\n",a,b,c):printf("###a=%d,b=%d,C=%d\n",a,b,c);的值为###a=10,b=19,c=30 。

4.下面程序的输出结果是 0,0,4 。

main()

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

k=(++a<0)&&!(b-->=0);

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

}

5.假定所有变量均已正确说明,下列程序段运行后,x的值是 4 。

a=b=c=0; x=35;

if(!a) x--;

else if(b); if(c) x=3;

else x=4;

6.若执行下面的程序时,从键盘上输入3和4,则输出结果是 3 。

main( )

{ int a,b,s;

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

s=a;

if(a&&b) printf("%d\n",s);

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

}

7.以下程序的输出结果是 x=11,i=11 。

main()

{ int x=1,i=1;

for(;x<50;i++)

{if(x>=10)

break;

if(x%2!=1)

{x+=3;

continue;

}

x-=1;

}

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

}

8.以下程序的输出结果是 i=9,j=10 。

main()

{ int i=10,j=0;

do

{j=j+i;

i--;

}while(i>j);

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

}

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

main()

{int m=7,n=5,i=1;

do

{if(i%m==0)

if(i%n==0)

{printf(“%d\n”,i);break;}

i++;

}while(i!=0);

}

10.以下程序的输出结果是1,-2 。

main()

{ int x=3;

do

{printf("%d",x-=2);

}while(!(--x));

}

11.以下程序的输出结果是 i=4,j=6 。

main()

{ int i,j;

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

{for(j=1;j<10;j++)

if(j==6)

break;

if(i<3)

continue;

if(i>3)

break;

}

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

}

三、编程题

1.给出一个不多于5位的正整数,求出它是几位数,分别打印出每一位数字,然后再按逆序打

印出各位数字。

2.编写程序,输入一位学生的生日,并输入当前的日期,输出该生的实足年龄。 3.编写程序,输入一个整数,打印它是奇数还是偶数。 4.某企业利润提成的规则如下:

① 利润低于或等于10万元的,可提成奖金10%;

② 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,另外部分可以提成7.5%;

③ 利润高于20万元低于40万元的,其中20万元按前面的方法发放,另外的部分按5%提成; ④ 利润高于40万元的,40万元按前面的方法提成,高于部分按3%提成。请从键盘输入利润,输出应发的提成。

5.求5~100之间能被5或7整除的数。 6.求1~100之间所有素数之和。

7.水仙花数是指一个三位十进制数,它的各位数字的立方之和等于它本身。例如:153=13+53+33,所以153是一个水仙花数。求出所有的水仙花数。 8.有一分数数列: ++++++13

218

135

83

52

31

2

求出这个数列的前30项之和。

9.猴子吃桃问题。猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个,第二

天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃前一天剩下的一半另加一个。到第十天早上吃时,只剩下一个桃子了。求猴子第一天共摘了多少桃子。

习 题 五

一、选择题

1.下列为一维数组初始化时, 正确的是( D ).

A .int a[ ]={1,3,5,7,9,…,15};

B .int a[5]={ };

C .int a[5]={5*3};

D .int a[5]={0};

2.下列一维数组说明中,正确的是( A ).

A .#define M 10

B .int m;

float s[M];

scanf(“%d ”,&m);

float a[m];

C .int m=10, a[m];

D .int a[ ]; 3.若要将2,4,6,8存入数组a 中,不正确的是( C ).

A .int a[4]={2,4,6,8};

B .int a[ ]={2,4,6,8};

C .int a[4]; a={2,4,6,8};

D

int

a[4];

a[0]=2;a[1]=4,a[2]=6;a[3]=8;

4.若有说明: int a[5][5]; 则对数组元素的正确引用是( C ).

A .a[3+2][3]

B .a[0,3]

C .a[4][1+2]

D .a[ ][2]

5.下列二维数组初始化中,错误的是( A ).

A .int a[2][ ]={{3,4},{5}};

B .int a[][3]={2,3,4,5,6,7};

C .int a[3][3]={0};

D

int

a[5][4]={{1,2},{2,3},{3,4},{4,5}};

6.若有以下数组定义: char ch[]="book_120\n"; 则数组ch 的存储长度是(D )。

A .7

B.8

C.9

D.10

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

char str[8]={'a','b','c','d','\0','y','z','\0'};

printf("%s",str);

A.abcd B.abcd yz C.abcdyz D.出错

8.设有如下定义:

char s1[20]="tianjin", s2[10]="beijing";

执行语句:strcpy(s1+4,s2); printf("%s",s1);后,输出结果是( B ).

A.tian B.tianbeijing C.tianjinbeijing D.tianbeij 9.合法的数组定义是( B )

A.int a[ ]={"string"}; B.int a[ ]={0, 1, 2, 3, 4, 5};

C.char a={"string"}; D.char a[ ]={0, 1, 2, 3, 4, 5}; 10.若有以下说明,则数值为4的表达式是( D )

int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};

char c='a',d,g;

A.a[g-c] B.a[4] C.a['d'-'c'] D.a['d'-c]

11.下列语句中,正确的是( D )

A.char a[3][ ]={'abc', 'I'}; B.char a[ ][3]={'abc', 'I'};

C.char a[3][ ]={ 'a', "I"}; D.char a[ ][3]={"abc", "I"}; 12.设有如下定义,则正确的叙述为( C )

char x[]={"abcdefg"};

char y[]={'a','b','c','d','e','f','g'};

A.数组x和数组y等价B.数组x和数组y的长度相同

C.数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度

二、填空题

1.设有定义语句“int a[3][4]={{1}, {2}, {3}}”,则a[1][1]值为 0 ,a[2][1]的值为 0 。

2.执行“int b[5]={ }, a[ ][3]={1, 2, 3, 4, 5, 6}”后,b[4]= 0 ,a[1][2]= 6 。3.下面程序的功能是输出数组s中最大元素的下标,请填空。

main()

{ int k,p;

int s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++) k=p;

if (s[p]>s[k])

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

}

4.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。

#include"string.h"

main ()

{ int i,j, k ;

char str[ ]={ "1234567"};

for(i=0,j=strlen(str) /2 ; i

{k=str[i]; str[i]=str[j];str[j]=k;}

}

5 方阵的主对角线元素乘积,请填空。

5.下面程序求5

#include

main()

{ int a[5][5],i,j,ss;

printf("input data:");

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

for(j=0;j<5;j++)

scanf("%d",&a[i][j]);

ss= 1 ;

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

ss= ss* a[i][j] ;

printf("ss=%d\n",ss);

}

6.以下程序求任意10个实数的最大值和最小值。

#include

main()

{ int i;

float a[10],max,min;

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

scanf("%f",&a[i]);

max=min=a[0];

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

{ if(max

if(min>a[i]) min=a[i] ;

}

printf("最大值=%f\n",max);

printf("最小值=%f\n",min);

}

7.以下程序求二维数组中每行元素的最大值。

#include

#define M 4

#define N 5

main()

{ int a[M][N],amax,i,j;

for(i=0;i

for(j=0;j

scanf(”%d”,&a[i][j]);

for(i=0;i

{ amax=a[i][0] ;

for(j=1;j

if(a[i][j]>amax) amax=a[i][j];

printf("%d %d\n",i,amax);

}

}

三、上机练习题

1.输入一串字符,统计其中数字字符的个数。

2.输入10个数,将这10个数按由大到小的次序排序后输出。

3.输入一个5行6列的二维数组,求该数组每列元素之和,输出结果。

4.向数组a中输入30个整数,编程序分别将这30个数中的正数存入数组az中,负数存入数组af中,并分别输出az和af中的内容。

四、编程题

1.编写程序,将10个数34、3、29、63、70、16、85、82、90、93存放于一个数组,求出这10个数的和及平均值、最大值、最小值。

2.编写程序,读50个数存放于一数组,求出该数组中最大值、最小值及所在位置。

3.将存放于上题数组中的50个数分别按升序、降序排序。

4.编写程序,从键盘输入某班学生C语言课程考试成绩,评定每个学生C语言成绩等级。如果高于平均分10分,等级为优秀;如果低于平均分10分,等级为一般;否则等级为中等。5.编写程序,将一个一维数组进行逆置。例如,原来顺序为1、3、5、7,则逆置后的顺序为7、

5、3、1。

6.编写程序,从键盘输入两个4×4的矩阵A和B,求出两矩阵的和及差,并按矩阵形式输出。

进一步考虑求出矩阵A与B的乘积。

7.编写程序,将一个二维数组的行列互换。进一步考虑用函数实现。

8.编写程序,输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。

9.有一篇文章,共3行,每行有80个字符。编写程序,统计其中大写字母、小写字母、数字空格、其他字符各有多少个。

10.编写n个学生、m门课程的成绩处理程序:

①实际学生人数、课程门数由键盘输入。

② n个学生、m门课程的成绩用二维实型数组描述,并可相关考虑学生姓名、学号。

③求出每个学生的总成绩、平均成绩,并按总成绩排序。

④求出每门课程的平均成绩。

习题六

一、选择题

1.以下叙述不正确的是( D )。

A.一个C源程序可由一个或多个函数组成

B.一个C源程序必须包含一个main()函数

C.C程序的基本组成单位是函数

D.C程序中的注释说明只能位于一条语句的后面

2.以下关于C语言函数参数的说法不正确的是( B )。

A.实参可以是常量、变量或表达式B.形参可以是常量、变量或表达式

C.实参可以为任意类型D.形参应与其对应的实参类型一致

3.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( C )。

A.地址传递B.由实参传给形参再由形参传回给实参

C.单向值传递D.由用户指定传递方式

4.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( B )。

A.float型B.int型C.long型D.double型

5.C语言规定,函数返回值的类型是由( D )。

A.return语句中的表达式类型所决定B.调用该函数时的主调函数类型所决定

C.调用该函数时系统临时决定D.定义函数时所指定的函数类型所决定

6.在C语言程序中,以下正确的描述是( C )。

A.函数可以嵌套定义,但不可以嵌套调用B.函数的定义和调用均可以嵌套

C.函数不可以嵌套定义,但可以嵌套调用 D.函数的定义和调用均不可以嵌套

7.若用数组名作为函数调用的实参,传递给形参的是( A )。

A.数组的首地址B.数组第一个元素的值

C.数组中全部元素的值D.数组元素的个数

8.如果在一个函数中的复合语句中定义了一个变量,以下关于该变量正确的说法是( A )。

A.只在该复合语句中有效B.在该函数中有效

C.在本程序范围内均有效D.为非法变量

9.以下不正确的说法为( D )。

A.在不同函数中可以使用相同名字的变量

B.形式参数是局部变量

C.在函数内定义的变量只在本函数范围内有效

D.在函数内的复合语句中定义的变量在本函数范围内有效

10.以下程序的正确运行结果是( A )。

#include

main()

{ int k=4,m=1,p;

p=func(k,m);printf("%d,",p);

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

}

func(int a,int b)

{ static int m=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

A.8,17 B.8,16 C.8,20 D.8,8

11.在“文件包含”预处理语句的使用形式中,当#include后面的文件名用<>(尖括号)括起时,寻找被包含的文件的方式是( C )。

A.仅仅搜索当前目录

B.先在源程序所在目录搜索,再按系统设定的标准方式搜索

C.直接按系统设定的标准方式搜索目录

D.仅仅搜索源程序所在目录

12.以下程序的正确运行结果是( A )。

int d=1;

fun(int p)

{ int d=5;

d+=p++;

printf("%d,d);

}

main()

{ int a=3;

fun(a);

d+=a++;

printf("%d\n,d);

}

A.84 B.99 C.95 D.44

13.若有以下调用语句,则不正确的fun()函数的首部是( D )。

main()

{ …

int a[50],n;

fun(n,&a[9]);

}

A.void fun(int m,int x[ ]) B.void fun(int s,int h[41]) C.void fun(int p,int *s) D.void fun(int n,int a)

14.下面的程序执行后输出的结果是( A )。

f(int a)

{ int b=0;

static int c=3;

b++;c++;

return(a+b+c);

}

main()

{ int a=2,i;

for(i=0;i<3;i++) printf("%d ",f(a));

}

A.7 8 9 B.7 9 11 C.7 10 13 D.7 7 7

15.以下程序执行后的输出结果是( B )。

int a, b;

void fun()

{ a=100;b=200; }

main()

{ int a=5,b=7;

fun();

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

}

A.100,200 B.5,7 C.200,100 D.7,5

16.下列不属于编译预处理的是( D )。

A.包含文件B.条件编译C.宏定义D.连接

17.下列语句中正确的是( D )。

A.#define MYNAME="ABC" B.#include string.h

C.for(i=0;i<10;i++); D.#include

18.下列语句中错误的是( A )。

A.#define PI=3.1415926 B.#include "math.h"

C.if(2); D.for(;;)if(1)break;

19.设有以下宏定义,则执行语句“z=2*(N+Y(5+1));”后,z的值为( B )。

#define N 3

#define Y(n) ((N+1)*n)

A.出错B.42 C.48 D.54

20.以下程序中的for循环执行的次数是( C )。

#include "stdio.h"

#define N 2

#define M N+1

#define NUM (M+1)*M/2

main()

{ int i,n=0;

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

printf("\n");

}

A.5 B.6 C.8 D.9

二、填空题

1.C语言中的函数,从能否可以返回值上可分为有返回值函数和无返回值函数。2.定义函数时,在函数头中除有函数名称外,还应有函数类型、参数类型和名称等信息。3.必须对函数定义才能确立函数可实现的功能,只有对函数调用才能实现函数的功能。4.C语言中,函数的调用有函数语句、函数表达式和函数实参三种方式。

5.C语言中,每个变量都有作用域和生存期,变量的作用域是变量有效范围,变量的生存期是变量作用域。

6.对函数或变量的声明是告诉系统此程序段要用到在其后面才定义的函数或变量,使函数或变量的作用域得以扩展。

7.C语言中,变量的存储类型有 4 种,存储方式有 2 种。

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

void fun()

{ static int a=0;

a+=2;

printf("%d",a);

}

main()

{ int cc;

for(cc=1;cc<4;cc++) fun()

printf("\n");

}

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

main()

{ increment();

increment();

increment();

}

increment()

{ int x=0;

x+=1;

printf("%d",x);

}

10.以下程序执行后输出的结果是 34 。

#include

f(int a)

{ int b=0;

static c=3:

a=c++,b++;

return(a);

}

main()

{ int a=2,i,k;

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

k=f(a++);

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

}

11.以下程序执行后输出的结果是 4 。

long fib(int n)

{ if(n>2) return(fib(n-1)+fib(n-2));

else return(2);

}

main()

{ printf("%d\n",fib(3)); }

12.以下程序执行后输出的结果是 14 。

#include

long sum(register int x,int n)

{ long s;

int i;

register int t;

t=s=x;

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

{ t*=x;

s+=t; }

return(s);

}

main()

{ int x=2, n=3;

printf("s=%ld\n",sum(x, n));

}

13.设有定义如下:#define F(N) 2*N, 则表达式F(2+3)的值是 7 。

14.下面程序的执行结果是 5,6,12 。

#include

int fx(int x,int y)

{ int s;

s=(x++)+(++y);

return s;

}

main()

{ int a,b,k;

a=5;b=6;

k=fx(a,b);

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

}

15.下面程序for循环执行 6 次,程序的运行结果是 12345 。

#include

#define M 3

#define FMN M+M

main()

{int i,n=0;

for(i=0;i

{n++;printf("%d",n);}

}

16.下面程序的执行结果是 0 。

#include

#define SR(x) x*x

main()

{ int a,m=5,n=2;

a=SR(m-n)/SR(m+n);

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

}

17.设数组a有50个元素,函数fun1()的功能是按顺序分别给数组a中的元素赋以从2开始的偶数值,函数fun2()则按顺序每五个元素求一个平均值,并将求得的值放在数组s中,在空白处完成该程序。

#include

#define N 50

fun1(float a[])

{ int k,i;

for (i=0,k=2;i

{a[i]= k ;k+=2; }

}

fun2(float a[],float s[])

{ float sum=0;

int i,k;

for(i=0,k=0;i

{ sum+=a[i];

if((i+1)%5==0)

{ s[k]=sum/5;k++; sum=0 ; }

}

}

main()

{ float a[N],s[N/5];

int i;

fun1(a);

fun2(a,s);

for(i=0;i

printf("%5.1f ",a[i]);

printf("\n");

for(i=0;i

printf("%5.1f ",s[i]);

}

18.下面程序的运行结果是 abcxyz 。

#include

#include

main()

{ int k=0;

char s1[10]="abc",s2[10]="xyz";

strcat(s1,s2);

while(s1[k++]!='\0')

s2[k]=s1[k];

puts(s2);

}

19.下面程序经宏展开后,程序运行结果是 200 。

#define PR printf("sum=%d\n",sum)

#define ADD sum+=i

main()

{ int i,sum=0;

for(i=10;i<20;i++)

ADD;

PR;

}

三、编程题

1.编写一个函数,求解一元二次方程的根,要求一元二次方程的系数用参数传递。

2.编写一个函数,判断某年是否为闰年。

3.编写一个函数,判断某正整数是否为素数。

4.编写一个函数,求两个正整数的最大公约数和最小公倍数。

5.编写一个函数,倒置一个一维数组。

6.编写一个函数,用某种排序方法对一个一维数组进行排序。

7.用递归法将一个正整数转换成字符串。正整数的位数不确定。

8.编写一个函数mystrcmp(),实现字符串的比较。

9.编写一个函数mystrcpy(),实现字符串的复制。

10.编写一个主函数,调用写好的函数mystrcmp()和mystrcpy(),实现字符串的比较和复制。11.输入两个整数,求它们相除的余数,用带参数的宏来实现,编写程序。

12.定义一个宏,求一元二次方程根的判别式的值。

13.编写计算球体体积程序,用宏定义方式说明圆周率PI以及计算球体体积的公式4/3*PI*R3,其中R为半径。

14.编写程序,输入两个整数,求它们相除的余数,用带参数的宏来实现。

15.分别用函数和带参数的宏,求三个数的最大值。

16.定义一个带参数的宏,使两个参数的值互换。编写程序,利用带参数的宏,交换两个数。17.定义一个宏,用于判断某年是否为闰年。

习题七

一、选择题

1.变量的指针,其含义是指该变量的( B )。

A.值B.地址C.名D.一个标志

2.以下程序中调用scanf()函数给变量a输入数值的方法是错误的,错误原因是( B )。

main()

{ int *p,*q,a,b;

p=&a;

printf("input a :");

scanf("%d",*p);

}

A.*p表示的是指针变量p的地址

B.*p表示的是变量a的值,而不是变量a的地址

C.*p表示的是指针变量p的值

D.*p只能用来说明p是一个指针变量

3.以下程序错误的原因是( A )。

main()

{ int *p,i;

char *q,ch;

p=&i;

q=&ch;

*p=40;

*p=*q;

}

A.p和q的类型不一致,不能执行*p=*q;语句

B.*p中存放的是地址值,因此不能执行*p=40;语句

C.q指向具体的存储单元,所以*q没有实际意义

D.q虽然指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;语句4.已有定义int k=2; int *ptr1, *ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是(B )。

A.k=*ptr1+*ptr2; B.ptr2=k;

C.ptr1=ptr2; D.k=*ptr1*(*ptr2);

5.以下程序运行结果是( B )。

sub(int x ,int y ,int *z)

{ *z=y-x;}

main()

{ int a ,b,c;

sub(10,5,&a);

sub(7,a,&b);

sub(a,b,&c);

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

}

A.5,2,3 B.-5,-12,-7 C.-5,-12,-17 D.5,-2,-7 6.下面程序段的运行结果是( A )。

char *s="abcde";

s+=2;

printf("%d",s);

A.cde B.字符'c'

C.字符'c'的地址D.无确定的输出结果

7.若有以下定义,则对a数组元素地址的正确引用是(B )。

int a[5],*p=a;

A.*&a[5] B.a+2 C.*(p+5) D.*(a+2)

8.若有以下定义,则对a数组元素地址的正确引用是( A )。

int a[5],*p=a;

A.p+5 B.*a+1 C.&a+1 D.&a[0]

9.若有以下定义,则p+5表示( A )。

int a[10],*p=a;

A.元素a[5]的地址B.元素a[5]的值

C.元素a[6]的地址D.元素a[6]的值

10.若有以下定义,且0≤i<6,则正确的赋值语句是( D )。

int s[4][6],t[6][4],(*p)[6];

A.p=t; B.p=s; C.p=s[i]; D.p=t[i]; 11.下面程序段的运行结果是(A )。

char *format= "%s,a=%d,b=%d\n"

int a=1,b=10;

a+=b;

printf(format, "a+=b",a,b);

A.for, "a+=b",ab B.format, "a+=b"

C.a+=b,a=11,b=10 D.以上结果都不对

12.下面程序段的运行结果是( D )。

char *p= "%d,a=%d,b=%d\n";

int a=111,b=10,c;

c=a%b;

p+=3;

printf(p,c,a,b);

A.1,a=111,b=10 B.a=1,b=111

C.a=111,b=10 D.以上结果都不对

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

#include "stdlib.h"

fun (int **a,int p[2][3])

{ **a=p[1][1];}

main ()

{ int x[2][3]={2,4,6,8,10,12},*p;

p=(int *)malloc(sizeof(int));

fun (&p,x);

printf ("%d\n",*p);

}

A.10 B.12 C.6 D.8

14.设有如下定义,则以下说法中正确的是( C )。

char *aa[2]={"abcd","ABCD"};

A.aa数组元素的值分别是"abcd"和ABCD"

B.aa是指针变量,它指向含有两个数组元素的字符型一维数组

C.aa数组的两个元素分别存放的是含有四个字符的一维字符数组的首地址

D.aa数组的两个元素中各自存放了字符'a'和'A'的地址

15.设有以下定义,则下列能够正确表示数组元素a[1][2]的表达式是( D )。

int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};

int (*prt)[3]=a,*p=a[0];

A.*((*prt+1)[2]) B.*(*(p+5))

C.(*prt+1)+2 D.*(*(a+1)+2)

16.下列程序的输出结果是( B )。

main()

{ int a[5]={2,4,6,8,10},*p,**k;

p=a;

k=&p;

printf("%d",*(p++));

printf("%d\n",**k);

}

A.4 4 B.2 2 C.2 4 D.4 6

17.执行以下程序后,y的值是( C )。

main ()

{ int a[]={2,4,6,8,10};

int y=1,x,*p;

p=&a[1];

for(x=0;x<3;x++)

y+=*(p+x);

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

}

A.17 B.18 C.19 D.20

18.设有如下定义,则执行语句*--p;后*p的值是( B )。

int a[5]={10,20,30,40,50},*p=*a[2];

A.30 B.20 C.19 D.29

19.设有如下定义,则下列程序段中正确的是( C )。

char *st="how are you";

A.char a[11], *p; strcpy(p=a+1,&st[4]); B.char a[11]; strcpy(++a, st);

C.char a[11]; strcpy(a, st); D.char a[], *p; strcpy(p=&a[1],st+2); 20.若有以下说明和定义,在必要的赋值之后,对fun()函数的正确调用语句是( B )。

fun(int *c){ }

main()

{ int (*a)()=fun,*b(),w[10],c;

}

A.a(w); B.(*a)(&c); C.b=*b(w); D.fun (b);

21.有如下程序,该程序的输出结果是( C )。

main()

{ char ch[2][5]={"6937","8254"},*p[2];

int i,j,s=0;

for(i=0;i<2;i++) p[i]=ch[i];

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

for(j=0;p[i][j]>'\0';j+=2)

s=10*s+p[i][j]-'0';

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

}

A.69825 B.63825 C.6385 D.693825

二、填空题

1.指针运算符&和*分别称为取址运算和间接访问运算。

2.当用指针变量作为函数参数时,此时的参数传递是地址传递。

3.对于二维数组arr[5][5],arr,*arr,&arr[0],arr[2]+3,*(arr+2), *(arr[2]+3)的含义分别是5行5列元素值,0行地址,0行0列地址,0行地址,2行3列元素地址,2行0列地址,2行3列元素值。

4.函数的指针是函数入口地址。

5.返回指针值的函数是指针类型的函数。

6.若有说明语句 int a[3]={1,3,5},*p=a;则*++p,*p++,*p+1的值分别是 3,1,2 。

三、编程题(以下习题均要求用指针实现)

1.编写一个函数,判断某正整数是否为素数。

2.编写一个函数,求两个正整数的最大公约数和最小公倍数。

3.编写一个函数,倒置一个一维数组。

C语言程序设计试题及答案

C语言程序设计 一、选择题(共40分,每小题2分) 1、以下叙述不正确的是(D) A、一个C源程序可由一个或多个函数组成 B、一个C源程序必须包含一个main函数 C、C程序的基本组成单位是函数 D、在C程序中,注释说明只能位于一条语句的后面 2、下列四个选项中,是不合法的用户标识符的选项是(B) A、abc B、12AC C、sun D、A 3、设有语句inta=4;则执行了语句a+=a-=a*a后,变量a的值是(A) A、-24 B、0 C、4 D、16 4、下列运算符中优先级最高的是(B) A、< B、+ C、&& D、== 5、在C语言中,运算对象必须是整型数的运算符是(A) A、% B、/ C、%和/ D、+ 6、以下关于运算符的优先顺序的描述正确的是(C) A、关系运算符<算术运算符<赋值运算符<逻辑与运算符 B、逻辑与运算符<关系运算符<算术运算符<赋值运算符 C、赋值运算符<逻辑与运算符<关系运算符<算术运算符 D、算术运算符<关系运算符<赋值运算符<逻辑与运算符 7、在C语言中,如果下面的变量都是int类型,则输出的结果是(C) sum=pad=5;pAd=sum++,pAd++,++pAd; printf(“%d\n”,pad); A、7 B、6 C、5 D、4 8、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是(B)

A、INPUTx、y、z; B、scanf(“%d%d%d”,&x,&y,&z); C、scanf(“%d%d%d”,x,y,z); D、read(“%d%d%d”,&x,&y,&z); 9、假定从键盘输入23456<回车>,下面程序的输出结果是:(C)voidmain() {intm,n; scanf(“%2d%3d”,&m,&n); printf(“m=%dn=%d\n”,m,n); } A、m=23n=45 B、m=234n=56 C、m=23n=456 D、语句有错误 10、若运行时,给变量x输入12,则以下程序的运行结果是(A)main() {intx,y; scanf(“%d”,&x); y=x>12?x+10:x-12; printf(“%d\n”,y); } A、0B、22C、12D、10 11、C语言中while和do-while循环的主要区别(A) A、do-while的循环体至少执行一次 B、while的循环控制条件比do-while的循环控制条件严格 C、do-while允许从外部转到循环体内 D、do-while的循环体不能是复合语句 12、以下对二维数组的正确说明的语句是(C) A、inta[3][] B、floata(3,4) C、doublea[3][4] D、floata(3)(4) 13、以下程序的输出结果是(C) main()

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

C语言程序设计程序填空题库及答案

程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); }

【】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include <> double pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p

C语言程序设计试题集

第一章基础知识 一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。

程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。

C语言程序设计试题集与答案解析

一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。

13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.

C语言程序设计期末考试试题(含答案)

C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是( ) A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是( )

#include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是( ) #include main() { char c1='A',c2='Y'; printf("%d,%d\n",c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是( ) A、< B、十 C、% D、!= 12、设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) 13、判断char型变量cl是否为小写字母的正确表达式为( ) A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14、字符串"a"在内存中占据的字节个数为( ) A、0 B、 1 C、 2 D、 3 15、下面有关for循环的正确描述是( ) A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3

C语言程序设计习题集(3)

指针 一单项选择题(每题2分,共40分) 1 以下叙述中错误的是_B__。 A 在程序中凡是以“#”开始的语句行都是预处理命令行 B 预处理命令行的最后不能以分号表示结束 C #define MAX是合法的宏定义命令行 D C程序对预处理命令行的处理是在程序执行的过程中进行的 2 若程序中有宏定义行:#define N 100 ,则以下叙述中正确的是__B_。 A 宏定义行中定义了标识符N的值为整数100 B 在编译程序对C源程序进行预处理时用100替换标识符N C 对C源程序进行编译时用100替换标识符N D 在运行时用100替换标识符 3 若有如下宏定义: #define N 2 #define y(n) ((N+1)*n) 则执行下列语句:z=4*(N+y(5));后的结果是_B__。 A 语句有错误 B z值为68 C z值为60 D z值为180 4 以下程序运行后的输出结果是_A__。 #define F(X,Y) (X)*(Y) main() { int a=3,b=4; printf("%d\n",F(a++,b++)); } A 12 B 15 C 16 D 20 5 以下程序运行后的输出结果是_C__。 #define f(x) (x*x) main() { int i1,i2; i1=f(8)/f(4); i2=f(4+4)/f(2+2); printf("%d,%d\n",i1,i2); } A 64,28 B 4,4 C 4,3 D 64,64 6 若已定义a为int型变量,则__D_是对指针变量p的正确说明和初始化。 A int p=&a; B int *p=a; C int *p=*a; D int *p=&a; 7 已知下列说明语句: static int a[]={2,4,6,8} static int *p[]={a,a+1,a+2,a+3}; int **q; q=p; 则表达式**(q+2)的值是_A__。 A 6 B 2 C 4 D 8 8 下面是一个初始化指针的语句:int *px=&a;,其中指针变量的名字应该__C_。 A *px B a C px D &a 9 若指针px为空指针,则_B__。。

c语言程序设计第五版习题答案

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch 语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么?它由哪几部分组成? 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤? 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。

#include main() { printf("******\n"); printf(" *****\n"); printf(" ****\n"); printf(" ***\n"); printf(" **\n"); printf(" *\n"); } 【解答】运行结果为:****** ***** **** *** ** * 思考:可以修改程序,使之输出平行四边形,等腰三角形等图形。 三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* I love C programs! ************************* 【分析与提示】 ①要有文件包含语句#include 。C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。这些函数的说明都包括在stdio.h文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include main() { printf("************************\n"); printf(" I love C programs! \n"); printf("************************\n"); }

C语言程序设计 复习题库

一、填空 1. break 语句通常用于switch // 循环中。 2. C 语言对数组下标的引用一般从0 开始。 3. C 语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。 4. C 标准库函数中,字符串的处理函数包含在string.h 头文件中,数学函数包含在 math.h 头文件中。 5. C 程序的运行需要经过编译和链接两步进行。 6. C 程序中用/**/ 括起来的内容是程序的注释语句。 7. C 语言函数是由函数首部和函数体两部分组成。其中,函数首部包括函数类型、函数 名和函数参数。 8. C 语言提供的三种逻辑运算符是& ,// ,!。 9. C 语言源程序经过编译后,生成文件的后缀名是.c 。 10. C 语言源程序经过连接后,生成文件的后缀名是.exe 。 11. C 语言中,关系表达式和逻辑表达式的值是1//0 。 12. C 语言中的标识符只能由三种字符组成,他们是字母,数字,下划线。 13. C 语言中的每条基本语句以;作为结束符,每条复合语句以} 作为结束符。 14. C 语言中函数返回值的类型是由函数类型决定的。 15. C 源程序的基本单位是函数。 16. int a = 2, b = 3; 表达式 a > b ? a ++ : ++ b 的值为 4 。 17. int x=1,y=1,z=1; x+=y+=z; 则表达式xb>c 的值是0 。 19. 定义一个指针p,它指向一个有 6 个整型元素的一维数组,定义语句为int *p=a[6] ; 。 20. 定义一个指针数组p ,它有 4 个元素,每个指针指向一个整型数据,定义语句为int *p[4]; 。 21. 赋值语句是由= 加上一个分号构成。 22. 构成数组的各个元素必须具有相同的类型。 23. 关系表达式x+y>5 的相反表达式为x+y !>5 。 24. 函数strlen("1234\0xy") 的值为:9 。 25. 函数的形参在未被调用前不分配空间,函数形参的数据类型要和实参相同。 26. 函数体用{ 开始,用} 结束。 27. 结构化设计中的三种基本结构是顺序,选择,循环。

C语言程序设计期末练习填空题.docx

面向对象程序设计期末综合练习二(填空题) 填空题 1.C++ 语言是在 _________语言的基础上发展起来的。 2.C++ 语言的编译单位是扩展名为 __________的 __________文件。 3.行尾使用注释的开始标记符为 __________ 。 4.多行注释的开始标记符和结束标记符分别为__________ 和 __________。 5.用于输出表达式值的标准输出流对象是_________。 6.用于从键盘上为变量输入值的标准输入流对象是________。 7.一个完整程序中必须有一个名为 ________的函数。 8.一个函数的函数体就是一条 _________语句。 9.当执行 cin 语句时,从键盘上输入每个数据后必须接着输入一个________符,然后才能继续输入下一个数据。 10.在 C++程序中包含一个头文件或程序文件的预编译命令为__________。 11.程序中的预处理命令是指以______字符开头的命令。 12.一条表达式语句必须以 ______ 作为结束符。 13.在#include 命令中所包含的头文件,可以是系统定义的头文件,也可以是 ________定义的头文件。 14.使用 #include 命令可以包含一个头文件,也可以包含一个______文件。 15.一个函数定义由 ________和 ________两部分组成。 16.若一个函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的______语句。 17. C++头文件和源程序文件的扩展名分别为______和 ______。 18.程序文件的编译错误分为 ________和 ________两类。 19.当使用 _______保留字作为函数类型时,该函数不返回任何值。 20.当函数参数表用 ______保留字表示时,则表示该参数表为空。 21 .从一条函数原型语句“int fun1(void);”可知,该函数的返回类型为______,该函数带有______ 个参数。 22.当执行 cout 语句输出 endl 数据项时,将使 C++显示输出屏幕上的光标从当前位置移动到 ________的开始位置。 23.假定 x=5,y=6,则表达式 x++*++y 的值为 __________ 。 24.假定 x=5,y=6,则表达式x--*--y的值为__________。 25.假定 x=5,y=6,则执行表达式 y*=x++ 计算后, x 和 y 的值分别为 __________和 __________ 。 26.假定 x=5,y=6,则执行表达式 y+=x-- 计算后, x 和 y 的值分别为 __________和 __________ 。 27.C++ 常数 0x145 对应的十进制值为 __________。 28.C++ 常数 0345 对应的十进制值为 __________ 。 29.十进制常数 245 对应的十六进制的 C++表示为 __________。 30.十进制常数 245 对应的八进制的 C++表示为 __________ 。 31.signed char类型的值域范围是________至__________之间的整数。 32.int和float类型的数据分别占用_________和__________个字节。 33.float和double类型的数据分别占用_________和________个字节。 34.bool和char类型的数据分别占用_________和________个字节。 35.unsigned short int和int类型的长度分别为_________和________。

(完整版)C语言程序设计练习及答案

《C语言程序设计》练习及答案 得分评卷人复查人 一、单选题,每小题1分,共60分(将正确答案的序号写在题目的括号中)。 1、结构化程序设计的三种基本控制结构是(D )。 A、主程序、子程序、函数 B、输入、处理、输出 C、调用,返回,转移 D、顺序、选择、循环 2、下列关于C程序变量的叙述, ( D )是错误的。 A、变量名必须由字母或下划线开头。 B、程序中的变量必须在被使用之前定义。 C、不同的基本类型的变量之间可以混合运算。 D、变量的数据类型决定变量的"作用域"。 3、能将C语言编写的源程序转换为目标程序的软件是(C )。 A、编辑程序 B、汇编程序 C、编译程序 D、解释程序 4、以下符号中,合法的用户标识符是( D )。 A、-p B、int C、3ab D、_xt_ 5、以下选项中,与m=n++完全等价的表达式是( C )。 A、m=++n B、m+=n+1 C、m=n, n=n+1 D、n=n+1,m=n 6、若有定义:int aa[8];。则以下表达式中不能代表数组元aa[1]的地址的是(C )。 A、&aa[0]+1 B、&aa[1] C、&aa[0]++ D、aa+1 7、表达式!5&(7+3)&&(4+5)的值是(A)。 A、0 B、1 C、5 D、9 8、以下选项中非法的C语言表达式是(A )。 A、x+1=x+1 B、0<=x<100 C、i=j==0 D、(char)(65+3) 9、在TURBO C中, int类型变量所占字节数是(B )。 A、1 B、2 C、4 D、8 10、C语言中基本的数据类型包括(B)。 A、整型,实型,逻辑型 B、整型,实型,字符型

大学计算机C语言程序设计(填空题)

一、填空共219题 第1题题号:422 设有以下结构类型说明和变量定义,则变量a在内存所占字节数是【1】 . Struct stud { char num[6]; int s[4]; double ave; } a,*p; 答案: 1). 22 第2题题号:533 设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是【1】. for (x=0,y=0;y!=123&&x<3;x++) scanf ("%d",&y); 答案: 1). 3 第3题题号:496 静态变量和外部变量的初始化是在【1】阶段完成的,而自动变量的赋值是 在【2】时进行的. 答案: 1). 编译 2). 函数调用 第4题题号:96 已知a=13,b=6, a&b的十进制数值为【1】. 答案: 1). 4 第5题题号:398

程序段int k=10; while(k=0) k=k-1循环体语句执行【1】次. 答案: 1). 0 第6题题号:651 设w=5;w+= -2;则w的值为【1】. 答案: 1). 3 第7题题号:258 下面程序段的输出结果是【1】. int a=12; a=a&0377;pritnf("%d\n",a); 答案: 1). 12 第8题题号:457 设a,b,c,t为整型变量,初值为a=3,b=4,c=5,执行完语句t=!(a+b)+c-1&&b+c/2 后,t的值是【1】. 答案: 1). 1 第9题题号:402 设a取二进制数00101101,若想通过a^b运算使a的高4位取反,低4位不变,则b的 二进制数是【1】. 答案: 1). 11110000 第10题题号:311 若所用变量均已正确定义,则执行下面程序段后的值是【1】. for(i=0 ; i<2 ; i++ ) printf("YES"); printf("\n"); 答案: 1). YESYES

C语言程序设计第二版习题参考答案

C语言程序设计第二版 习题参考答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

C语言程序设计习题参考答案 习题 1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII 码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是 ___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。

C语言程序设计考试题库

一、判断题 1、所谓常量,就是在程序运行过程中其值可以改变的量。() 2、一个C程序可以由多个源程序文件构成,但其中只能有一个main()函数。() 3、在C语言中do-while 语句和for循环均是先执行循环体语句,再判断表达式。() 4、在函数调用中将变量的地址作为实参传递给对应形参时,实现的是单向的值传递。() 5、C语言中所有字符串都是以‘\0’结束的。() 6、do-while构成的循环语句中的循环体最少执行1次。() 7、数组名在C语言中表示的是数组的首地址。() 8、使用gets()函数输入字符串时可以在字符串中输入空格。() 9、算术运算符中‘/’的优先级高于‘%’。() 10、char a[5];该语句表明数组a中的第五个元素为a[5]。() 11、C语言源程序文件的扩展名均为.c。() 12、char a[5];数组a中有a[1]、a[2]、a[3]、a[4]、a[5]共5个元素。() 13、C语言程序区分大小写,字符常量必须定义为大写。() 14、若int i=10,j=2;则执行i*=j+8;后i的值为28。() 15、若int x=100,y=200;则语句printf("%d",(x,y));输出结果为100。() 16、c语言中的标识符只能由字母,数字和下划线三种字符组成。() 17、函数getchar()的作用是:输出一个字符。() 18、一个C语言程序总是从第一个函数开始执行。() 19、在c语言中,char型数据在内存中是以ASCII码形式存储的。() 20、在C语言中switch语句必须使用break语句。() 二、选择题 1、以下说法正确的是()。 A、C语言程序总是从第一个函数开始执行。 B、C语言程序中要调用的函数必须在main()函数中定义。 C、C语言程序总是从main()函数开始执行。

C语言程序设计的试题及答案

C语言程序设计的试题及答案 C语言程序设计的试题及答案C语言程序设计的试题及答案第一章基础知识 一、填空 1.每个C程序都必须有且仅有一个________函数。 2.C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3.软件是程序,以及______、使用和维护所需要的所有文档。 4.国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5.程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6.C语言是由________组成的。 7.C语言的函数可分为主函数ain、标准库函数和_________。 8.一个函数是由两部分组成的,即:________和函数体。 9.编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10.程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自

动化、管理信息系统、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11.机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12.与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对象,也可以用标号和符号来代替地址、常量和变量。 13.在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14.C程序的执行均是由执行_________开始。15.函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C语句组成的执行部分。 16.C语言程序中一条简单语句是以________字符作为结束符的。 17.C语言是结构化、________的程序设计语言。 18.由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19.用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.第一个系统体现结构化程序设计思想的教学工具语言是_______语言。

C语言程序设计习题答案

C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S 流程图最大的区别是什么? 答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。

5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。 四、注释下面C 程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf("%d\n",a); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD Y= 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1

C语言程序设计复习题

《C语言程序设计》复习题 一、判断题(本大题共60个小题) 1.C程序执行的入口是main()函数,所以main函数必须放在程序的开头。 2.定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。 3.注释内容太多会影响程序的执行效率。 4.变量要“先定义,后使用”。 5.字符常量'a'与字符串常量"a"没有区别。 6.数学公式y=-6xz+5[2(a-5)+3]写成C语言表达式是y=-6*x*z+5*[2*(a-5)+3]。 7.数学公式y=|x|+ab-c写成C语言表达式是y=fabs(x)+a*b-c。 8.表达式5/2+5.0/2+7%6 的值为5.5。 9.设int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/2*(int)(a+c)/2)%4 的值为:4.5。 10.设int a=12; 则表达式a/=a+a的值是0.5。 11.在C语言中,运算符!比&&的优先级高。 12.在C语言中,运算符的优先级最小的是逗号运算符。 13.scanf("%d,%d",&x,&y);的输入格式:3,4<回车>。 14.以下程序运行结果是:1,7,0 void main() { int x=1,y=1,z=10; if(z< 0) if(y> 0) x=3; else x=5; printf(" %d," ,x); if(z=y< 0) x=3; else if(y==0) x=5; else x=7; printf(" %d,%d" ,x,z); } 15.该程序运行结果是:BCother void main()

{ char x=‘B’; switch(x) { case ‘A’: printf(“A”); case ‘B’: printf(“B”); case ‘C’: printf(“C”); default: printf(“other”); } } 16.下面程序段运行时输出结果是a=2,b=8 void main() { int x=1,y=1,a=2,b=7; switch(x) { case 1: switch(y) { case 0: a++;break; case 1: b++;break; } case 2: a++;b++;break; case 3: a++;b++; } printf("a=%d,b=%d\n",a,b); } 17.下面程序,当输入为:"abc?" 时,执行结果是:abc void main() { char c; c=getchar(); while (c!='?' ) { putchar(c); c=getchar();} }

C语言程序设计试题集及答案

单项选择题 (002) 阅读程序题 (018) 程序填空题 (039) 编写程序题 (070) 一、单项选择题 导读:单项选择题要求从给出的四个备选答案中,选出一个最符合题意的答案。本类习题主要检查对C语言基本概念的掌握情况,读者可根据学习进度选做部分习题。在完成习题的过程中,不但要选出正确的答案,而且要清楚不正确的选项错在何处,以加深对概念的理解。对于掌握不准的问题,应该通过上机实验来检验。 【1.1】以下不正确的C语言标识符是____。 A) int B) a_1_2 C) ab1exe D) _x 【1.2】以下是正确的C语言标识符是____。 A) #define B) _123C) %d D) \n

【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。 ??? A) print B) i\am C) Pxq D) str_l ??? _3d one_half My->book Cpp ??? oodbs tart$it line# pow ??? aBc 3pai His.age while 【1.4】下面各选项组中,均是C语言关键字的组是。 A) auto,enum,include B) switch,typedef,continue C) signed,union,scanf D) if,struct,type 【1.5】下列不属于C语言关键字的是。 A) default B) register C) enum D) external 【1.6】C语言程序从main()函数开始执行,所以这个函数要写在____。 A) 程序文件的开始B) 程序文件的最后 C) 它所调用的函数的前面D) 程序文件的任何位置 【1.7】下列关于C语言的叙述错误的是____ A) 大写字母和小写字母的意义相同 B) 不同类型的变量可以在一个表达式中 C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D) 同一个运算符号在不同的场合可以有不同的含义 【1.8】在C语言中,错误的int类型的常数是。 A) 32768 (超过了范围) B) 0 C) 037 D) 0xAF 【1.9】执行语句printf("%x",-1);屏幕显示____。 A) -1 B) 1 C) –ffff D) ffff 【1.10】已知long i=32768;执行语句printf("%d",i);屏幕显示____。 A) -1 B) -32768C) 1 D) 32768 【1.11】已知long i=65539; 执行语句printf("%d",i);屏幕显示____。 A) 65539 B) -3 C) 3D) 程序不能执行 【1.12】在C语言中,整数-8在内存中的存储形式是。 A) 1111 1111 1111 1000B) 1000 0000 0000 1000 C) 0000 0000 0000 1000 D) 1111 1111 1111 0111 【1.13】C语言中字符型(char)数据在内存中的存储形式是____。

相关主题
文本预览
相关文档 最新文档