学年《C语言程序设计》考试A卷史.docx

上传人:b****8 文档编号:28617603 上传时间:2023-07-19 格式:DOCX 页数:15 大小:20.49KB
下载 相关 举报
学年《C语言程序设计》考试A卷史.docx_第1页
第1页 / 共15页
学年《C语言程序设计》考试A卷史.docx_第2页
第2页 / 共15页
学年《C语言程序设计》考试A卷史.docx_第3页
第3页 / 共15页
学年《C语言程序设计》考试A卷史.docx_第4页
第4页 / 共15页
学年《C语言程序设计》考试A卷史.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

学年《C语言程序设计》考试A卷史.docx

《学年《C语言程序设计》考试A卷史.docx》由会员分享,可在线阅读,更多相关《学年《C语言程序设计》考试A卷史.docx(15页珍藏版)》请在冰豆网上搜索。

学年《C语言程序设计》考试A卷史.docx

学年《C语言程序设计》考试A卷史

北京航空航天大学

2009-2010学年第二学期期末

 

《C语言程序设计》

考试A卷

班级______________学号_________

 

姓名______________成绩_________

 

2010年6月10日

 

班号学号姓名成绩

《C语言程序设计》期末考试卷

注意事项:

1、请将所有的答案和程序写在答题纸上,写在试卷纸上不得分!

2、考试时间120分钟

一、单项选择题(每题2分,共40分)

1.指出下列描述正确的是()。

A)除了main()函数外,任何函数都可以被其它函数调用

B)在一个文件中有且仅有一个main()函数

C)在对C语言进行编译的过程中,可以发现注释中的错误

D)一个C语言程序是由一个主程序和若干子程序组成

2.语句:

printf("%d",(a=2)&&(b=-2);的输出结果是()。

A)无输出B)结果不确定C)-1D)1

3.设有定义:

intx=2;,以下表达式中,值不为6的是()。

A)x*=x+lB)x++,2*xC)x*=(1+x)D)2*x,x+=2

4.以下程序的输出结果是()。

A)20B)31C)321D)210

main()

{intn=4;

while(n--)printf("%d",--n);

}

5.有以下程序段

intk=0;

while(k=1)k++;

while循环执行的次数是()。

A)无限次B)有语法错,不能执行

C)一次也不执行D)执行1次

6.以下程序段中的变量已正确定义1——5ADDAA

6——10DACBD

11——15CACBC

16——20BBDAB

for(i=0;i<4;i++,i++)

for(k=l;k<3;k++);printf("*");

程序段的输出结果是()。

A)********B)****C)**D)*

7以下选项中,不能正确赋值的是()。

A)chars1[10];s1="Ctest";

B)chars2[]={'C','t','e','s','t'};

C)chars3[20]="Ctest";

D)char*s4="Ctest\n"

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

A)52B)51C)53D)97

main()

{inti,x[9]={9,8,7,6,5,4,3,2,1},*p=&x[4];

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

printf("%d",p[i]);}

9.有以下函数

charfun(char*p)

{returnp;}

该函数的返回值是()。

A)无确切的值B)形参p中存放的地址值

C)一个临时存储单元的地址D)形参p自身的地址值

10.设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是()。

A)n=0;while((ch=getchar())!

='\n')n++;B)n=0;while(getchar()!

='\n')n++;

C)for(n=0;getchar()!

='\n';n++);D)n=0;for(ch=getchar();ch!

='\n';n++);

11.以下程序的输出结果是()。

A)0B)29C)31D)无定值

fun(intx,inty,intz)

{z=x*x+y*y;}

main()

{inta=31;

fun(5,2,a);

printf("%d",a);}

12下列程序段的输出结果是()。

A)2143B)1212C)1234D)2112

voidfun(int*x,int*y)

{printf("%d%d",*x,*y);

*x=3;*y=4;}

main()

{intx=1,y=2;

fun(&y,&x);

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

}

13.有下列函数:

intfun(char*s)

{char*t=s;

while(*t++);

return(t-s);}

该函数的功能是()。

A)比较两个字符串的大小B)计算s所指字符串占用内存字节的个数

C)计算s所指字符串的长度D)将s所指字符串复制到字符串t中

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

A)16B)7C)9D)1

#defineSQR(X)X*X

main()

{inta=16,k=2,m=1;

a=SQR(k+m)/SQR(k+m);

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

}

15.下面程序的输出结果是()。

A)0B)1C)10D)9

main()

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

p=a;

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

}

16.设有条件表达式:

(EXP)?

i++:

j--,则下列表达式中与(EXP)完全等价的是()。

A)(EXP==0)B)(EXP!

=0)C)(EXP==1)D)(EXP!

=1)

17.若有说明:

inti,j=2,*p=&i;,则能完成(i=j;)赋值功能的语句是()。

A)i=*p;B)*p=*&j;C)i=&j;D)i=**p;

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

main()

{inta,b;

for(a=1,b=1;a<=100;a++)

{if(b>=10)break;

if(b%3==1)

{b+=3;continue;}

}

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

}

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

19设有如下程序段()。

chars[20]="Beijing",*p;

p=s;

则执行p=s;语句后,以下叙述正确的是()。

A)可以用*p表示s[0]

B)s数组中元素的个数和p所指字符串长度相等

C)s和p都是指针变量

D)数组s中的内容和指针变量p中的内容相同

20设有以下说明语句

structex

{intx;floaty;charz;}example;

则下面的叙述中不正确的是()。

A)struct结构体类型的关键字B)example是结构体类型名

C)x,y,z都是结构体成员名D)structex是结构体类型

二、填空题(前10题每题2分,后5题每题3分,共35分)

1.假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为_____9____。

2.假定int类型变量占用两个字节,其有定义:

intx[10]={0,2,4};,则数组x在内存中所占字节数是_______20_______。

3.若有定义语句:

chars[10]="1234567\0\0";,则strlen(s)的值是__7_______。

4.以下程序的输出结果是_101091______。

main()

{intx=10,y=10,i;

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

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

}

5.有如下程序

main()

{intx=1,a=0,b=0;

switch(x){

case0:

b++;

case1:

a++;

case2:

a++;b++;}

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

}

该程序的输出结果21_。

6.阅读以下程序:

main()

{intx;

scanf("%d",&x);

if(x--<5)printf("%d",x);

elseprintf("%d",x++);

}

程序运行后,如果从键盘上输人5,则输出结果是__4_______。

7.函数pi的功能是根据以下近似公式求π值:

(π*π)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n)

现在请你在下面的函数中填空,完成求π的功能。

#include“math.h”

doublepi(longn)

{doubles=0.0;longi;

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

return(sqrt(6*s));}

8.设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部____void__fun(b[10][22])_____。

要求形参名为b。

main()

{doubles[10][22];

intn;

……

fun(s);

……

}

9.设有以下程序:

main()

{intn1,n2;

scanf("%d",&n2);

while(n2!

=0)

{n1=n2%10;

n2=n2/10;

printf("%d",n1);}

}

程序运行后,如果从键盘上输入1298;则输出结果为_8921____________。

10.以下程序按下面指定的数据给x数组的下三角置数,并按如下形式输出,请填空_______。

4

37

269

15810

#include

main()

{intx[4][4],n=0,i,j;

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

for(i=3;i>=j;i--)

{n++;

x[i][j]=_____n____;}

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

{for(j=0;j<=i;j++)printf("%3d",x[i][j]);

printf("\n");}

}

11.以下函数按每行8个输出数组中的数据

voidfun(int*w,intn)

{inti;

for(i=0;i

{_if((i+1)%8==1)____printf("\n");______printf("%d",w[i]);}

}

下划线处应填入的语句是_______________。

12.以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。

请填空______。

strcen(chara[],charb[])

{intnum=0,n=0;

while(*(a+num)!

=__\0____)num++;

while(b[n]){*(a+num)=b[n];num++;n++;}

return(num);

}

13.有以下程序

#include

voidfun(char*s)

{while(*s)

{if(*s%2==0)printf("%c",*s);

s++;}}

main()

{chara[]={"bad"};

fun(a);printf("\n");

}

注意:

字母a的ASCII码值为97,程序运行后的输出结果是__b d___________。

14.以下程序中函数fun的功能是:

统计person所指结构体数组中所有性别(sex)为M

的记录的个数,存入变量n中,并作为函数值返回。

请填空__________。

#include

#defineN3

typedefstruct

{intnum;charnam[10];charsex;}SS;

intfun(SSperson[])

{inti,n=0;

for(i=0;i

if(_____________=='M')n++;

returnn;

}

main()

{SSW[N]={{1,"AA",’F’},{2,"BB",'M'},{3,"CC",'M'}};

intn;

n=fun(W);

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

}

15.有以下程序

#include

main()

{FILE*fp;inti,k=0,n=0;

fp=fopen(“d1.dat”,”w”);

for(i=1;i<4;i++)fprintf(fp,”%d”,i);

fclose(fp);

fp=fopen(“d1.dat”,”r”);

fscanf(fp,”%d%d”,&k,&n);printf(“%d%d\n”,k,n);

fclose(fp);

}执行后输出结果是____123 ________。

三、程序编写题(共25分)

见答题纸

答题纸

班号学号姓名成绩

一、单项选择题(共40分)

题号

1

2

3

4

5

6

7

8

9

10

答案

题号

11

12

13

14

15

16

17

18

19

20

答案

二、填空题(共35分)

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

 

三、程序编写题(共25分)

1.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

例如2+22+222+2222+22222(此时共有5个数相加),重复数的数字和相加数的个数由键盘输入。

(10分)

(提示:

重复数的数字用a表示,相加数的个数用n表示)

2.在主函数中调用一个子函数,该子函数实现在M行N列的二维整形数组中,找出每一行上的最大值并在屏幕上打印输出。

整形数数组各元素则在主函数中由键盘输入。

(15分)

(提示:

行数M和列数N的数值可以在程序前面用宏定义,将每一行上的最大值在屏幕上打印输出的工作可以在子函数中完成)

一、参考答案:

选择题:

1——5ADDAA

6——10DACBD

11——15CACBC

16——20BBDAB

二、填空题:

1)9

2)20

3)7

4)101091

5)a=2,b=1

6)4

7)1.0/(i*i)或1/(float)(i*i)

8)voidfun(doubleb[][22])或voidfun(doubleb[0][22])或voidfun(double(*b)[22])

9)8921

10)n

11)if(i%8==0)printf("\n");

12)’\0’或0

13)bd

14)person[i].sex

15)1230

三、程序编写题

1.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。

程序源代码:

main()

{

 inta,n,count=1;

 longintsn=0,tn=0;

 printf("pleaseinputaandn\n");

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

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

 while(count<=n)

 {

  tn=tn+a;

  sn=sn+tn;

  a=a*10;

  ++count;

 }

printf("a+aa+...=%ld\n",sn);

}

2.在主函数调用一个LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值,数组各元素从键盘输入。

#include

#defineN3

#defineM4

voidLineMax(intx[M][N])

{inti,j,p;

for(i=0;i

{p=0;

for(j=1;j

if(x[i][p]

printf("Themaxvalueinline%dis%d\n",i,x[i][p]);

}

}

voidmain()

{intx[M][N];

for(i=0;i

for(j=0;j

scanf(“%d\n”,&x[i][j]);

LineMax(x);

}

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

当前位置:首页 > PPT模板 > 可爱清新

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

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