7C语言统考Word文档下载推荐.docx
- 文档编号:16558663
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:14
- 大小:24.31KB
7C语言统考Word文档下载推荐.docx
《7C语言统考Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《7C语言统考Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
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<
conio.h>
{ints=1,n=235;
do{s*=n%10;
n/=10;
}while(n);
printf(“%d\n”,s);
getch();
}
2.下列程序的运行结果是1,10。
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);
3.以下程序运行的结果是13610。
#include<
stdio.h>
{inti,k;
for(i=1;
i<
5;
i++)
{k=sub(&
i);
printf("
%4d"
k);
\n"
);
intsub(int*s)
{staticintt=0;
t=*s+t;
returnt;
第4页
第5页共9页
4.下面程序段运行的结果是__***#________________。
main()
{inti,j=3;
for(i=j;
=2*j;
switch(i/j)
{case0:
case1:
printf("
*"
break;
case2:
#"
}
getch();
5.下面程序段运行的结果是______987____________。
{char*p="
987"
;
inti,s=0;
while(*p)
{s=s*10+*p-'
0'
p++;
%d\n"
s);
四、完善程序题(每空1分,共30分)
1.下列程序的功能是按5个一行输出100至1000之间各位数字之和是5的数,并统计这些数的个数。
请填空。
main()
{ints,i,k,count=0;
for(i=100;
=1000;
{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"
\n%5d"
count);
2.以下程序在a数组中查找与x值相同的元素的所在位置。
{inta[11],x,i;
Enter10Integers;
=10;
scanf("
%d"
a+i);
Enterx;
"
&
a[0]=(3)x;
i=10;
while(x!
=a[i])(4)i--;
if((5)i>
0)
%5d'
spositionis:
%4d\n"
x,i);
else
%dNotbeenfound!
x);
3.以下程序的功能是用二分法求方程2x3-4x2+3x-6=0的根,并要求绝对值误差不超过0.001。
math.h>
floatf(floatx)
{floaty;
y=(6)2*x*x*x-4*x*x+3*x-6;
returny;
{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;
Thisfangchengjieis%6.3f\n"
r);
第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
[源程序]
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]='
intHymin(charx[],chary[])
{intcount=0,i;
for(i=0;
i<
16;
i++)
if((11)x[i]!
=y[i])
count++;
returncount;
{intm,n;
chara[17],b[17];
%d%d"
m,&
n);
(12)DecToBin(a,m);
(13)DecToBin(b,n);
distanceof%dand%d=%d\n"
m,n,(14)Hymin(a,b));
第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的首地址),请填空。
string.h>
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;
{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
main()
{chars[]="
@@@@@Iwwillllsuccessful"
intn;
n=(27)compress(s);
puts(s);
\n%d\n"
n);
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
{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!
{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);
{
printf(“Hailstonesgeneratedby“);
scanf(“%d”,&
hailstones(n);
第10页共10页
ACACDACBBCDADCA
(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<
y&
y<
z(14)99(15)auto或自动
(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或max<
x或各加上等于(18)x<
min或min>
x或各加上等于
(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++语言程序设计》参考答案
五、程序设计题(附加题,必须做!
每小题10分,共20分)
1.源程序清单
2.源程序清单
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<
z转换为C语言表达式为(13)x<
z,若有定义:
“doublea[100];
”,则a数组元素的下标上限是(14)99。
8.在C语言源程序中,函数内部说明局部变量时若缺省了存储类型,则该变量的存储类型为(15)auto;
定义一个函数时,若缺省该函数返回值的类型,则默认返回值为(16)int型。
9.设有说明语句:
char*s="
\ta\017bc"
;
则指针变量s指向的字符串所占的字节数是(17)6。
若有如下程序段:
\ta\018bc"
for(;
*s!
=’\0’;
s++)printf("
则for循环体语句的执行次数是(18)6次。
10.若一结构的成员项是指向本结构类型的结构指针,则称该结构为(19)自应用结构。
定义这种结构类型的一般形式如下:
structnode{intdata;
(20)struct
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 统考