C语言复习题及答案老师给的docxWord格式.docx

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

C语言复习题及答案老师给的docxWord格式.docx

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

C语言复习题及答案老师给的docxWord格式.docx

a;

贝!

|下列函数调用中错误的是

A)scanf「%d“,&

a);

C)printfT%d”,a);

13.

14.

15、

D)3)是正确的。

A)6B)9

下述关于C语言文件操作的结论中,(B

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

对文件操作必须先打开文件对文件操作顺序无要求

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

A)

B)

C)

D)

以下程序的输出结果是(C)O

main()

{charch[3][4]={〃123〃,"

456〃,〃78"

},*p[3];

(i=0;

i<

3;

i++)

p[i]二ch[i];

printf(z/%sz,,p[i]);

A)123456780B)123

对于所定义的二维数组a[2][3],A)3B)4C)

int

for

456780C)12345678D)147元素a[l][2]是数组的第(D)个元素。

5

D)6

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

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

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

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

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

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

(V)o

7、若有说明:

staticinta[3][4];

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

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

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

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

11>

printf函数中的"

%0”格式参数表示用来输出unsigned型数据(x)。

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

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

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

15>

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

三、写

出下面各程序的运行结果

1、#include<

stdio.h>

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

for(m=0;

m<

4;

m++)switch(m){case0:

i=m++;

case1:

j=m++;

case2:

k=m++;

case3:

m++;

}printf(u\n%d,%d,%d,%d”,ijk,m);

2、#includc<

{inti=l;

while(i<

=15)if什+i%3!

=2)continue;

elseprintf(“%d"

i);

3、#include<

add1(inta[],intn)

{inti;

for(i=0;

n;

i++)a[i]++;

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

intj;

add1(arrayJO);

for(j=0;

j<

10;

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

4、uniondata

{longw;

floatx;

inty;

charz;

}beta;

{beta.w=123456;

beta.y=888;

bcta.x=3.14;

beta・z='

x:

printfT%c'

'

beta.y);

5、#include<

string.h>

typedefstructstudent{

charname[10];

longsno;

floatscore;

}STU;

STUa={“zhangsan”,2001,95},b={HShangxianM,2002,90},c={“Anhua”,2003,95},d,*p=&

d;

d=a;

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

0)d=b;

if(strcrnp(c.narne,d.name)>

0)d=c;

printf(H%ld%s\n,\d.sno,p->

naine);

四、程序填空

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

{floatx,amax,amin;

scanf(“%f'

&

amax=x;

amin=x;

while(①)

{if(②)amax=x;

if(③)amin=x;

scanf(“%f;

&

printf(uamax=%f>

amin=%f\n,\amax,amin);

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

voidexchange(int*p,int*q)

{intt;

t=*p;

*p=*q;

*q=t;

main()

{inta,b,*x,*y;

a二10;

b二20;

x二&

printf(u%d%d\n"

*x,*y);

五、程序设计题

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

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

参考答案:

一、单项选择题

1、B

2、D

3、C

4、C

5、A

6、A

7、D

8、C

9、C10、

D

11>

D

12、B

13、B

14>

C

15、D

判断题

7)

2、(x

)3、(

7)4、(X

)5、(*)

)7、(7

)&

(7)9、(

7)10、(Q)

11、

(x

)12、(x

)13、

(7)14、

(7)15、(7)

三、

写出程序的运行结果

1、

答案是:

0,

1,2,5

2、

2

5811

14

3、答案是:

12345678910

4^答案是:

x

5、答案是:

2002Shangxian

1>

答案是:

①x>

=0②x>

amax③xvamin

2、答案:

©

y=&

b;

②exchange(x,y);

1、参考答案:

#defineN10

structstudent

{charnum[6];

charname[8];

intscore[4];

floatave;

}stu[N];

{intij,max,maxi,sum;

floataverage;

/*输入*/

for(i=0;

i<

N;

i卄)

{printf(u\nlnputscoresofstudent%d,\n'

i+l);

printf(“No.:

"

);

scanf(“%s'

stu[i].num);

printfpnamc:

scanf('

%s'

stu[i].name);

for0=0;

j++)

{printf(uscore%d:

j+i);

scanf(“%d"

&

stu[i].score[j]);

{sum=0;

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

stu[i].avr=sum/3.0;

average+=stu[i].avr;

if(sum>

max)

{max=sum;

maxi=i;

avcragc/=N;

/*打印*/

printfC'

NO・namescore1score2

score3average\ii^);

for(i=0;

i++)

{printf("

%s%10s"

stu[i].num,

stu[i].name);

j卄)printf(“%9d"

stu[i].score[j]);

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

/*计算*/average=0;

max=0;

maxi=0;

}printfC'

average=%6.2f\n,\average);

printf^Thehighestscoreis:

%s,scoretotal:

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

2、参考答案:

floataverage(floata[],intn){floataver=0;

intj;

j++)aver=aver+a[j];

aver=aver/n;

returnaver;

{floatx[10],y;

forO=0;

j卄)scanf("

%F'

x[j]);

y=average(x,10);

printfC4aver=%.2f\n,,,y);

复习B:

1>逗号表达式2,4,6,8的值为(d)o

A)2B)4C)6

D)8

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

A)0<

=x&

x<

100B)i=j==O

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

7、

A)1执行语句:

A)3

有关函数参数,

(i=l;

10C)6

i++<

)后;

变量i的值是(c)o4

C)5

死循环,不能确定次数

D)不定

下列说法不正确的是

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

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

8、C语言屮,变量和函数具有两个属性是

A)作用域和生存期B)

C)作用域和类型D)

c)。

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

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

b

类型和存储类别作用域和存储类别

)o

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

的含义是(c)。

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

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

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

D)以上都不对

10、说明语句”int*(邛);

“的含义是(d)。

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

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

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

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

#include<

unionun

{inti;

charc[2];

};

voidmain(){unionunx;

3、若定义floata;

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

structexx,y;

则会发生的情况是(a)0

A)编译时错

C)能顺利编译和连接,但不能执行

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

A)文本文件和数据文件B)

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

14、下而的fbr语句(c)。

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

D)能通过编译,但连接出错

b)。

文本文件和二进制文件

数据代码文件

for(x=0,y=0;

(y!

=123)&

(x<

4);

x++)

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

15、若有如下说明:

struct

{charch;

inti;

doublex;

}arr[2][3]={{<

a\l,3.45},{4b\2,7.89},{40\3,1.93}};

则表达式(b)的值为2。

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

二、判断题

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

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

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

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

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

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

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

8、若有说明:

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

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

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

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

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

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

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

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

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

三、写出程序的运行结果

if(c<

d)x=l;

else

if(a<

c)

if(b<

d)x=2;

1、#include<

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

if(a<

b)

elsex=3;

elsex=6;

elsex=7;

printf(“x=%d"

x);

2、#include<

{intk,j,m;

fdr(k=5;

k>

=l;

k--){m=0;

for(j=k,jv=5;

j++)

m+=k*j;

printf(um=%dW\m);

3、//include<

{unionExa

{struct

{inta;

intb;

}out;

intc;

intd;

}e;

e.c=l;

e.d=2;

c.out.a=c・c*c.cl;

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

printf(M%d%d"

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

4、#include“stdio.W

{inta[]={l,2,3,4},ij,s=0;

j=l;

for(i=3;

i>

=0;

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

j=j*10;

}

printf(6<

s=%d\n,,,s);

5、include,,stdio.h,'

#include"

string.h"

{chars1[]='

*somthings"

;

chars2[]="

tcstM;

chars3[]=ngoodu;

%s\n"

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

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

^include“math.h'

{intm,k,i,n=0;

for(m=101;

=200;

m=m+2)

{if(_Q_)printfC4\n?

);

k=sqrt(m);

for(i=2,i<

=k;

if()break;

if(i>

=k+l){printfC%cT,m);

n=n+l;

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

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

structy_m_d

{intyear;

intmonth;

intday;

}date;

{intdays(int?

int,int);

inti,day_sum;

printf(44inputyear,month,day:

95);

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

date.yeai;

date.month,&

date.day);

day_sum=days(

(1));

printf{44\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=l;

month;

day_sum+=day_tab[i];

day_sum+=day;

if((year%4=0&

year%100!

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

month>

=3)retuni(day_sum);

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

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

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

#dcfincN16

typedefstruct

{charnum[10J;

ints;

}STREC;

intfun(STREC*a,STREC*b)

{STRECs[N]={{“GA05"

85},{“GA03"

76},{“GA02"

69},{“GA04"

85},

{“GAOV\91},{“GA07"

72},{“GA08"

64},{“GA06"

87},

{“GAO15”,85},{“GAO13”,96},{“GAO12,64},{“GAO14”,91},{“GAO1V\91},{“GAO17”,64},{“GAO18”,64},{“GAO16”,72};

STRECh[N];

inti,n;

n=fun(s,h);

The%dlowestscore:

\n,,,n);

fbr(i=O;

汁+)

printf(t4%d%4d\n,,,h[I].num,h[I].s);

printf(“\n”);

2、从键盘输入一-批字符(回车键结束),存入一个磁盘文件abc.txt中

1、D2、D3、A4、D5、D

6、C7、C8、B

9、010、D

{FILE*fp;

charch;

m=fopen("

abc.txt”,'

w'

ch=getchar();

while(ch!

=,\n,)

{fputc(fp,ch);

ch=gctchar();

fclose(fp);

11、A

12、A

14、C

15、B

1、(x

)2、(

V

)3、(x

)4、(7

6、(V

)7、(

7)8、(P

)9、(x

11、(7)

12.(

X)

13、(x

)14、(7

1、答案是:

x=2

2、答案是:

m=15

3、答案是:

48

)5、(Q)

)10、(V)

15、(P)

1、答案是:

®

n%10==0②m%i==0

2、答案是:

date.year,date.month,date.day

②day_sum=0;

③day_sum+=l;

1、参考答案:

STRECfun(STREC*a,char*b)

{staticSTRECh={“,l};

intk;

fbr(k=0;

k<

k++)

if(!

strcmp(a[k].num,b))

{h=a[k];

break;

returnh;

2、参考答案:

复习C:

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

当前位置:首页 > 高中教育 > 高考

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

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