c语言备考习题及部分答案_c语言复习习题及答案

2020-02-29 其他范文 下载本文

c语言备考习题及部分答案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言复习习题及答案”。

一、判断题

1.在函数定义中,形参变量有时也可以是全局变量。(×

2.在C程序中,函数调用可以作为函数的形参。× 3.在C程序中,函数调用可以作为函数的实参。√ 4.在C程序中,函数的形式参数是指针类型时,调用时对应的实参也必须是指针类型。×

5.对任一变量一旦被指定为某一确定类型后,该变量在程序运行时所占存储空间的多少和所能参加的运算类型便已确定了。(√ 6.C语言程序必须包含库函数。(×

7.如果被定义函数的返回值是整型,可以不必进行说明。(√

8.一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量。(√

9.return语句可以带有表达式也可以不带。(√ 10.若某自定义函数中无return语句,则该函数一定没有返回值。×

11.在C语言中,变量的初始化都是在编译阶段完成的。×

12.在同一源文件中,全局变量与局部变量同名,在局部变量作用范围内,全局变量的值等于局部变量的值。×

13.return语句作为函数的出口,在某一个函数体内必须唯一。(×

14.C语言程序必须包含库函数。(×

15.C语言中,任意两个函数间不能嵌套定义,但可以互相调用。(×

16.在函数的定义中,若函数没有参数,则可以省略函数名后的括号。×

17.函数返回值的数据类型取决于return语句中表达式的数据类型。×

18.函数返回值的数据类型取决于主调函数传递过

来的实参的数据类型。×

19.函数返回值的数据类型取决于函数定义时为函数指定的数据类型。√ 20.在C程序中,函数的形式参数是指针类型时,调用时对应的实参也必须是地址量。√

21.C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是整个数组。×

22.C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是数组的首元素值。× 23.C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是数组的首地址值。√ 24.求n!既可以用递归的方式,也可以用递推的方式。(√

25.递归函数在实现过程中,要使用“堆栈”这种数据结构来保存递归调用过程中的值。√

26.在C语言中,所有函数之间都可以相互调用。×27.一个C程序无论有多少个源程序文件组成,在其中一个源程序文件中定义的全局变量的作用域默认为整个C程序。×

28.一个C程序无论有多少个源程序文件组成,在其中一个源程序文件中定义的全局变量的作用域默认为其所在的源程序文件。√

29.在C程序的主函数main中定义的变量就是全局变量。×

30.在C程序的主函数main中定义的变量也是局部变量。√

31.在函数定义中,形参变量是局部变量。√ 32.在函数定义中,形参变量可以是静态变量。× 33.在一个函数定义中,只能有一个return语句。×34.在一个函数定义中,可以根据需要使用多个return语句。√

35.在C程序中,函数可以嵌套定义,也可以嵌套

调用。×

36.在C程序中,函数不能嵌套定义,但可以嵌套调用。√

37.在C程序中,函数既不能嵌套定义,也不能嵌套调用。×

38.在C程序中,函数调用只能作为单独语句出现。×

39.在C程序中,函数调用不能作为单独语句出现。×

40.在C程序中,函数调用只能出现在表达式语句中。×

41.在C程序中,函数调用不能出现在表达式语句中。×

42.在C程序中,函数调用既可以出现在表达式语

二、单选题

1.C语言中,以下叙述中错0的是(A)。A)主函数中定义的变量是全局变量

B)同一程序中,全局变量和局部变量可以同名

句中,也可以作为单独的语句出现。√

43.在C函数中,形参可以是变量、常量或表达式。×

44.在C程序中,实参可以是变量、常量或表达式。√

45.C语言规定,函数调用时,若形参和实参都是简单变量,则它们之间的数据传递方式是双向值传递。×

46.C语言规定,函数调用时,若形参和实参都是简单变量,则它们之间的数据传递方式是单向值传递。√

47.如果一个函数只能被本文件中的其他函数所调用,则该函数为外部函数。×C)全局变量的作用域从定义处开始到本源程序文件结束 D)局部变量的作用域被限定在其所定义的局部范围中 2.C语言中,以下叙述正确的是()。A)函数不能嵌套定义但可以嵌套调用

B)函数可以嵌套定义也可以嵌套调用 C)函数可以嵌套定义但不能嵌套调用

D)函数不能嵌套定义也不能嵌套调用

3.C语言中,函数调用时若实参是数组名,则被调函数对应形参()。A)可以是相应类型简单变量

B)必须是相应类型数组名 C)可以是相应类型数组名

D)必须是相应类型的指针变量

4.C语言中,函数调用时若实参是数组名,则被调函数对应形参(D)。A)可以是相应类型简单变量

B)必须是相应类型的指针变量 C)必须是相应类型数组名

D)可以是相应类型的指针变量 5.在下面C语言的函数说明语句中,正确的是()。A)int fun(int , int);

B)int fun(int x,y);C)int fun(x,y);

D)int fun(int x;int y);6.在C程序中,如果限定一个局部变量只能在所定义的范围中起作用,那么这个变量的存储类型(C)。A)只能是auto

B)只能是extern C)可以是auto或static

D)可以是extern或static 7.在C语言中,若定义函数时未说明函数的类型,则该函数的数据类型为(A)。A)int

B)float C)char

D)double 8.在C语言中,函数默认的存储类型为(D)。A)auto

B)register C)static

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

(A)地址传递

(B)单向值传递

(C)有实参传给形参,再由形参传回给实参

(D)由用户指定传递方式

10.如果在C程序中有main(int argc,char *argv[]),那么(D)是指命令行中的参数个数。

(A)argv

(B)argv[]

(C)argc,argv[]

(D)argc 11.如果程序中有static char c;则编译程序会对其自动设置初值为(D)。

(A)''n''

(B)“n”

(C)0

(D)'''' 12.在C函数中,局部变量的隐含存储类型是(A)。

(A)auto

(B)static

(C)register

(D)extern 13.C程序在(C)可以使用表达式

A)函数内部

B)函数外部

C)程序的任何地方

D)变量出现的地方 14.在C语言中,函数返回值的数据类型取决于(C)。A)函数的名字

B)return语句中表达式的数据类型 C)在定义该函数时所指定的数据类型

D)主调函数的数据类型

15.在一个源程序文件中定义的全局变量,其作用域为(B)。A)整个源程序文件

B)从定义处开始到本源程序文件结束 C)整个主函数

D)所处C程序的所有源程序文件中

16.C语言中,以下叙述中错0的是(C)。A)同一程序中,全局变量和局部变量可以同名 B)局部变量的作用域被限定在其所定义的局部范围中 C)同一程序中,全局变量和局部变量不能同名

D)全局变量的作用域从定义处开始到本源程序文件结束 17.在C程序中,同一程序中的各函数之间(A)。A)既允许直接递归调用也允许间接递归调用 B)既不允许直接递归调用也不允许间接递归调用 C)允许直接递归调用但不允许间接递归调用 D)允许间接递归调用但不允许直接递归调用 18.C语言中,以下叙述错0的是(D)。A)函数调用可以是单独的语句

B)函数调用可以出现在表达式中 C)函数调用可以作为函数的实参

D)函数调用可以作为函数的形参

19.在C语言中,函数调用时如果相应的形参和实参都是简单变量,则主调函数和被调函数之间传递数据的方式是(C)。A)单向地址值传递

B)双向地址值传递 C)单向数值传递

D)双向数值传递

20.在C程序的函数调用时,主调函数中的实参和被调函数中的形参(B)。A)个数、次序必须相同,但数据类型可以不考虑 B)个数、次序和对应参数的数据类型都应该相同 C)个数、次序和数据类型均可以不相同

D)对应参数数据类型应相同,但个数和次序可以不考虑 21.C语言中,以下叙述错0的是(C)。A)函数被调用时,系统才为形参分配内存 B)实参和对应形参的数据类型必须一致 C)实参可以是变量、常量或表达式 D)形参可以是变量、常量或表达式

22.C语言中,函数调用时若实参是数组名,则传递给被调函数对应形参的是(D)。A)整个数组

B)数组元素的个数

C)数组占用的内存单元个数

D)数组在内存中存放的首地址

23.在一个void类型函数的定义中,函数体中有return;语句,该语句(B)。A)是错0的B)表示向主调函数返回程序控制 C)在执行时不予理睬

D)在执行时会中断程序运行 24.下列程序的输出结果是(A)

viod f(int *m)

{while((*m)--);

printf(“%d”,++(*m));}

main()

{int x=50,*p=&x;

f(p);}(A)0

(B)(C)49

(D)50

25.下述函数的功能是(D)。int fun(char *x){char *y=x;

while(*y++);

return y-x-1;}(A)将字符串x连接到字符串y的后面

(B)求字符串的存放位置(C)比较两个字符串的大小

(D)求字符串的长度 26.以下对C语言函数的有关描述,正确的是(A)。

(A)在C中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参(B)C函数既可以嵌套定义又可以递归调用(C)函数必须有返回值,否则不能使用函数

(D)C程序中有调用关系的所有函数必须放在同一个源程序文件中 27.以下程序的输出结果是(B)

int m=4,n=6;

max(int x,int y)

{int max;

max=x>y?x:y;return(max);}

main()

{int m=10;

printf(“%d”,max(m,n));

}

A)

4B)10

C)6

D)5 28.在C语言的函数概念中,以下叙述正确的是(A)。A)函数调用时,形参和与其对应的实参各占独立的存储单元

B)函数调用时,形参和与其对应的实参再不同名时才各占独立的存储单元 C)形参在函数调用时不占存储单元

D)函数没有被调用时,形参也要占据内存单元

29.在C语言的函数概念中,以下叙述正确的是(A)。A)函数没有被调用时,形参不会占据内存单元

B)函数调用时,形参和与其对应的实参再不同名时才各占独立的存储单元 E)形参在函数调用时不占存储单元

F)函数没有被调用时,形参也要占据内存单元

30.C语言中,一个函数调用语句为fun((e1,e2,e3),(e4,e5),e6);,其实参个数为(A A)3个

B)4个 C)5个

D)6个

31.在一个char类型的函数定义中,函数体中有return 0;语句,该语句(B)A)是错0的B)能正确向主调函数返回整型数0 C)在执行时不予理睬

D)在执行时会中断程序运行 32.下面函数fun的功能是(D)。

int fun(char *s,char *t){ while(*s==*t)

if(*s=‟‟)

return 0;

else)。

s++,t++;return *s-*t;} A)测字符串s和t的长度

B)将字符串s拷贝到t C)将字符串t拷贝到s

D)比较字符串s和t的大小 33.在下列程序中,调用f(8)的值是(D)

int f(int n)

{ if(n==1)return(1);

else if(n==2)return(2);

else return(f(n-1)+f(n-2));

}(A)1(B)21

(C)5(D)34 34.在执行程序china.exe时,若输入的命令行为:china enlish Beijing,则程序执行结果为(A)。#include void main(int argc,char *argv[]){ while(argc>1){ printf(“%c”,**++argv);argc--;}}(A)eB

(B)ceB

(C)china enlish Beijing

(D)enlish Beijing 35.在下面C语言的函数说明语句中,正确的是(A)。A)int fun(int x, int y);

B)int fun(int x,y);C)int fun(x,y);

D)int fun(int x;int y);

三、多选题

1.下列说法正确的是(BDE)

A)若某自定义函数中无return语句,则该函数一定没有返回值。

B)C语言的编译系统对宏命令的处理是在对源程序中其他成份正式编译之前进行的。C)在C语言的源程序中,注释使用越多,编译之后的可执行程序的执行效率越低。D)如果strcmp(s1,s2)的返回值为负数,则表明字符串s1一定小于字符串s2。E)一个C程序可由多个源文件组成。

2.C语言中,若在一个复合语句和复合语句所在的函数中都定义了一个同名的变量,则该两变量(C)。A)实际是同一变量

B)是不同变量但作用域相同 C)是不同变量且作用域不同

D)是同一变量,但作用域不定

3.C语言的函数定义中,如果函数的返回值为0~255之间的整数,则函数的返回类型可以定义为(ACE)。A)int

B)float

C)char

D)double

E)long 4.C语言中,若要限定一个全局变量只能在其所定义的源程序文件中使用,定义是必须使用关键字(D)。

A)auto

B)register C)extern

D)static 5.C语言中,形式参数不能使用的存储类型说明为(BCDE)。A)auto

B)register C)extern

D)static E)static register 6.一个函数的返回值类型为void,则函数体中(AB)。A)可以没有return语句

B)可以有return;语句 C)仍然需要return exp;语句

D)可以有return 0;语句 E)可以有return 0.0;语句

7.一个函数的说明语句为int fun(int x);,a、b为整型变量且初值为0,则正确的函数调用语句为ABCDE A)printf(“%dn”,fun(a+b));B)b=fun(a);C)a=fun(b);

D)fun(a);E)printf(“%d”,fun(a+b+10));

8.以下说法正确的是(ACD)

A)形参类型定义属于函数的首部

B)凡是用{ }括起的部分称为函数体

C)任何 表达式加上一个分号均构成语句 D)一行可以写多个语句

E)C语言的输入输出是用输入输出语句实现

9.下列符号中可以用作自定义函数名的是(BCD)。

(A)int

(B)go_to

(C)INT

(D)Getchar

(E)typedef 10.在C语言中,存储类有(BCDE)。

A)char

B)extern

C)static

D)register

E)auto 11.在C语言中,对函数而言正确的概念有(BCD)。A)函数可以嵌套定义

B)函数不能嵌套定义 C)函数可以嵌套调用

D)函数可以递归调用 E)函数可以没有返回值

12.C语言中,对存储类型static而言,正确的是方法为(ABCD)。A)作用于局部变量

B)作用于全局变量 C)作用于数组

D)作用于构造数据类型变量 E)作用于形式参数

13.一个函数定义中的形式参数如果为简单变量形式,调用时对应的实参可以是(ABCD)。A)同类型的简单变量

B)同类型的常数 C)同类型的数组元素

D)同类型的地址量 E)同类型的数组名 14.在定义函数时,函数的存储类型可以(ADE)。A)是static

B)是auto C)是register

D)是extern E)省略

15.假设变量a,i均已正确定义并赋值,则以下合法的C语句有(ACDE)

A)a= =1;

B)++i

C)a=(int)i+2.5;

D)sqtr(a);

E);16.C语言规定,调用一个函数时,实参变量和形参变量之间的数据是(BE)。(A)地址传递

(B)值传递(C)由实参传给形参,并由形参传回给实参(D)由用户指定传递方式

(E)类型必须一致

17.在函数调用过程中,下列说法正确的是(ACDE)(A)形式参数和实在参数各占一个独立的存储单元(B)形式参数和实在参数存储空间都是在函数调用时分配的(C)在函数的执行过程中,形参变量值的改变不会影响实参值的改变(D)函数调用结束时,临时存储区被撤消

(E)在函数调用过程中,实在参数与形式参数在个数、类型上必须匹配 18.以下正确的说法是(ABE)

A)C语言有四种存储类:auto、register、static和extern。

B)C语言提供的for、while和do-while等三种循环语句可以做等价变换。C)C语言提供的结构类型不允许其成员具有不同的数据类型。D)C语言允许用typedef来定义一种新的数据类型。E)C语言允许经常在程序中使用的常量用宏定义来定义。19.C语言中,局部变量默认的存储类型是(A)。

A)auto

B)register C)extern

D)static 20.在下面C语言的函数说明语句中,正确的是(AE)。A)int fun(int , int);

B)int fun(int x,y);C)int fun(x,y);

D)int fun(int x;int y);E)int fun(int x,int y);

四、填空题

1.下面程序的功能是求三个数的最小公倍数,请填空完成程序。

#include void main(){ int max(int x,int y,int z);int x1,x2,x3,k=1,j,x0;

scanf(“%d,%d,%d”,&x1,&x2,&x3);

x0=max(x1,x2,x3);

while(1)

{ j=x0*k;

if(___________)

break;

k+=1;

}

printf(“The result is %dn”,j);

} int max(_________)

{ if(x>y&&x>z)

return x;

else if(__________)

return y;

else

return z;

}(8)J%X1==0&&J%X2==0&&J%X3==0(9)INT X,INT Y,INT Z(10)Y>X&&Y>Z 2.函数fun的功能是求一个整数num各位数字之积,请填空完成函数。

#include long fun(_______________)

{ long k=1;

num=abs(num);

do

{ k*=_____________;

num/=10;

}while(____________)

return k;}(1)INT NUM(2)NUM%10(3)NUM(或NUM!=0)3.下面程序的功能是用递归的方法将一个整型数num的各位数字转换为对应的数字字符输出,请填空完成程序。

#include void main(){ void convert(int n);

int num;scanf(“%d”,&num);

if(num

{ putchar(„-„);

num=__________;

}

convert(num);

} void convert(int n)

{ int j;

j=n/10;

if(_______________)

convert(___________)

putchar(_____________)

}(18)-NUM(19)J!=0(20)J(21)N%10+‟0‟

4.下面程序的功能是将十进制数转换为二进制数输出,请填空完成程序。

#include void main()

{ int convert(int a);

int a,e[10],c,j=0;

scanf(“%d”,&a);

while(a!=0){ c=_____________;

a/=2;

e[j]=c;

j++;} for(____________)

printf(“%d”,e[j-1]);

} int convert(int a)

{ int c;

c=___________;

return c;

}(22)CONVERT(A)(23);J>0;J--(24)A%2 5.函数binsearch的功能是对具有n个按升序排列元素的整型数组st按折半查找法(二分查找法)查找其中的关键字key,请填空完成函数。

int binsearch(int st[],int n,int key){ int low=0,high= ______ ,mid;

while(low

if(key==st[mid])

return ___________;

else if(key

return ___________ ;

else

return ____________;

}

return 0;

}(14)HIGH=N-1(15)MID(16)LOW=MID+1(17)HIGH=MID-1

6.任何程序都可调用标准函数exit(),当它被调用时,它(_________)程序的执行。终止

7.以下函数的功能是求一个3*4矩阵中最小元素。请填空。

fun(int a[ ][4])

{int i,j,k,min;

for(i=0;i

for(j=0;j

if(______________)

min=a[i][j];

return(min);

} A[I][J]>MIN

8.下列程序利用二分法求解方程2x3-4x2+3x-6=0在(0,3)之间的根,请填空

#include

#include

#define f(x)((2*x-4)*x+3)*x-6

void main()

{float eps=1.0e-5;

float x1=0,x2=3,x,fval;

x=(x1+x2)/2;

fval=f(x);

while(____________)

{if(f(x)

else x2=x;

_____________;

fval=f(x);

}

printf(“the root is:%f”,x);

} ①FABS(FVAL)>EPS ② X=(X1+X2)/2

9.下面程序的功能是将字符串中的数字字符删除后输出。请填空。#include void delnum(char *s){ int i,j;for(i=0,j=0;s[i]!='''';i++)

if(________________)

{ s[j]=s[i];

j++;

}

s[j]='''';} void main(){ char *item;

printf(“ninput string:”);

gets(item);

delnum(item);printf(“n%s”,item);} S[I]''9''

10.下面的程序通过average计算数组中各元素的平均值,请填空。float average(int *pa,int n){ int x;

float avg=0.0;

for(x=0;x

avg=avg+ _________

;

avg=avg/n;

return(avg);} void main(){ int a[5]={2,4,6,8,10};

float mean;

mean=average(a,5);

printf(“mean=%fn”,mean);

} *(PA+X)或PA[X]

11.下列函数的功能是判断一个正整数是否是素数。若是素数,则返回值为1,完善程序。int prime(int n){ int y=1,i;

for(i=2;i

if(__________){y=0;break;}

return(y);} N % I==0

否则返回值为0。请下列 12.以下函数的功能是:求x的n次方。请完善程序。double f1(double x,int n){ int i;

double k;

for(i=1,k=x;i

return(k);} K*X

13.以下递归函数f是求n!之值。long f(int n)

{ long r;

if(n>1)r= ____________ * f(n-1);

else r=1;

return(r);

N

14.下面的函数用以验证命题:100以内的奇数的平方被8整除,余数均为1,若命题成立,则返回1,否则返回0。请填空完成该函数。

int func()

{ int a,flag=1;

for(a=1;a

if(___________)

{ flag=0;

break;

}

return(flag);} A*A % 8!=1

15.使用以下函数来计算xy,其中y为整型变量并且y>=0。float power(float x, int y){

float z;

for(z=1;y>0;y-=1)z_____ x;

return(z);} =Z* 16.以下程序用于求取两个整数的最大公因子。

int mcf(int a, int b){ int temp;

while(b)

{

temp = __________

;

a = b;

b = temp;

}

return(a);} A%B

17.函数rewind的作用是_________________。

使指针指向文件的开头

18.以下函数的功能是比较两个字符串的大小,若相等返回值为0,若不相等则返回第一个不相等字符之差。请填空。

fun(char *s,char *t)

{while(*t++= =*s++);

return(_____________);} *S-*T

19.在C语言中,一个函数一般均由两个部分组成,他们分别称为 ___________ 和 ____________。

(2)函数首部(或函数头)

20.下列函数是用于求n个学生成绩的平均分、最低分和最高分。可通过调用该函数返回到调用函数。请完善程序。

float average(float array[],int n,_________){ int i;float sum;

sum=array[0];

___________________;

for(i=1;i

{if(array[i]>*max)*max=array[i];

if(array[i]

sum=sum+array[i];}

return(__________);} ①FLOAT *MAX,FLOAT *MIN

②*MAX=*MIN=ARRAY[0]

③ SUM/N

21.下述函数是用二分法查找key值。数组中元素值已按递增次序排列。若找到key则返回对应的下标,否则返回-1。请填空。

int bin(double a[],int n,double key)

{ int low,high,mid;

low=0;

high=n-1;

while(_____________)

{ mid=(low+high)/2;

if(key

;

else

if(key>a[mid])

_____________;

else

return mid;

}

return-1;

} ①LOW

②HIGH=MID-1 ③ LOW=MID+1

22.下述函数是从字符串s中删除从第I个字符开始的n个字符。请填空。

void del(char s[],int I,int n)

{int j,k,length=0;

while(s[length])_____________;

--I;

j=I;

if(____________)

{k=I+n;

if(I+n

while(k

s[j++]=s[k++];

s[j]='';

}

} ①LENGTH++ ②I*S1-*S2

24.以下递归函数是求n!之值。float fac(int n){ float f;

if(n==0|| n==1)

f=1;

else

f=n*___________________;

return(f);}FAC(N-1)

五、阅读程序

1.下列程序的执行结果是多少? #include void main(){ int fun(int a);

int a=2,j,k;

for(j=0;j

printf(“%dn”,k);} int fun(int a){ int b=0;

static int c=3;

a=c++,b++;

return a;} 2.下列程序的执行结果是多少? #include int m=13;void main(){ int fun(int x,int y);

int a=7,b=5;

printf(“%dn”,fun(a,b)/m);} int fun(int x,int y){ int m=3;

return x*y-m;}

3.下列程序的执行结果是多少? #include int d=1;void main(){ void fun(int p);

int a=3;

fun(a);

d+=a++;printf(“%dn”,d);} void fun(int p){ int d=5;

d+=p++;printf(“%d,”,d);} 8,4

4.下列程序的执行结果是多少? #include int d=1;void main(){ int fun(int p);

int a=3;

printf(“%dn”,fun(a+fun(d)));} int fun(int p){ static int d=5;

d+=p;

printf(“%d,”,d);

return d;} 6,15,15

5.下列程序的执行结果是多少? #include void main(){ void fun(int *k);

int w=5;fun(&w);} void fun(int *k){

(*k)++;

printf(“%dn”,*k++);} 6

6.下列程序的执行结果是多少? #include void main(){ void fun1(int x,int y,int *sum);

void fun2(int x,int y,int *product);

void(*f)(int x,int y,int *pt);

int a=10,b=20,c=100;

f=fun1;

(*f)(a,b,&c);

printf(“%d,%d,%dn”,a,b,c);

f=fun2;

(*f)(a,b,&c);

printf(“%d,%d,%dn”,a,b,c);} void fun1(int x,int y,int *sum){

*sum=x+y;} void fun2(int x,int y,int *product){

*product=x*y;} 10,20,200

7.下列程序的输出结果是

#include

main()

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

p=func(k,m);

printf(“%d,”,p);

p=func(k,m);

printf(“%dn”,p);

}

func(int a,int b)

{static int m=1,n=2;

n+=m+1;

m=n+a+b;

Return(m);

} 9,19

8.给出以下程序的运行结果。#include int x,y,a=15,b=10;void num(){ x=a-b;

y=a+b;} void main(){ int a=7,b=5;

x=x+a;

y=y-b;

num();

printf(“%d,%dn”,x,y);} 5,25

9.给出下面程序的运行结果。#include f(int num,int run){static int fact,i;if(run==0)

{ fact=1;

i=1;}

fact *=i;

if(++i

f(num,1);

return(fact);} void main(){ int i=0;

printf(“f=%dn”,f(3,0));} F=6

10.以下程序的运行结果是()。#include unsigned fun6(unsigned num){ unsigned k=1;

do

{ k*=num%10;

num/=10;

}while(num);return(k);} void main(){ unsigned n=26;printf(“%dn”,fun6(n));} 12

11.以下程序的运行结果是(#include increment(){ static int x=0;

x=x+1;

printf(“%dn”,x);} void main(){ increment();

increment();

increment();} 1

12.以下程序的运行结果是(#include void num(){ int x,y;

int a=15,b=10;

x=a-b;

y=a+b;} int x,y;void main(){ int a=7,b=5;

x=a+b;

y=a-b;

num();printf(“%d,%dn”,x,y);})。

2)。

12,2

13.下列程序的输出结果是()。#include void main(){ int f(int n);

int i,k,s=0;

for(i=1;i

{ k=f(i);

if(k%6!=0)

continue;

if(k>100)

break;

s=s+k;

} printf(“%d”,s);} int f(int n){ static int f=1;

f=f*n;

return f;} 30

14.下列程序的运行结果是(#include void main(){ void add();

int i;

for(i=0;i

add();} void add(){ static int x=0;

x++;

printf(“%d ”,x);} 1 2 3

15.#include void main(){ long fun(int n);

printf(“%ldn”,fun(4));} long fun(int n){ long s;

if(n==1||n==2))。

s=2;

else

s=n+fun(n-1);

return s;} 9

16.#include void main(){ int fun(int x);

int k=2,m=1,n;

n=fun(k);

n=fun(m);

printf(“%dn”,n);} int fun(int x){ static int a=3;

a+=x;

return a;6

17.#include void main(){ int fun(int a);

int a=2,j;

for(j=0;j

static int c=3;

b++,c++;

return a+b+c;} 789

18.下列程序的输出结果是(#include int x=1,y=2,z=3;main(){ int x=6;

y=5;

funcA(x++,y);

printf(“%d,%d,%dn”,x,y,z);} funcA(){ register int c=10;)

int x;

y=7;x=c;

funcB();

printf(“%d,%d,%dn”,x,y,z);

funcB();

printf(“%d,%d,%dn”,x,y,z);} funcB(){ static int a=2;

z=++a;

printf(“%d,%d,%dn”,x,y,z);} 1,7,3 10,7,3 1,7,4 10,7,4 7,7,4

19.下列程序的输出结果是

#include unsigned f(unsigned num)

{ unsigned k=1;

do

{k*=num%10;

num/=10;

}while(num);

return k;

}

void main()

{int x=35,y=550;

printf(“%d,%d”,f(x),f(y));

} 运行结果: 15,0

20.下列程序的输出结果是:

#include

void main()

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

int m,n,s1=0,s2=0;

for(m=0;m

for(n=0;n

{ if(m==n)s1+=a[m][n];

if(m+n==2)s2+=a[m][n];

}

printf(“%d,%dn”,s1,s2);

} 运行结果:

18,10

21.下列程序的输出结果是

#include

void main()

{int f(int n);

int n,k,s=0;

for(n=1;n

{k=f(n);

if(k%6!=0)continue;

if(k>100)break;

s=s+k;

}

printf(“%d”,s);

}

int f(int n)

{static int f=1;

f=f*n;

return f;

} 运行结果 30

22.下述程序的运行结果是()。

main()

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

int I,j,s1=0,s2=0;

for(I=0;I

{ if(I==j)s1+=a[I][j];

if(I+j==2)s2+=a[I][j];

}

printf(“%d,%dn”,s1,s2);} 18,10

23.以下程序的运行结果是()

#include

void fun(int x)

{putchar(''0''+x%10);

fun(x/10);}

main()

{int m=1234;

fun(m);} 4321

24.下面程序的输出结果是()。#include extern int j=1;void main(){ void add();

int sum(int x);

int k,s;

add();

j++;

printf(“j=%dn”,j);

for(k=1;k

s=sum(k);

printf(“s=%dn”,s);} void add(){ int j=0;

j++;}

int sum(int j){ int x=0;

x+=j;

return(x);} j=2 s=10 25.以下程序的运行结果是(#include

f(int a)

{int b=0;

static int c=3;

a=c++,b++;

return(a);}

main()

{int a=2,i,k;

for(i=0;i

k=f(a++);

printf(“%dn”,k);} 6

六、编程题)1.实现判断一个正整数是否为素数的函数首部为int isprime(int x),当x是素数时函数返回1,否则返回0。要求编制该函数并用相应的主函数进行测试。

#include #include void main(){ int isprime(int x);int a;printf(“Input the number:n”);

scanf(“%d”,&a);

if(isprime(a))

printf(“The %d is a prime.n”,a);

else

printf(“The %d is not a prime.n”,a);

} int isprime(in

2.函数adddigit的原型为int adddigit(int num);,其功能是求num各位数字之和。要求编制该函数并用相应的主函数进行测试。

3. #include #include void main(){ int adddigit(int num);int n;scanf(“%d”,&n);

printf(“sum=%dn”,adddigit(n));} int adddigit(int num){ int s=0;num=abs(num);do { s+=num%10;num/=10;}while(num);return s;} 3.函数fac的原型为long fac(int j);,其功能是利用静态变量实现n!。要求编制该函数并用相应的主函数进行测试。

5. #include void main(){ long fac(int j);int num,j;long ff;scanf(“%d”,&num);

for(j=2;j

#include #include void main(int argc,char *argv[]){ if(argc!=3){ printf(“command error!n”);

return;} printf(“%dn”,atoi(argv[1])+atoi(argv[2]));} 5.编写一主函数先输入一个6*6的矩阵,然后再输入一个整型变量 n,若 n≤6,则对6*6的矩阵中的左上角的n*n矩阵进行转置,要求编写出实现这一要求的函数 transf()。

参考程序 #DEFINE M 6 #INCLUDE

MAIN(){ CHAR CC[M][M];INT I,J,N;

FOR(I=0;I

FOR(J=0;J#INCLUDE

7.输入正整数n,k,输出n中从右端开始的第k个数字的值。如n=2678,其右边第2个数字为7。要求将求n中右端第k个数字定义成函数。在实现中,可用函数pow(x,y),其功能是x的y次方。#INCLUDE

8.有一个一维数组,内有n个学生的成绩,编写一个函数,要求能够将其中的平均值、最高分、最低分返回到调用函数中。注意:不允许使用全局变量来实现。

FLOAT AVER(FLOAT A[],INT N,FLOAT *MAX,FLOAT *MIN)

{ INT I;

FLOAT SUM;

*MAX=*MIN=SUM=A[0];

FOR(I=1;I

{SUM=SUM+A[I];

IF(*MAX

IF(*MIN>A[I])*MIN=A[I];

}

RETURN(SUM/N)

9.有一字符串,包含n个字符。写一个函数,将此字符串从第m个字符开始的全部字符复制成为另一个字符串并输出这个字符串。例如,要求把字符串abcdefg 中第3个字符开始的全部字符复制成为另一个字符串cdefg。

#include #include void main()

/*字符串的部分复制*/ {void copystr(char *p1,char *p2,int m);int m;char str1[20],str2[20];scanf(“%s”,str1);

/* 输入一个字符串*/ scanf(“%d”,&m);

/* 从第几个字符开始复制*/ if(strlen(str1)

10.从键盘上输入n(n

#include void main(){ int sumnum(int k);int n,m,i;int a[50];scanf(“%d”,&n);

/* 输入所求的1整数的个数*/ for(i=0;i

if(m>0&&m

{ a[i]=sumnum(m);

printf("a[%d]=%d

c语言备考习题及部分答案

一、判断题1.格式字符%md中的m不能为负。( ×) 2.实际上,可以用顺序、分支、循环三种结构构造任何算法。( ) 3.printf("%d",sizeof(1234));其结果是4。( ×) 4.在C语言中,任何......

SQL语言习题及答案

数据库原理之关系数据库SQL语言课后习题及答案http://www.daodoc.com 作者:不详 来源: 2006年9月12日 发表评论 进入社区 3.1 名词解释 (1)SQL模式:SQL模式是表和授权的静态定......

《企业文化》每章习题及部分答案

第一章 复习思考题二、选择题1.在日本,企业文化被称为( C ) A.商业文化 B.公司文化 C.社风 D.会社文化2.企业文化理论是( C )美国学者在受到日本经济增长经验的启示,总结、比较日、......

中级微观经济学习题及部分答案

一、单项选择题(每题0.5分,共15分,将正确答案填入答题纸上)1.有下列因素除哪一种外都会使需求曲线移动?( B )a 消费者收入变化;b 商品价格变化;c消费者偏好变化; d 其他相关商品价格变......

大自然的语言习题及答案

刀豆文库小编为你整合推荐6篇大自然的语言习题及答案,也许这些就是您需要的文章,但愿刀豆文库能带给您一些学习、工作上的帮助。......

《c语言备考习题及部分答案.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
c语言备考习题及部分答案
点击下载文档
相关专题 c语言复习习题及答案 习题 答案 语言 c语言复习习题及答案 习题 答案 语言
[其他范文]相关推荐
[其他范文]热门文章
下载全文