C语言期末复习题.docx

上传人:b****7 文档编号:9968696 上传时间:2023-02-07 格式:DOCX 页数:12 大小:19.70KB
下载 相关 举报
C语言期末复习题.docx_第1页
第1页 / 共12页
C语言期末复习题.docx_第2页
第2页 / 共12页
C语言期末复习题.docx_第3页
第3页 / 共12页
C语言期末复习题.docx_第4页
第4页 / 共12页
C语言期末复习题.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

C语言期末复习题.docx

《C语言期末复习题.docx》由会员分享,可在线阅读,更多相关《C语言期末复习题.docx(12页珍藏版)》请在冰豆网上搜索。

C语言期末复习题.docx

C语言期末复习题

数组

一、单选题

1、若有数组定义语句:

inta[3]={6};floatb[3];doublec[3]={1.2,-56.7,38};则以下判断哪一个不成立___C_____。

(A)a[0]的初值为6         (B)c[1]的初值为-56.7 

(C)b[1]的初值为0    (D)b[0]的初值为随机值

2、有定义语句:

inti;doublea[4];若通过键盘输入为数组a的4个元素赋值,输入时不同数据之间使用默认分隔符,则下面正确的输入语句是___A_____。

(A)for(i=0;i<4;i++)scanf("%lf",&a[i]);          

(B)for(i=0;i<4;i++)scanf("%f",&a[i]);

(C)for(i=0;i<4;i++)scanf("%lf\n",&a[i]);

(D)for(i=0;i<4;i++)scanf("%f,",&a[i]);

3、若有数组定义语句:

inta[][3]={{2},{4,5},{6,8,9}},b[][3]={2,4,5,6,8,9};则a[1][2]和b[1][2]的初值分别为_D_______。

(A)5,4          (B)0,4         (C)随机值,9         (D)0,9

4、以下二维数组定义中正确的是_C_______。

(A)inta[][4];

(B)floatb[3][];   

(C)#defineN5.6                 

   double c[(int)N][3];

(D)#defineN3

   doubled[N++][5];

5、已知以下程序段的运行结果为“654321”,则下划线所在位置应填入的代码是_____A___。

#defineN6

inta[N]={1,2,3,4,5,6},i,t;

for(i=0;i<________;i++){t=a[i];a[i]=a[N-i-1];a[N-i-1]=t;}

for(i=0;i

(A)N/2         (B)N         (C)N/2+1         (D)N+1

6、定义二维数组并初始化:

inta[][3]={1,2,3,4,5,6,7};则以下判断中不正确的是___D_。

(A)数组a包含9个元素         (B)a[1][2]的初值为6

(C)a[2][2]的初值为0         (D)在程序中引用a[2][3]会导致编译错误

7、若有定义语句:

inta[10]={1,2,3,4,5,6,7,8,9,10};charc='a';则值为4的合法表达式是___C_____。

(A)a[4]         (B)a['d'-'c']         (C)a['d'-c]         (D)a[100.0-c]

8、以下在VC6.0中会导致编译错误的语句是__D______。

(A)#defineN'6'

   inta[N-0x30]={N};

(B)inta[]={21.3,0.96,5,47.8};

(C)inta[][3]={10,20,30,40};

(D)inta[5]={1,2,3,4,5,6,7};

9、以下说法正确的是___B_____。

(A)可以在程序的不同位置对数组的长度进行动态更新。

(B)二维数组可以看成是特殊的一维数组,它的每个元素都是一个一维数组。

(C)即使不对数组进行初始化,系统也会自动为数组元素赋予默认初值。

(D)在定义二维数组并对其进行初始化时,允许省略列下标。

10、以下程序段用冒泡法对数组a进行由大到小排序,则下划线所在位置应填入的代码是___D_____。

inta[5]={29,47,14,110,8},i,j,t;

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

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

   if(a[j]

(A)5-i         (B)4         (C)4-i         (D)3-i

11、以下程序段用选择法对数组a进行由小到大排序,则下划线所在位置应填入的代码是_____A___。

inta[5]={86,12,57,39,165},i,j,t;

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

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

   if(a[j]

(A)i+1         (B)++i         (C)0         (D)1

二、判断题

1、数组是C语言的一种构造数据类型,其元素的类型可以是整型、实型或者字符串类型。

B

2、若需定义一个包含2行3列共6个元素的二维整型数组a,并对其最后1行的3个元素进行初始化,可用如下语句实现:

B

inta[][3]={{5,6,7}};

3、C语言程序在编译过程中,编译器会检查数组下标是否越界。

B

4、对于数值型数组而言,只能单个引用数组元素,不能一次引用整个数组。

A

5、若在程序中定义数组并进行初始化:

inta[5]={12.3,8.67f,'x',45};则程序被编译时会报错。

B

三、填空题

1、数组名是一个【 地址】常量,不能对它进行自增、自减和赋值运算。

2、以下程序段通过键盘输入为数组中的所有元素赋值,请填空。

inta[10],i=0;

do

 scanf("%d",【&a[i++] 】);

while(i<10);

3、以下程序段将数值k插入到有序数组a中,操作完成后数组a保持有序,请填空。

inta[10]={3,5,8,12,20,39},k,n=6,i=0,j;

scanf("%d",&k);

while(【 a[i]

for(j=n-1;j>=i;j--)a[j+1]=a[j];

a[i]=k;

4、以下程序段计算2010年的某月某日是当年的第几天,请填空。

intmonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31},m,d,i;

printf("请输入月份和日数:

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

for(i=1;i

printf("是2010年的第%d天\n",d);

a[i][k]=a[i][k-1]

函数

1、关于函数的定义,以下正确的描述是___C_____。

(A)如果函数不返回值,可以省略类型说明符

(B)可以在同一程序中定义同名的函数,只要保证它们的返回值类型或形参列表不相同即可

(C)同一函数中的形参名必须唯一,但可以与其他函数中的变量同名

(D)如果函数体为空,则函数最外层的一对花括号可以省略

2、若有函数定义:

intfun(){doublex=23.5;returnx;},则函数的返回结果是___A____。

(A)23         (B)23.0         (C)23.5    (D)24

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

#include

intfun(intx){return++x;}

voidmain(){

 inti=0;

 while(fun(i)<10)i++;

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

}

(A)11          (B)10         (C)8         (D)9

4、关于函数调用时的参数传递,以下错误的描述是___B_____。

(A)实参可以是常量、变量或表达式

(B)形参可以是常量、变量或表达式

(C)实参与形参的个数相等、类型一致                

(D)实参必须有确定的赋值

5、用一维数组名作为函数的实参时,传递给对应形参的是_D_______。

(A)整个数组         (B)第一个数组元素的地址

(C)数组的首地址     (D)(B)和(C)都是正确的

6、以下程序的输出结果是___C_____。

#include

voidfun(intb[5],intn){

 inti,t;

 for(i=0;i

}

voidmain(){

 inta[5]={9,7,5,3,1},i;

 fun(a,5);

 for(i=0;i<5;i++)printf("%d",a[i]);

}

(A)13579         (B)31975         (C)97531         (D)编译时报错

7、若有数组定义语句inta[6];和函数调用语句fun(a);则在fun函数的定义中,对形参数组array的错误定义方式是___A_____。

(A)voidfun(intarray[intN=6])

(B)voidfun(intarray[10])

(C)voidfun(intarray[])

(D)voidfun(intarray[3])

9、以下说法正确的是___D_____。

(A)在函数中可以使用多条return语句来返回多个处理结果

(B)在函数中最多只能有一条return语句

(C)一个函数不可能既是被调用函数,又是主调函数

(D)如果函数值的类型与返回值的类型不一致,以函数值类型为准

10、以下程序的输出结果是___D_____。

#include

intfun(intn){

 if(n==2)returnn;

 elsereturnn*fun(n-2);

}

voidmain(){printf("%d\n",fun(7));}

(A)105         (B)2         (C)35         (D)递归无法正常结束

11、以下说法正确的是_B_______。

(A)在函数定义时,如果不明确指定函数的返回值类型,则默认返回值类型为“void”

(B)所有的函数都是平行的,一个函数并不从属于另一个函数

(C)属于一个C语言程序的不同文件中不允许定义同名的全局变量

(D)函数被调用时形参才分配存储单元,函数调用结束后形参不释放占据的存储单元

二、判断题

1、在C语言中定义无参函数时,函数名后的一对圆括号可以保留,也可以省略。

B

2、被调用函数执行过程中形参值的变化不会影响主调函数中的实参值。

A

3、以下函数的功能是计算1+1/2+1/3+...+1/n。

B

doublefun(intn){

 inti;doubles=0.0;

 for(i=1;i<=n;i++)s+=1/i;

 returns;

}

4、如果被调用函数的定义出现在主调函数之前,必须使用函数原型对其进行声明。

B

5、以下程序的输出结果是:

234567。

A

#include

voidfun(intb[3]){

 inti;

 for(i=0;i<6;i++)b[i]++;

}

voidmain(){

 inta[6],i;

 for(i=0;i<6;i++)a[i]=i+1;

 fun(a);

 for(i=0;i<6;i++)printf("%d",a[i]);

}

三、填空题

1、在一个函数调用过程中又调用另一个函数称为函数的【 嵌套调用】。

2、以下程序的功能是输出1-3+5-7+...+45-47+49的运算结果,请填空。

#include

intfun(intn){

 ints=0,t=1,i;

 for(i=1;i<=n;i+=2){【 s+=t*i】;t=-t;}

 returns;

}

voidmain(){printf("%d\n",fun(50));}

3、以下程序执行完毕后,变量x的值是【 8】。

#include

intfun(intn){returnn>2?

fun(n-1)+fun(n-2):

1;}

voidmain(){intx=fun(6);}

指针

1、若有语句:

inti,*p=&i;则均表示变量地址的选项是__D______。

(A)*&p,*p,&i        (B)i,p,&*i    (C)*&i,&i,*p    (D)&i,p,&*p

3、若有语句:

intx=6,*p=&x;则下面正确的表达式是_B_______。

(A)++&x         (B)(*p)--         (C)&(x+5)         (D)p=1000

4、若有语句:

inta[10],*p1=a+8,*p2=&a[3];则p1-p2的值是____D____。

(A)20         (B)4         (C)16         (D)5

5、以下程序段执行完毕后,变量a和b的值分别是_A_______。

inta=4,b=5,*p1=&a,*p2=&b;

a=2*(*p1%-*p2)+5;

b=*p1**p2++;

(A)13,65         (B)-3,-15         (C)-3,-18         (D)13,78

6、以下程序段调用scanf函数为变量x赋值,则填入下划线所在位置的错误代码是__B__。

intx,*p=&x;

scanf("%d",__________);

(A)&x         (B)*p         (C)p         (D)&*p

7、若有语句:

inta[]={1,3,2,7,3,4},*p=a+3,k;则变量k的值不等于3的选项是_D__。

(A)k=(p++,*p++)         (B)k=(p-=2,*p--)

(C)k=(p--,*--p)         (D)k=(p++,*++p)

8、若有定义:

inta[10],*p=a;则表示数组元素a[3]的错误选项是________。

(A)*(a+=3)         (B)*(p+=3)         (C)*(a+3)         (D)p[3]

9、以下程序执行完毕后,变量a和b的值分别是________。

#include

voidfun(int*p,int*q){

 int*t;

 if(*p>*q){t=p;p=q;q=t;}

}

voidmain(){

 inta=13,b=9;

 fun(&a,&b);

}

(A)9,13         (B)13,13         (C)13,9         (D)9,9

10、以下程序输出数组a中的最小值,则下划线所在位置应填入的代码是________。

#include

intfindmin(int*p,intn){

 int*m,*q=p+n;

 for(m=p;p

 return*m;

}

voidmain(){

 inta[6]={21,17,34,9,12,45};

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

}

(A)pm         (C)*p>*m         (D)*p<*m

11、以下说法正确的是________。

(A)可以将整型常量作为存储单元地址存放到指针变量中。

(B)指针变量的值是指针。

(C)可以采用为数组名重新赋值的方法使其指向不同的元素。

(D)使用地址值作为实参、指针变量作为形参,形参值的改变可以使实参值发生变化。

12、若有函数定义:

doublefun(inta[10]){...},则在对该函数进行原型声明时,错误的声明语句是________。

(A)doublefun(int[]);

(B)doublefun(intb[10]);

(C)doublefun(inta);

(D)doublefun(int*a);

15、若有语句:

intx,*p=&x;则与该语句等价的语句是________。

(A)intx,*p;*p=&x;         (B)intx,*p;p=&x;

(C)intx,*p;*p=x;          (D)intx,*p;p=x;

二、判断题

1、当两个指针变量指向同一数组时,两个指针变量相减的差值即为两个指针变量相隔的字节个数。

B

2、如果某个指针变量赋值为0,表示该指针变量不指向任何变量A。

3、若有语句:

intx[]={5,7,3,8},*p=x+2,y;y=++*p--;则变量y的值是3。

B

4、若有函数定义:

intfun(int*a){return*a;},则函数的返回值是形参a中存放的地址值。

B

5、以下程序执行完毕后,main函数中数组a各元素的值依次是1、9、6、5、8、7、3。

B

#include

voidfun(inta[],intn,intm){

 inti,t,*p;

 for(i=1;i<=m;i++){

   t=*(a+n-1);

   for(p=a+n-2;p>=a;p--)*(p+1)=*p;

   *a=t;

 }

}

voidmain(){

 inta[7]={8,7,3,5,1,9,6};

 fun(a,7,3);

}

三、填空题

1、作为形参的数组名并不表示数组的首地址,其实质是一个【 指针变量】。

2、以下程序的功能是将1到100之间能被7或11整除的所有整数放在数组a中,并将这些数的个数放在变量n中,请填空。

voidfun(int*p,int*q){

 intx;

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

   if(x%7==0||x%11==0){*p++=x;(*q)++;}

}

voidmain(){

 inta[1000],n=0;

 【 fun(a,&n)】;}

3、若有语句:

inta[7]={2,5,3,4,7,8,1},*p=a+1;则p[*(a+*(a+2))]的值是【 8】。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 营销活动策划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1