20学年第二学期c语言期末考题及解答 4.docx

上传人:b****4 文档编号:11792316 上传时间:2023-04-01 格式:DOCX 页数:15 大小:20.11KB
下载 相关 举报
20学年第二学期c语言期末考题及解答 4.docx_第1页
第1页 / 共15页
20学年第二学期c语言期末考题及解答 4.docx_第2页
第2页 / 共15页
20学年第二学期c语言期末考题及解答 4.docx_第3页
第3页 / 共15页
20学年第二学期c语言期末考题及解答 4.docx_第4页
第4页 / 共15页
20学年第二学期c语言期末考题及解答 4.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

20学年第二学期c语言期末考题及解答 4.docx

《20学年第二学期c语言期末考题及解答 4.docx》由会员分享,可在线阅读,更多相关《20学年第二学期c语言期末考题及解答 4.docx(15页珍藏版)》请在冰豆网上搜索。

20学年第二学期c语言期末考题及解答 4.docx

20学年第二学期c语言期末考题及解答4

 

xxxx大学

xxxx学年第二学期期末

 

《C语言程序设计》

考试A卷

班级______________学号_________

 

姓名______________成绩_________

 

班号学号姓名成绩

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

注意事项:

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

2、考试时间120分钟

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

1、以下叙述正确的是______。

A)在C程序中,main函数必须位于程序的最前面

B)C程序的每行中只能写一条语句

C)C语言本身没有输入输出语句

D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误

2、以下正确的描述是______。

A)continue语句的作用是结束整个循环的执行

B)只能在循环体内和switch语句体内使用break语句

C)在循环体内使用break语句或continue语句的作用相同

D)从多层循环嵌套中退出时,只能使用goto语句

3有以下程序

voidmain()

{doubled=3.2;

intx,y;

x=1.2;

y=(x+3.8)/5.0;

printf("%d\n",d*y);

}

程序的输出结果是____

A)3B)3.2C)0D)3.07

4、若变量已正确说明为float类型,要通过语句

scanf("%f%f%f",&a,&b,&c);

给a赋值10.0,给b赋值22.0,给c赋值33.0,不正确的输入形式是______。

A)102233

B)10.0,22.0,33.0

C)10.022.033.0

D)102233

5、main()

{inta=0,b=0,c=0,d=0;

if(a=1)b=1;c=2;

elsed=3;

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

}

程序输出是____

A)0,1,2,0B)0,0,0,3C)1,1,2,0D)编译有错

6、能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假的表达式是______。

A)x>=1&&x<=10&&x>=200&&x<=210

B)x>=1||x<=10||x>=200||x<=210

C)x>=1&&x<=10||x>=200&&x<=210

D)x>=1||x<=10&&x>=200||x<=210

7、若w=1,x=2,y=3,z=4,则条件表达式w

w:

y

y:

z的值是______。

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

8、对字符数组s赋值,不合法的是______。

A)chars[]="Beijing";

B)chars[20]={"beijing"};

C)chars[20];s="Beijing";

D)chars[20]={'B','e','i','j','i','n','g'};

9、若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是______。

A)a,point,*&aB)&*a,&a,*point

C)*&point,*point,&aD)&a,&*point,point

10、以下程序的运行结果是______。

voidmain()

{

intm=5;

if(m++>5)

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

else;

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

}

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

11、下面程序的运行结果是______。

#include

voidmain()

{inty=10;

do{

y--;

}while(--y);

printf("%d\n",y--);

}

A)-1B)1C)8D)0

12、已有以下数组定义和func函数调用语句,则func函数原形的正确声明为_______。

voidmain()

{inta[3][4];

……

func(a);

……

}

A)func(intarray[][6]);B)func(intarray[3][]);

C)func(intarray[][4]);D)func(intarray[2][5]);

13、已知:

inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};

int(*ptr)[3]=a,*p=a[0];

则以下能够正确表示数组元素a[1][2]的表达式是______。

A)*(*(a+1)+2)B)*(*(p+5))C)(*ptr+1)+2D)*((ptr+1)[2])

14、下面程序的输出结果是______。

main()

{inti,j,x=0;

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

{x++;

for(j=0;j<-3;j++)

{

if(j%2)continue;

x++;

}

x++;

}

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

}

A)x=4B)x=8C)x=6D)x=12

15、下面程序的输出是____。

voidmain()

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

switch(x)

{

case1:

switch(y)

{case0:

a++;break;

case1:

b++;break;}

case2:

a++;b++;break;

}

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

}

A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2

16、已知:

inta[]={1,2,3,4},y,*p=a;则执行语句

y=(*++p)--;

之后,数组a各元素的值变为_____。

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

17、给出以下定义:

charx[]="abcdefg";

chary[]={'a','b','c','d','e','f','g'};

则正确的叙述为_____。

A)数组X和数组Y等价B)数组x和数组Y的长度相同

C)数组X的长度大于数组Y的长度D)数组X的长度小于数组Y的长度

18已知函数的调用形式:

fread(buffer,size,count,fp);其中buffer代表的是____

A)一个整型变量,代表要读入的数据项总数

B)一个文件指针,指向要读的文件

C)一个指针,指向要读入数据的存放地址

D)一个存储区,存放要读的数据项

19以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是____

main()

{int*p,*q,a,b;

p=&a;

printf("inputa:

");

scanf("%d",*p);

}

A)*p表示的是变量p的地址

B)*p表示的是变量a的值,不是变量a的地址

C)*p表示的是指针变量p的值

D)*p只能用来说明p是一个指针变量

20若有说明:

char*language[]={"FORTRAN","BASIC","PASCAL","JAVA","C"};

则表达式*language[1]>*language[3]比较的是____

A)字符F和字符PB)字符串BAS1C和字符串JAVA

C)字符B和字符JD)字符串FORTRAN和字符串PASCAL

二、填空题(每空2分,共30分)

1、若有定义:

inte=1,f=4,g=2;floatm=10.5n=4.0k;则执行赋值表达式

k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是_____。

2、下面程序的输出是_______。

main()

{intx=3,y=2,z=0;

if(x=y+z)printf("**");

elseprintf("##");

}

3、假设已有定义doubles,d;intk,n;。

有以下程序段:

s=1.0;

for(k=1;k<=n;k++)

s=s+1.0/(k*(k+1));

printf("%f\n",s);

填空完成下述程序,使之与上述程序的功能完全相同。

s=0.0;

①______;

k=0;

do{s=s+d;

②______;

d=1.0/(k*(k+1));

}while(③______);

printf("%f\n",s);

4、下面程序段的运行结果是______。

inti=1;s=3;

do{s+=i++;

if(s%7==0)continue;

else++i;

}while(s<15);

printf("%d",i);

5、设定义语句“staticinta[3][4]={{1},{2},{3}};”则a[1][1]值为①____,a[2][1]的值为②____。

6、下面的函数是一个求阶乘的递归调用函数。

facto(intn)

{if(n==1)①______________;

elsereturn(②_____________);

}

7、以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。

例如,输入字符串:

abc123edf456gh,执行程序后输出:

123456。

请填空。

#include

voidmain()

{chars[80],d[80];

inti,j;

gets(s);

for(i=j=0;s[i]!

=‘\0’;i++)

if()

{d[j]=s[i];

j++;}

d[j]=‘\0’;

puts(d);

}

8、下面函数用递归调用的方法,将str中存放的长度为n的字符串反转过来,例如原来是"ABCDE",反序为"EDCBA"。

voidinvent(char*str,intn)

{chart;

t=*str;

*str=*(str+n-1);

*(str+n-1)=t;

if(n>2)invent(____________,n-2);

}

9下面程序的功能是显示具有n个元素的数组s中的最大元素。

#defineN20

main()

{inti,a[N];

for(i=0;i

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

printf("%d\n",①______________);

}

intfmax(ints[],intn)

{intk,p;

for(p=0,k=p;p

if(s[p]>s[k])②_____________;

return(k);

}

10下面程序通过指向整型的指针将数组a[3][4]的内容按3行×4列的格式输出,请给printf()填入适当的参数,使之通过指针p将数组元素按要求输出。

#include

voidmain()

{inti,j;

inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*p=a;

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

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

printf("%4d",____________);

}

}

三、程序编写题(30分,见答题纸)

答题纸

一、选择题(40分)

题号

1

2

3

4

5

6

7

8

9

10

答案

题号

11

12

13

14

15

16

17

18

19

20

答案

二、填空题(30分)

1.

2.

3.①②③

4.

5.①②

6.①②

7.

8.

9.①②

10.

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

1、求这样一个三位数,该三位数等于其每位数字的阶乘之和,即:

abc=a!

+b!

+c!

编写函数intfac(intn),它的功能是求出n的阶乘,在主函数中调用该函数完成题目。

(15分)

2、编写函数voidfun(intx,int*pp,int*n)。

它的功能是:

求出整数x的偶数因子,并按照从小到大的顺序放在pp所指的整数数组aa[1000]中,这些因子的个数通过形参n返回。

在主函数中输入x,调用子函数fun,输出x的偶数因子和偶数因子个数。

(假如x为30,则有因子:

1,2,3,5,6,10,15,30,其中有4个数为偶数因子,它们是2,6,10,30)(15分)

输入范例:

pleaseenteranintegernumber:

输出范例:

Thefactorsareasfollowing:

Thenumberoffactorsis:

2010-2011学年第二学期期末

《C语言程序设计》(A卷)标准答案和评分标准

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

CBCBCCDCDCDCAAABCCBC

二、填空题(每空2分,共30分)

1.13.7

2.**

3.①d=1.0②k++③k<=n

4.7

5.①0②0

6.①return1②n*facto(n-1)

7.s[i]>=’0’&&s[i]<=’9’

8.str+1

9.①a[fmax(a,N)]②k=p

10.*(p+4*i+j)

四、编程序题(共30分)(格式举例)

1、

#include

voidmain()

{

inta[5],i,j,k;

intf(intm);

for(i=100;i<1000;i++)

{

for(j=0,k=1000;k>=10;j++)

{

a[j]=(i%k)/(k/10);

k/=10;

}

if(f(a[0])+f(a[1])+f(a[2])==i)

printf("Thenumberis:

%d",i);

}

}

intf(intm)

{

inti=0,t=1;

while(++i<=m)t*=i;

return(t);

}

或者

#include

intfac(int);

voidmain()

{

inti,j,k,n=0,x[50];

for(i=1;i<10;i++)

{for(j=0;j<10;j++)

for(k=1;k<10;k++)

{x[n]=i*100+j*10+k;

if(fac(i)+fac(j)+fac(k)==x[n])n++;

elsex[n]=0;}

}

if(n>0)for(i=0;i

%d\n",x[i]);

elseprintf("Thereisnosuchanumber!

\n");

}

intfac(intn)

{if(n<1)return1;

elsereturnn*fac(n-1);

}

2、

#include

voidfun(intx,intpp[],int*n)

{

inti,j=0;

for(i=2;i<=x;i=i+2)

{if(x%i==0)pp[j++]=i;

*n=j;

}

}

voidmain()

{

intx,aa[1000],n,i;

printf("\npleaseenteranintegernumber:

\n:

");

scanf("%d",&x);

fun(x,aa,&n);

for(i=0;i

printf("Thefactoris:

%d\n",aa[i]);

printf("\n");

printf("Thenumberoffactoris:

%d",n);

}

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

当前位置:首页 > 党团工作

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

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