7C语言统考.docx

上传人:b****7 文档编号:8623052 上传时间:2023-02-01 格式:DOCX 页数:14 大小:24.33KB
下载 相关 举报
7C语言统考.docx_第1页
第1页 / 共14页
7C语言统考.docx_第2页
第2页 / 共14页
7C语言统考.docx_第3页
第3页 / 共14页
7C语言统考.docx_第4页
第4页 / 共14页
7C语言统考.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

7C语言统考.docx

《7C语言统考.docx》由会员分享,可在线阅读,更多相关《7C语言统考.docx(14页珍藏版)》请在冰豆网上搜索。

7C语言统考.docx

7C语言统考

第1页共9页

扬州大学试题纸

(2006-2007学年第2学期)

全校非计算机专业统考课程C及C++语言程序设计(闭)卷

注意:

1.请用答题纸答题,将答案填于相应的题号内。

否则不给分。

2.请认真填写并仔细核对答题纸上的学院、系科、班级、学号及姓名等。

3.请将试卷和答题纸分开上交。

一、单选题(每小题2分,共30分)

1.用于结构化程序设计的3种基本结构是(a)。

A.顺序结构、选择结构、循环结构B.if,switch,break

C.for,while,do-whileD.if,for,continue

2.下列各组中不全是合法变量名的是(c)。

A.day,lotus_1_2_3,x1B.Abc,_above,basic

C.M.John,year,sumD.YEAR,MONTH,DAY

3.C语言中,下列运算符中运算对象必须是整型的是(a)。

A.%=B./C.=D.<=

4.能在C语言中定义三个整型变量a、b、c,并能给它们均赋值5的正确表示是

(c)。

A.inta=b=c=5;B.inta,b,c=5;

C.inta=5,b=5,c=5;D.a=b=c=5;

5.设有数学命题“当整数a的值为偶数时,表达式的值为真,否则为假”,则下列C语言表达式中,不能满足该数学命题要求的是(d)。

A.a%2==0B.!

(a%2==1)C.!

(a%2)D.a%2

6.若有说明语句:

charc=’\72’;

则变量c(a)。

A.包含1个字符B.包含2个字符

C.包含3个字符D.说明不合法

7.在C语言中,break语句(c)。

A.能用在C源程序中的任何位置B.只能用在循环体内

C.只能用在循环体内或switch语句中D.可用作函数内的任一语句

8.设有程序段:

intx=-1;

do{

x=x*x;

}

while(!

x);

则下列叙述中正确的是(b)。

A.循环是无限循环B.循环体语句执行1次

C.循环体语句执行2次D.有语法错误

裁剪框

学院___________系____________班级_____________学号____________姓名_____________

------------------------------------------------装---------------------------------------订-------------------------------------------线-----------------------------------------------

9.在C语言中,数组名可作为实在参数传递给函数的形式参数,此时,作为实在参数的数组名被处理为(b)。

A.该数组的长度B.该数组的首地址

C.该数组中元素的值D.该数组的元素个数

10.以下叙述中,正确的是(c)。

A.C语言源程序总是从第一个函数开始执行

B.在C语言程序中,调用函数必须在main()函数中定义

C.C语言源程序总是从main()函数开始执行

D.C语言程序中的main()函数必须放在程序的开始地方

11.若已定义的函数有返回值,则以下关于该函数调用的叙述中,错误的是(d)。

A.函数调用可以作为独立的语句存在

B.函数调用可以作为一个函数的实参

C.函数调用可以出现在表达式中

D.函数调用可以作为一个函数的形参

12.设有下列程序段:

structp{charname[9];intage;};

structpclass[10]={“John”,17,

“Paul”,19,

“Mary”,18,

“Adam”,16

};

则下列选项中,能打印出字母“P”的语句是(a)。

A.printf(“%c\n”,class[1].name[0])

B.printf(“%c\n”,class[2].name[0]);

C.printf(“%c\n”,class[1].name[1]);

D.printf(“%c\n”,class[2].name);

13.若有以下调用语句,则错误的fun函数的首部是(d)。

main()

{……

inta[50],n;

……

fun(n,&a[9]);

……

}

A.voidfun(intm,intx[])B.voidfun(ints,inth[50])

C.voidfun(intp,int*s)D.voidfun(intm,inta)

14.设有说明语句

char*s=“abcd”;

s+=2;

则*s的内容是(c)。

A.aB.bC.cD.cd

15.下列对typedef的叙述中,错误的是(15)a。

A.用typedef可以增加新类型

B.用typedef可以定义各种类型名,但不能用来定义变量

C.用typedef只是将已存在的类型用一个新的标识符来代表

D.使用typedef有利于程序的通用和移植

第2页共9页

裁剪框

第3页共9页

裁剪框

第3页共8页

第4页共9页

三、阅读程序写出结果(每小题4分,共20分)

1.下列程序的运行结果是30。

#include

main()

{ints=1,n=235;

do{s*=n%10;

n/=10;

}while(n);

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

getch();

}

2.下列程序的运行结果是1,10。

#include

voidf(intx,inty)

{intt;

t=x;x=y;y=t;

}

main()

{inta=1,b=10;

f(a,b);

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

getch();

}

3.以下程序运行的结果是13610。

#include

#include

main()

{inti,k;

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

{k=sub(&i);

printf("%4d",k);

}

printf("\n");

getch();

}

intsub(int*s)

{staticintt=0;

t=*s+t;

returnt;

}

裁剪框

第4页

第5页共9页

4.下面程序段运行的结果是__***#________________。

#include

#include

main()

{inti,j=3;

for(i=j;i<=2*j;i++)

switch(i/j)

{case0:

case1:

printf("*");break;

case2:

printf("#");

}

getch();

}

5.下面程序段运行的结果是______987____________。

#include

#include

main()

{char*p="987";

inti,s=0;

while(*p)

{s=s*10+*p-'0';

p++;

}

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

getch();

}

四、完善程序题(每空1分,共30分)

1.下列程序的功能是按5个一行输出100至1000之间各位数字之和是5的数,并统计这些数的个数。

请填空。

#include

#include

main()

{ints,i,k,count=0;

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

{s=0;k=i;

while(k)

{s=s+k%10;

k=

(1)k/10;

}

if(

(2)k==0)

{count++;

if(count%5==0)printf("%5d\n",i);

elseprintf("%5d",i);

}

}

printf("\n%5d",count);

getch();

}

裁剪框

2.以下程序在a数组中查找与x值相同的元素的所在位置。

请填空。

#include

#include

main()

{inta[11],x,i;

printf("Enter10Integers;\n");

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

scanf("%d",a+i);

printf("Enterx;");

scanf("%d",&x);

a[0]=(3)x;

i=10;

while(x!

=a[i])(4)i--;

if((5)i>0)

printf("%5d'spositionis:

%4d\n",x,i);

else

printf("%dNotbeenfound!

\n",x);

getch();

}

3.以下程序的功能是用二分法求方程2x3-4x2+3x-6=0的根,并要求绝对值误差不超过0.001。

请填空。

#include

#include

#include

floatf(floatx)

{floaty;

y=(6)2*x*x*x-4*x*x+3*x-6;

returny;

}

main()

{floatm=-100,n=90,r;

r=(m+n)/2;

while((7)fabs(f(r))>0.001)

{if(f(r)*f(n)<0)

m=r;

elsen=r;

(8)r=(m+n)/2;

}

printf("Thisfangchengjieis%6.3f\n",r);

getch();

}

第6页共9页

裁剪框

4.两个等长的二进制数之间的海明距离是指对应位数字不同的位数。

如100101和001110之间的海明距离为4。

设计算机系统使用16个二进制位表示一个十进制整数,试按下列要求编写程序:

(1)编写函数voidDecToBin(charstr[],intn),其功能是将非负整数n转换成16位二进制数字字符串,按由低位向高位存入数组str中;

(2)编写函数intHymin(char*x,char*y),其功能是统计x、y指向的两个16位二进制数字字符串对应位数字不同的位数,并返回统计结果;

(3)在主函数中输入两个十进制正整数39和15,分别调用函数DecToBin将它们转换为二进制数字字符串,再调用函数Hymin计算它们之间的海明距离。

将这两个十进制数转换后的二进制字符串及其海明距离输出。

测试数据及结果:

distanceof39and15=2

[源程序]

#include

#include

voidDecToBin(charstr[],intn)

{inti=0,j;

while(n!

=0)

{str[i++]=(9)n%2+’0’;

(10)n/2;

}

for(j=i;j<16;j++)str[j]='0';

}

intHymin(charx[],chary[])

{intcount=0,i;

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

if((11)x[i]!

=y[i])

count++;

returncount;

}

main()

{intm,n;

chara[17],b[17];

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

(12)DecToBin(a,m);

(13)DecToBin(b,n);

printf("distanceof%dand%d=%d\n",m,n,(14)Hymin(a,b));

getch();

}

第7页共9页

裁剪框

第8页共9页

scanf(“%d%d”,&p->data,&q->data);/*输入数据为:

59<回车>*/

(22)(*p).link=q;/*结点q连接到结点p之后*/

(23)(*q).link=NULL;

裁剪框

8.函数char*conj(char*p1,char*p2)的功能是实现将两个字符串p1和p2连接起来(要求该函数返回字符串p1的首地址),请填空。

#include

char*conj(char*p1,char*p2)

{char*p=p1;

while(*p1)(24)p1--;

while(*p2){*p1=(25)*p2______;p1++;p2++;}

*p1=’\0’;

return(26)p;

}

main()

{chars1[30],s2[10],*p;

gets(s1);gets(s2);

p=conj(s1,s2);printf(“%s\n”,p);

}

9.程序功能:

将一字符串做压缩处理。

编程要求:

(1)编写一个函数intcompress(chars[]),将s中连续出现的多个相同字符压缩为一个字符,统计被删除的字符个数,返回被删除的字符个数。

(2)编写主函数main,从键盘读入一行字符数据放入一个字符型数组中,调用compress函数对该字符数组中字符做压缩处理,输出压缩后的字符串。

(3)测试数据及结果如下:

测试数据:

@@@@@Iwwillllsuccessful

测试结果:

@Iwilsuccessful

11

#include

#include

#include

main()

{chars[]="@@@@@Iwwillllsuccessful";

intn;

n=(27)compress(s);

puts(s);

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

getch();

}

intcompress(chars[])

{char*p=s,*q;

intn=0;

while(*p)

{q=p+1;

while((28)*q=*p)

{q++;

n++;

}

strcpy((29)p+1,q);

p++;

}

(30)returnn;

}

第9页共9页

五、程序设计题(附加题,必须做!

每小题10分,共20分)

1.求满足下列条件的三位数n,它除以11(整数相除)所得到的商等于n的各位数字的平方和,且其中至少有二位数字相同的数。

如:

131,它除以11的商为11,各位数字的平方和为11,又如550,也是满足条件的三位数。

2.设n0是一个给定的正整数。

对于i=0,1,2,…,定义:

若ni是偶数,则ni+1=ni/2;若ni是奇数,则ni+1=3ni+1;若ni是1,则序列结束。

用这种方法产生的数称为冰雹数(hailstone)。

请编写一个函数voidhailstones(intn),其功能是显示由n产生的序列,并按如下形式输出。

Hailstonesgeneratedby77:

77232116582988

442211341752

26134020105

168421

Numberofhailstonesgenerated:

23

main()

{intn,a,b,c;

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

{a=n/100;

b=n/10%10;

c=n%10;

if(n/11==a*a+b*b+c*c&&((a==b)+(a==c)+(b==c))>=1)

printf(“%5d”,n);

}

}

 

#include

voidhailstones(intn)

{

inti=0;

while(n!

=1)

{if(i%6==0)printf(“\n”);

printf(“%5d”,n);

if(n%2==0)n/=2;

elsen=3*n+1;

i++;

}

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

printf(“Numberofhailstonesgenerated:

%5d\n”,i+1);

}

main()

{

intn;

printf(“Hailstonesgeneratedby“);

scanf(“%d”,&n);

hailstones(n);

getch();

}

第10页共10页

ACACDACBBCDADCA

一、单选题(每小题2分,共30分)

(1)~(5)(6)~(10)(11)~(15)

二、填空题(每空1分,共20分)

(1)main

(2)/*…*/(3)#include或include

(4)连接2个字符串(5)fabs(x-y)/sqrt(a*b+c*d)(6)math.h

(7)值传递或单向值传递(8)首地址(9)0

(10)5(11)无返回值(12)静态局部或静态内部

(13)x

(16)int或整(17)6(18)6

(19)自引用结构(20)structnode*

三、阅读程序写出结果(每小题4分,共20分)

1.302.a=1,b=10

3.136104.***#

5.987

四、完善程序题(每空1分,共30分)

(1)k/10(或k=k/10)

(2)s==5(3)x

(4)i--(5)i或i!

=0或i>0(6)2*x*x*x-4*x*x+3*x-6

(7)fabs(f(r))>0.001(8)r=(m+n)/2(9)n%2+’0’

(10)n/2(11)x[i]!

=y[i]或其等价表示(12)DecToBin(a,m)

(13)DecToBin(b,n)(14)Hymin(a,b)(15)&x

(16)x>=0(17)x>max或maxx或各加上等于

(19)charname[10](20)charsex(21)structdatebirthdate

(22)p->link=q或(*p).link=q(23)q->link或(*q).link(24)p1++

(25)*p2(或*p1=*p2)(26)p(27)compress(s)

(28)*q==*p(29)p+1,q(或strcpy(p+1,q))(30)returnn或return(n)

《C及C++语言程序设计》参考答案

《C及C++语言程序设计》参考答案

五、程序设计题(附加题,必须做!

每小题10分,共20分)

1.源程序清单

main()

{intn,a,b,c;

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

{a=n/100;

b=n/10%10;

c=n%10;

if(n/11==a*a+b*b+c*c&&((a==b)+(a==c)+(b==c))>=1)

printf(“%5d”,n);

}

}

2.源程序清单

#include

voidhailstones(intn)

{

inti=0;

while(n!

=1)

{if(i%6==0)printf(“\n”);

printf(“%5d”,n);

if(n%2==0)n/=2;

elsen=3*n+1;

i++;

}

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

printf(“Numberofhailstonesgenerated:

%5d\n”,i+1);

}

main()

{

intn;

printf(“Hailstonesgeneratedby“);

scanf(“%d”,&n);

hailstones(n);

getch();

}

4.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是_单向值传递_____;数组名作为实参时,传递给对应形参的是数组的__首地址_________。

5.若有定义:

“inta[3][4]={{1},{2,3},{4,5,6}};”,则执行该说明语句后,a[0][1]=0,a[2][1]=5。

6.在C程序中,若有函数定义如下:

voidf()

{staticinti;

}

其中,void表明函数f(11)无返回值;而i是一个(12)静态局部整型变量。

7.关系表达式x

“doublea[100];”,则a数组元素的下标上限是(14)99。

8.在C语言源程序中,函数内部说明局部变量时若缺省了存储类型,则该变量的存储类型为(15)auto;定义一个函数时,若缺省该函数返回值的类型,则默认返回值为(16)int型。

9.设有说明语句:

char*s="\ta\017bc";

则指针变量s指向的字符串所占的字节数是(17)6。

若有如下程序段:

char*s="\ta\018bc";

for(;*s!

=’\0’;s++)printf("*");

则for循环体语句的执行次数是(18)6次。

10.若一结构的成员项是指向本结构类型的结构指针,则称该结构为(19)自应用结构。

定义这种结构类型的一般形式如下:

structnode{intdata;

(20)struct

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

当前位置:首页 > PPT模板 > 国外设计风格

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

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