中南大学C语言程序设计历年试题.docx

上传人:b****4 文档编号:12268753 上传时间:2023-04-17 格式:DOCX 页数:44 大小:48.07KB
下载 相关 举报
中南大学C语言程序设计历年试题.docx_第1页
第1页 / 共44页
中南大学C语言程序设计历年试题.docx_第2页
第2页 / 共44页
中南大学C语言程序设计历年试题.docx_第3页
第3页 / 共44页
中南大学C语言程序设计历年试题.docx_第4页
第4页 / 共44页
中南大学C语言程序设计历年试题.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

中南大学C语言程序设计历年试题.docx

《中南大学C语言程序设计历年试题.docx》由会员分享,可在线阅读,更多相关《中南大学C语言程序设计历年试题.docx(44页珍藏版)》请在冰豆网上搜索。

中南大学C语言程序设计历年试题.docx

中南大学C语言程序设计历年试题

中南大学2010-2011学年C语言

时间110分钟

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

1、若intx=2,y=7,z=6;则表达式:

x==(y=z);执行完后,

x的值是;y的值是。

2、若inta,b=9,d=8;表达式:

a=(――b==d++)?

d++:

――b;则a的结果是;

表达式执行完后d的值为。

3、已有宏定义#defineP(x)x*x-2

设intx=1,y=3;且a=P(2+x);b=P(y);

则a的值为;b的值为。

4、若intx=4,y=6,z=0;有循环while(x=y){z++;y--;}

则循环语句执行完后,z值为。

5、若有定义:

charstr1[]={‘C’,‘h’,‘i’,‘n’,‘a’};charstr2[]=“China”;

则数组str1的长度为;数组str2的长度为。

6、已知有定义:

inta=1,b=2,c=3,d=4,m=1,n=1,k;

则语句:

k=(m=a>b)&&(n=c>d);运行完毕后,

m的值为;n的值为;k的值为。

7、已有定义:

char*p[]={“Chinese”,“France”,“America”,“Russia”};则语句printf(“%s”,p[1]);printf(“%c”,p[1][2]);printf(“%c”,*(p[3]+1));

的输出结果分别为:

、、。

二、判断题(每小题1分,共10分)

1、标准C中,并不区分英文字符的大小写。

2、标准C中,变量可以先使用再定义。

3、若定义函数时,其返回类型为void,则调用函数时,不能将其作为一个值赋给某个变量。

4、表达式“3.6%2”符合C语言语法。

5、全局变量的作用域是整个源程序文件。

6、数组名可以作为参数进行传递。

7、表达式“ELSE”是合法的C语言标识符。

8、一个函数中只允许有一条return语句。

9、C语言中用到的任何一个变量都要规定其类型。

10、使用continue语句,可以使得C程序的执行直接从循环中跳出。

三、下列各程序中每个程序各有2个错误,指出错误语句,写出对应正确语句(每小题4分,共16分)

1、输入一个数,计算其平方根

main()

{

floata,b;

printf(“pleaseinputanumber\n”);scanf(“%f”,a);

if(a>=0)

{

b=sqrt(a);

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

}

elseprintf(“dataiserror!

\n”);

}

2、已知矩阵a=

,求该矩阵对角线元素之和。

main()

{

intisum;

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

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

sum=sum+a[i][i];

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

}

3、用递归语句编函数计算6!

longf(intm)

{longa;

if(m<0)printf(“dataerror!

”);

elsea=f(m-1)*m;

}

main()

{intn=6;

printf(“%d!

=%ld”,n,f(n));

}

4、若有一维数组x[6]={1,4,5,7,0,3}编程求出其中最大的元素

main()

{

intx[6]={1,4,5,7,0,3};

inti,max=x[1];

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

if(x[i]

printf(“最大的元素为%d\n”,max);

}

四、程序填空题:

下列程序中缺少若干条语句,在对应的下划线上填上合适的语句,每一个下划线只填一条语句(每小题4分,共16分)

1、若一自然数全部正整数因子(该因子不包括其本身)之和仍为该自然数,则该自然数称为完全数。

如:

6=1+2+3,则6是完全数。

求[2,1000]以内的所有完全数。

main()

{

intx,n,m;

for(n=2;n<=1000;n++)

{

for(m=1;m

{if(n%m==0)x=x+m;}

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

}

}

2、将某同学的五门课程成绩放在一数组中,求其总分,要求通过函数调用实现。

floatsum(floatarr[]){

intx;

for(x=0;x<5;x++)

he=he+arr[x];

return(he);

}

main()

{

floatscore[5],summay;

inta;

printf(“输入五门课程成绩\n”);for()

scanf(“%f”,&score[a]);summay=sum(score);

printf(“总分为:

%f\n”,summay);

}

3、用选择法给整数排序的相关函数

sort(intx[],n)

{

inti,j,k,t;

for(i=0;i

{

_________________

for(j=i+1;j

if(x[j]>x[k])____________

if(k!

=i)

{

t=x[i];x[i]=x[k];x[k]=t;

}

}

}

4、输入一个字符,若是小写字母就输出对应的大写字母,若是大写字母就输出对应的小写字母,如果其它字符,则输出错误提示。

main()

{

charx;

printf("Input:

");

if(x>='A'&&x<='Z')

printf("\n%c",x+32);

elseif(_______________________)

printf("\n%c",x-32);

else

printf("InputError");

}

五、阅读下列程序,写出运行结果(每小题6分,共12分)

1、

#include

inti=0;main()

{

intk=1;i++;

k++;printf(“goodi=%d,k=%d\n”,i,k);sub();

sub();

}

staticinty=0;

sub()

{

intk=0;staticintx=1;

y++;

k++;

x++;

printf(“badi=%d,k=%d,x=%d,y=%d\n”,i,k,x,y);

}

2、

#include

p(intx,intn)

{

if(n==1)

return(x);

else

{

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

return(x*(1-p(x,n-1)));

}

}

main()

{

inty,x=2,n=4;

y=p(x,n);

printf(“%d”,y);

}

六、编程题(第1题6分,第2题10分,共16分)

a)编程求

b)编写程序求10个实数的最大值、最小值及平均值,要求:

1最大值、最小值、平均值的求取分别通过三个函数实现,函数以数组名或指针为参数;

2主函数中通过键盘输入10个实数。

3求出结果后,要求将其在主函数中输出。

 

2010--2011学年学期《C语言程序设计基础》试题参考答案

1填空题(每空2分,共30分)

1、26

2、910

3、37

4、6

5、56

6、010

7、FranceAu

2判断题(每小题1分,共10分)

×

×

×

×

×

×

3改错误,指出错误语句,写出对应正确语句(每小题4分,共16分)

1、在main()前加#include

将语句scanf(“%f”,a);改为scanf(“%f”,&a);

2、定义变量sum应给其赋初值sum=0;

for(i=1;i<=3;i++)改为for(i=0;i<3;i++)

3、在子函数f中:

加语句if(m==0)a=1;和语句return(a);

4、max=x[1];改为max=x[0];或者i=1;i<6;i++改为i=0;i<6;i++

将表达式x[i]max

4程序填空题:

(每小题4分,共16分)

1、x=0;if(x==n)

2、floathe=arr[0];a=0;a<5;a++

3、k=i;k=j;

4、scanf("%c",&x);x>='a'&&x<='z'

5阅读下列程序,写出运行结果(每小题6分,共12分)

1、goodi=1,k=2

badi=1,k=1,x=2,y=1

badi=1,k=1,x=3,y=2

2、321-10

6编程题(16分)

(1)

main()

{floatsum=0;intk;

for(k=1;k<=50;k++)sum+=k*k;

for(k=1;k<=100;k++)sum+=k;

for(k=1;k<=10;k++)sum+=1.0/k;

printf(“sumis%f”,sum);}

(2)

floatmin(floata[])

{inti;floatmin=a[0];

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

if(a[i]

return(min);}

floatmax(floata[])

{inti;floatmax=a[0];

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

if(a[i]>max)max=a[i];

return(max);}

floataverage(floata[])

{inti;floataverage=a[0];

for(i=0;i<10;i++)average+=a[i];

return(average/10);}

main()

{floatb[10];intj;

printf("pleaseinputfivenumber\n");

for(j=0;j<10;j++)scanf("%f",&b[j]);

printf("maxis%f,minis%f,averageis%f\n",max(b),min(b),average(b));}

中南大学2010年C语言

时间110分钟

一、选择题(每小题1.5分,共计30分)

1.C语言中变量定义与使用的关系是。

A)必须先定义,后使用 B)可以先使用,后定义

C)可以边使用,边定义   D)不须定义,随时使用

2.已知:

inta,b;用语句scanf(“%d%d”,&a,&b);输入a、b的值时,不能作为输入数据分隔符的是。

A)逗号B)空格C)回车D)Tab键

3.不是C语言中合法的标识符。

  A)sum B)ClassC)li_lingD)3D64

4.在C语言中,下列运算符的操作数必须是int型的运算是。

A)%B)/C)!

=D)++

5.下面不正确的赋初值语句是。

A)inta=2.0;     B)charc=“a”;

C)inta[]={0}; D)chars[]=“boy”;

6.在函数调用过程中,形式参数与实际参数的数据传递关系是。

A)实参传递给形参       B)形参传递给实参

C)实参与形参双向传递       D)由用户指定传递方式

7.在C语言中,字符串的结束标志为。

A)‘\n’B)‘\t’C)‘\0’C)‘\b’

8.在循环结构中,提前结束循环的语句是。

A)breakB)continueC)switchD)return

9.下列运算符中优先级最高的是    。

A)

=C)&&D)+

10.以下叙述正确的是    。

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

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

C)C语言的输入输出是用函数实现的。

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

11.设有程序段

intk=0;

while

(1)

{k=k+1;

if(k=10)break;}

则下面描述中正确的是    。

A)while循环执行10次B)循环是无限循环

C)循环体语句一次也不执行D)循环体语句执行一次

12.以下说法不正确的是    。

A)定义函数时,函数中可有多个return语句。

B)return后边的值可以为表达式。

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

D)对用户自定义函数,其位置在调用它的函数后面,应该声明。

13.设有程序段:

intx=12,y;

if(x<1)y=x;

elseif(1<=x&&x<10)y=2*x-1;

else

y=3*x-1;

则程序执行后,y的值为    。

A)12B)23C)35D)程序无法执行,有编译错误

14.以下不正确的叙述是    。

A)在C程序中,逗号运算符的优先级最低

B)在C程序中,APH和aph是两个不同的变量

C)若a和b类型相同,在执行了赋值表达式a=b后b中的值将放人a中,而b中的值不变。

D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值。

15.下述对C语言字符数组的描述中错误的是    。

A)字符数组可以存放字符串

B)字符数组的字符串可以整体输入、输出

C)可以在赋值语句中通过赋值运算符"="对字符数组整体赋值

D)不可以用关系运算符对字符数组中的字符串进行比较

16.设有定义:

   intk=0;chars[30];

若准备将句子“youareastudent.”赋给字符数组s,错误的输入语句为:

A)scanf(“%s”,s);

B)for(k=0;k<18;k++)s[k]=getchar();

C)while((c=getchar())!

=‘\n’)s[k++]=c;

D)gets(s);

17.设有定义:

charc[6]=“china”;

下面不能正确输出数组c的是    。

 A)puts(c);B)printf(“%s”,c);

C)for(i=0;i<6;i++)printf(“%c”,c[i]);D)printf(“%s”,c[6]);

18.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为    。

A)intB)floatC)doubleD)不确定

19.已知各变量的类型说明如下:

inti=8,k,a,b;

doublex=1.42,y=5.2;

则以下符合C语言语法的表达式是    。

A)a+=a-=(b=4)*(a=3)B)a=a*3=2

C)x%(-3)D)y=f1oat(i)

20.已知函数abc的定义为:

voidabc()

{…….}

则函数中void的含义是:

A)执行函数abc后,函数没有返回值。

 B)执行函数abc后,函数不返回

C)执行函数abc后,可以返回任意类型D) 以上三个答案全是错误的

二、计算表达式(每小题1.5分,共计15分):

设inta=15,b=-10;floatx=102.4,y=30.5;(注意:

各式结果不影响后续的题目!

1.(++a)-(b--)()

2.a+=a*=3()

3.a

(2*a+b):

(a-2*b)()

4.(a+b)/2+(int)(x+y)%(-b)()

5.(float)a/2+(float)(b+12)()

6.(a>b)&&(x>12&&y<=35)()

7.(int)x%(int)y&&(!

a)||(!

b)()

8.计算(a>5)||(++b)后b的值为:

()

9.printf(“%d”,’\112’);结果为()

10.已知’A’的ASCII码为65,则:

printf(“%c”,’\x44’);结果为()

三、写出下列程序的的执行结果(每小题5分,共计20分,注意输出格式)

1.#include

intmain()

{inta=23,b=12;floatx=45.22212,y=43.221;

staticcharc='B',c2[]="IAMSTUDENT";

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

printf("%10.2f,%-10.2f\n",x,y);

printf("%o,%x,%u\n",b,b,b);

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

printf("%s,%5.3s\n",c2,c2);

return0;

}

2.#include

intmain()

{inta[6][6],i,j;

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

for(j=1;j<6;j++)

a[i][j]=(i/j)*(j/i);

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

{for(j=1;j<6;j++)

printf("%3d",a[i][j]);

printf("\n");}

return0;

}

3.#include

intmain()

{intm,n,k=0;

for(n=100,m=1;m<11;n++)

{if(n%2==0)

continue;

printf("%6d",n);

k++;m++;

if(k%2==0)printf("\n");

}

return0;

}

 

4.#include

voidmain()

{inti,j,k;

charspace='';/*space变量的值为一个空格*/

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

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

printf("%c",space);

for(k=0;k<5;k++)

printf("%c",'*');

printf("\n");

}

}

四、程序填空(每空1.5分,共计15分)

1.下面程序的功能是:

求100~200之间的全部素数。

   #include

#include

intmain()

{  intm,k,i,n=0;

  for(m=101;m<200;m+=2)

  {  if(n%10==0)  printf("\n");

     k=sqrt(m);

    for(i=  ;i<=k;i++)   

 if(m%i==0)      ;

     if(i== k+1  )

    {  printf("%5d",);n++;}

  }

return0;

}

2.下面程序的功能是:

最多从键盘上输入80个字符,遇到’\n’后退出,遇到空格则换成字符’*’,对其它字符依次原样送入字符数组str中。

#include

intmain()

{inti;

charc,str[80];

for(i=0;i<80;)

{if((c=getchar())==‘\n’)

break;

if(c==‘’)

;

else

str[i]=c;

}

str[i]=‘\0’;

puts();

return0;

}

 

3.下面程序的功能是:

将一个数组中的值按逆序存放。

#defineN7

#include

intmain()

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

当前位置:首页 > IT计算机 > 计算机软件及应用

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

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