C语言复习题及答案Word格式文档下载.docx

上传人:b****4 文档编号:16995920 上传时间:2022-11-27 格式:DOCX 页数:38 大小:38.06KB
下载 相关 举报
C语言复习题及答案Word格式文档下载.docx_第1页
第1页 / 共38页
C语言复习题及答案Word格式文档下载.docx_第2页
第2页 / 共38页
C语言复习题及答案Word格式文档下载.docx_第3页
第3页 / 共38页
C语言复习题及答案Word格式文档下载.docx_第4页
第4页 / 共38页
C语言复习题及答案Word格式文档下载.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

C语言复习题及答案Word格式文档下载.docx

《C语言复习题及答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言复习题及答案Word格式文档下载.docx(38页珍藏版)》请在冰豆网上搜索。

C语言复习题及答案Word格式文档下载.docx

C)externD)static

9、已知:

inta,x;

则正确的赋值语句是()。

A)a=(a[1]+a{2})/2;

B)a*=*a+1;

C)a=(x=1,x++,x+2);

D)a="

good"

;

10、已知:

inta,*p=&

a;

则下列函数调用中错误的是()。

A)scanf("

%d"

&

a);

B)scanf("

p);

C)printf("

a);

D)printf("

11、下述程序的输出结果是 (   )。

#include<

stdio.h>

voidmain()

{structcomplex

{intx;

inty;

}cnum[2]={1,3,2,7};

printf(“%d”,cnum[0].y/cnum[0].x*cnum[1].x);

}

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

 12、下述程序的输出结果是(   )。

#include<

voidmain()

{union

{unsignedcharc;

unsignedinti[4];

}z;

z.i[0]=0x39;

z.i[1]=0x36;

printf(“%c”,z.c);

A)6B)9C)0D)3

13、下述关于C语言文件操作的结论中,(   )是正确的。

A)对文件操作必须先关闭文件

B)对文件操作必须先打开文件

C)对文件操作顺序无要求

D)对文件操作前必须先测试文件是否存在,然后再打开文件

14、以下程序的输出结果是(   )。

main()

{charch[3][4]={"

123"

"

456"

78"

},*p[3];

inti;

for(i=0;

i<

3;

i++)

p[i]=ch[i];

%s"

p[i]);

}

A)123456780B)123456780C)12345678D)147

15、对于所定义的二维数组a[2][3],元素a[1][2]是数组的第()个元素。

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

二、判断题

1、赋值运算符的优先级低于关系运算符(   )。

2、条件运算符的结合方向是“自左向右”(   )。

3、C语句的循环语句中循环体如果包含一个以上的语句,必须以复合语句形式出现(   )。

4、C程序中的函数不能嵌套调用,但可嵌套定义(   )。

5、若自定义函数要求函数名返回一个值,则该函数体中必须要有return语句(   )。

6、当形式参数为指针变量名时,实际参数可为指针变量名、数组名或其它类型变量的首地址(   )。

7、若有说明:

staticinta[3][4];

,则数组a中各数组元素可在程序的编译阶段得到初值0(   )。

8、若用数组名作为函数调用时的实参,则实际上传递给形参数组的是数组的第一个元素的值(   )。

9、利用指针和结构体类型可以构成表、树等复杂的数据结构(   )。

10、共用体变量的地址和它的各成员的地址都是同一地址(   )。

11、printf函数中的“%0”格式参数表示用来输出unsigned型数据()。

12、在一个C程序中,所有要使用的变量和要调用的函数都必须在main()函数中定义()。

13、赋值运算符的结合性是“自右至左”()。

14、一个C程序可以由多个源程序文件组成()。

15、do-while语句构成的循环,当while语句中的表达式的值为零时结束循环()。

三、写出下面各程序的运行结果

1、#includestdio.h

main()

{inti=0,j=0,k=0,m;

for(m=0;

m4;

m++)

switch(m)

{case0:

i=m++;

case1:

j=m++;

case2:

k=m++;

case3:

m++;

printf(“\n%d,%d,%d,%d”,i,j,k,m);

2、#includestdio.h

{inti=1;

while(i=15)

if(++i%3!

=2)

continue;

else

printf(“%d”,i);

3、#include<

add1(inta[],intn)

{inti;

for(i=0;

n;

i++)a[i]++;

{staticintarray[]={0,1,2,3,4,5,6,7,8,9};

intj;

add1(array,10);

for(j=0;

j<

10;

j++)

printf(“%d”,array[j]);

4、uniondata

{longw;

floatx;

charz;

}beta;

main()

{beta.w=123456;

beta.y=888;

beta.x=3.14;

beta.z=’x’;

printf(“%c”,beta.y);

5、#include<

string.h>

typedefstructstudent{

charname[10];

longsno;

floatscore;

}STU;

{

STUa={"

zhangsan"

2001,95},b={"

Shangxian"

2002,90},c={"

Anhua"

2003,95},d,*p=&

d;

d=a;

if(strcmp(a.name,b.name)>

0)d=b;

if(strcmp(c.name,d.name)>

0)d=c;

printf("

%ld%s\n"

d.sno,p->

name);

四、程序填空

1、以下程序是从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入,请将缺省语句填上。

{floatx,amax,amin;

scanf(“%f”,&

amax=x;

amin=x;

while(①)

{if(②)amax=x;

if(③)amin=x;

printf(“amax=%f,amin=%f\n”,amax,amin);

}2、下面的程序是用指针来交换两个数据,请将缺省语句填上。

voidexchange(int*p,int*q)

{intt;

t=*p;

*p=*q;

*q=t;

{inta,b,*x,*y;

a=10;

b=20;

x=&

printf(“%d%d\n”,*x,*y);

五、程序设计题

有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数。

2、用自定义函数和数组求n个数的平均值,并用主函数调用

参考答案:

1、B2、D3、C4、C5、A

6、A7、D8、C9、C10、D

11、D12、B13、B14、C15、D

( √  )2、( ×

  )3、( √  )4、( ×

  )5、( ×

  )

6、 √  )7、( √  )8、( √  )9、( √  )10、( √  )

11、(×

)12、(×

)13、(√)14、(√)15、(√)

三、写出程序的运行结果

1、答案是:

0,1,2,5

2、答案是:

2581114

3、答案是:

12345678910

4、答案是:

x

5、答案是:

2002Shangxian

1、答案是:

①x=0②xamax③xamin

2、答案:

①y=&

b;

②exchange(x,y);

五、程序设计题

1、参考答案:

#defineN10

structstudent

{charnum[6];

charname[8];

intscore[4];

floatave;

}stu[N];

{inti,j,max,maxi,sum;

floataverage;

/*输入*/

for(i=0;

i<

N;

i++)

{printf(“\nInputscoresofstudent%d,\n”,i+1);

printf(“No.:

”);

scanf(“%s”,stu[i].num);

printf(“name:

scanf(“%s”,stu[i].name);

{printf(“score%d:

”,j+i);

scanf(“%d”,&

stu[i].score[j]);

/*计算*/

average=0;

max=0;

maxi=0;

for(i=0;

{sum=0;

for(j=0;

j<

j++)

sum+=stu[i].score[j];

stu[i].avr=sum/3.0;

average+=stu[i].avr;

if(sum>

max)

{max=sum;

maxi=i;

average/=N;

/*打印*/

printf(“NO.namescore1score2score3average\n”);

{printf(“%s%10s”,stu[i].num,stu[i].name);

printf(“%9d”,stu[i].score[j]);

printf(“%8.2f\n”,stu[i].avr);

printf(“average=%6.2f\n”,average);

printf(“Thehighestscoreis:

%s,scoretotal:

%d”,stu[maxi].name,max);

2、参考答案:

floataverage(floata[],intn)

{floataver=0;

intj;

aver=aver+a[j];

aver=aver/n;

returnaver;

{floatx[10],y;

scanf(“%f”,&

x[j]);

y=average(x,10);

printf(“aver=%.2f\n”,y);

复习B:

1、逗号表达式2,4,6,8的值为()。

A)2B)4C)6D)8

2、以下选项中非法的表达式是()

A)0<

=x&

x<

100B)i=j==0

C)(char)(65+3)D)x+1=x+1

3、若定义floata;

现要从键盘输入a的数据,其整数位为3位,小数位为2位,则

选用()。

A)scanf(“%f”,&

B)scanf(“%5.2f”,a);

C)scanf(“%6.2f”,&

D)scanf(“%f”,a);

4、下列程序的运行结果是()

{inta=3,b=2,c=1,k=4;

k<

a?

k:

c<

b?

c:

a);

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

5、以下程序中,while循环的循环次数是()。

{inti=0;

while(i<

10)

{if(i<

1)continue;

if(i==5)break;

i++;

A)1B)10C)6D)死循环,不能确定次数

6、执行语句:

for(i=1;

i++<

4;

)后;

变量i的值是()。

A)3B)4C)5D)不定

7、有关函数参数,下列说法不正确的是(   )。

A)实参可以将数据传给形参;

B)实参和形参是不同的变量;

C)形参可以将数据传给实参;

D)实参和形参必须个数相等,类型一致。

8、C语言中,变量和函数具有两个属性是(   )。

A)作用域和生存期B)类型和存储类别

C)作用域和类型D)作用域和存储类别

9、说明语句“int(*p)():

”的含义是()。

A)p是一个指向一维数组的指针变量

B)p是指针变量,指向一个整型数据

C)p是一个指向函数的指针,该函数的返回值是一个整型

D)以上都不对

10、说明语句"

int*(*p);

"

的含义是()。

A)p是一个指向int型数组的指针

B)p是指针变量,它构成了指针数组

D)p是一个指向函数的指针,该函数的返回值是一个指向整型的指针

11、下述程序的执行结果是(   )。

#include<

unionun

charc[2];

};

{unionunx;

x.c[0]=10;

x.c[1]=1;

printf(“\n%d”,x.i);

A)266B)11C)265D)138

12、若程序中有如下的说明和定义:

structex

{intx,y;

structexx,y;

则会发生的情况是 (   )。

A)编译时错   B)程序能顺利编译、连接、执行

C)能顺利编译和连接,但不能执行   D)能通过编译,但连接出错

 13、C语言可以处理的文件类型是(   ) 。

A)文本文件和数据文件    B)文本文件和二进制文件

C)数据文件和二进制文件   D)数据代码文件

14、下面的for语句()。

for(x=0,y=0;

(y!

=123)&

(x4);

x++)

A)是无限循环B)循环次数不定C)循环执行4次D)循环执行3次

15、若有如下说明:

struct

{charch;

inti;

doublex;

}arr[2][3]={{‘a’,1,3.45},{‘b’,2,7.89},{‘c’,3,1.93}};

则表达式() 的值为2。

A)arr[0][1].chB)arr[0][1].iC)arr[0][0].iD)arr[0][2].i

1、条件运算符的结合方向是“自左向右”(   )。

2、switch语句中每一个case的常量表达式的值必须互不相同(   )。

3、循环语句中循环体允许包含一个以上的语句,可以不以复合语句形式出现(   )。

4、构成C程序的源文件之间以及函数与函数之间,相互位置可以任意(   )。

5、C程序中的函数不能嵌套定义,但可嵌套调用(   )。

6、从变量的作用域角度来分,可以分为全局变量和局部变量(   )。

7、从终端输入一个字符串给字符数组,该字符串两端不必用双引号括起来(   )。

8、若有说明:

inta[][4]={0,0};

,则只有a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0(   )。

9、利用指针和结构类型不能构成更复杂的数据结构(   )。

10、共用体类型可以出现在结构体类型定义中(   )。

11、当一个case语句末包含break语句时,执行完该case语句后跳出switch结构()。

12、宏定义中的标识符可以用大写字母,也可以用小写字母()。

13、do-while语句构成的循环,当while语句中的表达式的值为非零时结束循环()。

14、用“%”作求余运算时,该运算符两侧均应为整型数据()。

15、一个逗号表达式可以与另一个表达式组成一个新的逗号表达式()。

{inta=1,b=3,c=5,d=4;

if(ab)

if(cd)x=1;

if(ac)

if(bd)x=2;

elsex=3;

elsex=6;

elsex=7;

printf(“x=%d”,x);

{intk,j,m;

for(k=5;

k=1;

k--)

{m=0;

for(j=k,j=5;

m+=k*j;

printf(“m=%d\n”,m);

3、#include<

main()

{unionExa

{struct

{inta;

intb;

}out;

intc;

intd;

}e;

e.c=1;

e.d=2;

e.out.a=e.c*e.d;

e.out.b=e.c+e.d;

%d%d"

e.out.a,e.out.b);

4、#include“stdio.h”

{inta[]={1,2,3,4},i,j,s=0;

j=1;

for(i=3;

i>

=0;

i--)

{s=s+a[i]*j;

j=j*10;

printf(“s=%d\n”,s);

5、#include"

stdio.h"

#include"

string.h"

{chars1[]="

somthings"

chars2[]="

test"

chars3[]="

%s\n"

strcat(strcpy(s1,s2),s3));

1、下面程序输出100到200之间的素数,每行输出10个素数,请将缺省语句填上,使算法完整。

#include“math.h”

{intm,k,i,n=0;

for(m=101;

m=200;

m=m+2)

{if(①)printf(“\n”);

k=sqrt(m);

for(i=2,i=k;

if(②)break;

if(i=k+1){printf(“%d”,m);

n=n+1;

2、一个函数days,实现求某月某日是该年的第多少天。

由主函数将年、月、日传递给days函数,计算后将日数传回主函数输出,请将缺省语句填上,使算法完整。

structy_m_d

{intyear;

intmonth;

intday;

}date;

{intdays(int,int,int);

inti,day_sum;

printf(“inputyear,month,day:

scanf(“%d,%d,%d”,&

date.year,&

date.month,&

date.day);

day_sum=days(①);

printf(“\n%d/%disthe%dthdayin%d.”,date.month,date.day,day_sum,date.year);

days(intyear,intmonth,intday)

{intday_sum,i;

intday_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

for(i=1;

month;

day_sum+=day_tab[i];

day_sum+=day;

if((year%4==0&

year%100!

=0||year%4==0)&

month>

=3)

return(day_sum);

1,学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:

把分数最低的学生数据放在h所指的数组中,注意:

分数最低的学生可能不止一个,函数返回分数最低的学生的人数。

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STREC*a,STREC*b)

{…………

{STRECs[N]={{“GA05”,85},{“GA03”,76},{“

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

当前位置:首页 > 农林牧渔 > 林学

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

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