版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年安徽省淮北市全国计算机等级考试C语言程序设计测试卷一(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.有以下程序:
#include<stdio.h>
voidfun(char*t,char*s)
{while(*t!=0)t++;
while((*t++=*s++)!=0);
}
main()
{charss[10]="acc",aa[10]="bbxxyy";
fun(ss,aa);
printf("%s,%s\n",ss,aa);
}
程序运行结果是A.A.accxyy,bbxxyy
B.acc,bbxxyy
C.accxxyy,bbxxyy
D.accbbxxyy,bbxxyy
2.有下列程序:程序执行后的输出结果是()。A.abcdefghijklmnopq
B.afgebcdhnopqmijklhnopqmijkl
C.efgabcdmnopqhijkl
D.mijklhnopqebcdafg
3.下列方法中,属于白盒法设计测试用例的方法的是()。
A.错误推测B.因果图C.基本路径测试D.边界值分析
4.在学生管理的关系数据库中,存取一个学生信息的数据单位是()。
A.文件B.数据库C.字段D.记录
5.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},b[6];fp=fopen(“d.dat”,“w+b”);fwrite(a,sizeof(int),6,fp);for(i=0;i<6;i++)fwrite(&a[2],sizeof(int),1,fp);rewind(fp);fseek(fp,sizeof(int)*2,SEEK_CUR);fread(b,sizeof(int),6,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,b[i]);}程序运行后的输出结果是()。
A.3,4,5,6,3,3,B.1,2,3,4,5,6,C.3,4,5,6,1,2,D.3,4,5,6,1,1,
6.
7.下列选项中与“if(a==1)a=b;elsea++;”语句功能不同的switch语句是()。
A.switch(a==1){ case0:a=b;break; case1:a++;}
B.switch(a){ case1:a=b;break; default:a++;}
C.switch(a){ default:a++;break; case1:a=b;}
D.switch(a==1){ case1:a=b;break; case0:a++;}
8.定义结构体数组:structstu{intnum;charnameE20];}X[5]={1,"LI",2,"ZHAO",3,"WANG",4,"ZHANG",5,"LIU");for(i=1;i<5;i++)printf("%d%c",x[i].num,x[i].name[2]);以上程序段的输出结果为()。A.2A3N4A5UB.112A3H4IC.1A2N3A4UD.2H3A4H5I
9.有以下程序:#include<string.h>inta=4;intf(intn){intt=0;staticinta=5;if(n%2){inta=6;t++=a++;}else{inta=7;t+=a++;}returnt+a++;}main(){ints=a,i=0;for(;i<2;i++)s+=f(i);printf("%d\n",s);}程序运行后的输出结果是()。
A.24B.28C.32D.36
10.若需要利用形参直接访问实参,则应把形参变量说明为____参数。
A.指针B.引用C.值D.变量
11.有以下程序:程序运行后的输出结果是()。A.1.000000B.0.000000C.0.250000D.0.500000
12.
13.用数组r存储静态链表,结点的next域指向后继,工作指针j指向链中结点,使j沿链移动的操作为()。
A.j=r[j].nextB.j=j+1C.j=j->nextD.j=r[j]->next
14.
15.若有"doublea;",则正确的输入语句是()。
A.scanf("%1f",a);
B.scanf("%f",&a);
C.scanf("%1f",&a)
D.scanf("%1e",&a);
16.
17.
18.以下叙述中正确的是()。
A.无论指针变量P具有何种基类型,表达式“p=p+1”都代表指针P移动1个字节
B.指针变量具有基类型,基类型不同的指针变量不能直接相互赋值
C.指针变量的赋值操作“p=0;”是非法的
D.通过指针变量存取某个变量值的方式称为“直接存取”方式
19.设以下变量均为int类型,则值不等于7的表达式是()。
A.(x=y=6,x+y,x+1)
B.(x=y=6,x+y,y+1)
C.(x=6,x+1,y=6,x+y)
D.(y=6,y+l,x=y,x+1)
20.下列一维数组初始化语句中,正确且与语句floata[]={0,3,8,0,9};等价的是().
A.floata[6]={0,3,8,0,9};
B.floata[4]={0,3,8,0,9};
C.floata[7]={0,3,8,0,9};
D.floata[5]={0,3,8,0,9};
二、2.填空题(20题)21.设有以下定义和语句,sizeof(a)的值是【】,sizeof(b)的值是【】。
struct{intday;Charmonth;intyear;}a,*b;
b=&a;
22.以下程序运行后输入3,abcde<回车>,则输出结果是【】。
#include<string.h>
move(char*str,intn)
{chartemp;inti;
temp=str[n-1];
for(i=n-1;i>0;i--)str[i]=str[i-1];
str[0]=temp;
}
main()
{chars[50];intn,i,z;
scanf("%d,%s",&n,s);
z=strlen(S);
for(i=1;i<=n;i++)move(s,z);
printf("%s\n",s);
}
23.队列是限定在表的一端进行插入和在另一端进行删除操作的线性表。允许插入的一端称作______。
24.下列软件系统结构图的宽度为[]。
25.以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。
#defineN4
voidrotate(inta[][N],intb[][N])
{inti,j;
for(i=0;i<N;i++)
{b[i][N-1]=a[0][i];【】=a[N-1][i];}
}
26.下列程序的运行结果为【】。
main()
{inti,j,row=0,colum=0,max,
a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(max<a[i][j])
{max=a[i][j];
row=i;
colum=j;
}
printf("max=%-5drow=%-3dcolum=%-3d\n",max,row,colum);
}
27.设x和y均为int型变量,且x=1,y=2,则表达式double(1+x/y)的值为【】。
28.下面程序的功能是:计算110之间的奇数之和与偶数之和,请填空。
#include<stdio.h>
main()
{inta,b,c,I;
a=c=0;
for(I=0;I<=10;I+=2)
{a+=I;
【】;
c+=b;}
printf("偶数之和=%d\n",a);
printf("奇数之和=%d\n",c-11);}
29.问题处理方案的正确而完整的描述称为______。
30.以上程序运行后的输出结果是【】。
main()
{inti=10,j=0;
do
{j=j+i;i-;}
while(i>2);
printf("%d\n",j);
}
31.下面程序的功能是输出数组s中最大元素的下标,请填空。
main()
{intk,p,s[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])【】
printf("%d\n",k);}
32.函数mystrlen(char*s)的功能是求字符串s的长度,请填空。
mystrlen(char*s)
{char*t:
t=s;
while(【】)t++;
return(t-s);
}
33.表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))的值是______。
34.在一个容量为32的循环队列中,若头指针front=3,尾指针rear=2,则该循环队列中共有______个元素。
35.设有下列宏定义:#defineA2
#defineBA+3
则执行赋值语句;t=B*2;t为int型变量后的值是______。
36.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、______和选择排序。
37.以下程序调用函数swap将指针s和t所指单元(a和B)中的内容交换,请填空。main(){inta=10,b=20,*s,*t;s=&a;t=&b;()printf("%d%d",a,B);}swap(int*ss,int*tt){intte;te=*ss;*ss=*tt;*tt=te;}
38.下列程序段的输出结果是【】。
main()
{charb[]="Hello,you";
b[5]=0;
printf("%s\n",B);
}
39.以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。清填空。
voidsstrcpy(char*s,char*t)
{while(*s++=【】);}
main()
{charstr1[100],str2[]="abcdefgh";
strcpy(str1,str2);
printf('%s\n",str1);
}
40.以下程序的功能是将宁符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abcl23edf4568h,执行程序后输出:123456。请填空。
#include<stdio.h>
#include<ctype.h>
main()
{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);
}
三、1.选择题(20题)41.有以下程序:#include<stdio.h>main(){intm=3,n=4,x;x=-m++;x=x+8/++n;prinff("%d\n",x);}程序运行后的输出结果是()。
A.3B.5C.-1D.-2
42.有以下程序段
intj;floaty;charname[50];
scanf("%2d%f%s",&j,&y,name);
当执行上述程序段,从键盘上输入555667777abc后,y的值为
A.55566.0B.566.0C.7777.0D.566777.0
43.在C语言中,要求运算数必须是整型的运算符是()
A.%B./C.<D.!
44.C语言库函数fgets(str,n,fp)的功能是______。
A.从fp指向的文件中读取长度n的字符串存入str旨向的内存
B.从fp指向的文件中读取长度不超过n-1的字符串存入str指向的内存
C.从fb指向的文件中读取n个字符串存入str指向的内存
D.从str读取至多n个字符到文fp
45.下面四个选项中,均是不合法的用户标识符的选项是()。
A.AP_0doB.floatla0_AC.b-agotointD._123tempint
46.以下能正确定义一维数组的选项是A.intnum[];
B.#defineN100intnum[N];
C.intnum[0..100];
D.intN=100;intnum[N];
47.下面程序的输出结果是______。#include<stdio.h>main(){char*p[]={"BOOL","OPK","H","SP"};inti:for(i=3;i>=0;i-,i-)printf("%c",*p[i]);printf("\n");}
A.SOB.SPC.SPOPKD.SHOB
48.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和()。
A.可重用性差B.安全性差C.非持久性D.冗余性
49.以下程序的输出结果是#include<stdio.h>voidprt(int*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&c);prt(&a,&b,&c);}
A.11,42,3112,22,41
B.11,41,2012,42,20
C.11,21,4011,21,21
D.11,41,21.12,42,22
50.算法的有穷性是指A.算法程序的运行时间是有限的
B.算法程序所处理的数据量是有限的
C.算法程序的长度是有限的
D.算法只能被有限的用户使用
51.若有定义inta=5,b=7;,则表达式a%=(b%2)运算后,a的值为()。
A.0B.1C.11D.3
52.函数rewind的作用是
A.使文件位置指针重新返回文件的开始位置
B.将文件位置指针指向文件中所要求的特定位置
C.使文件位置指针指向文件的末尾
D.使文件位置指针自动移至下一个字符位置
53.若执行下列的程序时,从键盘上输入1和2,则输出结果是()。#include<stdio.h>main(){inta,b,s;scanf("%d%d",&a,&b);s=a;if(a<b)s=b;S=S*S,printf("%d\n",s);}
A.1B.4C.2D.9
54.非空的循环单链表head的尾结点(由p所指向),满足()
A.p->next==NULIB.p==NULLC.p->next=headD.p=head
55.下图
所示二叉树的中序遍历结果为()。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
56.线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是()
A.每个元素都有一个直接前件和直接后件
B.线性表中至少要有一个元素
C.表中诸元素的排列顺序必须是由小到大或由大到小
D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件
57.下列变量说明语句中,正确的是______。
A.chara=b=c;B.chara;b;c;C.intx;z;D.intx,z;
58.已经定义ch为字符型变量,以下赋值语句中错误的是______。
A.ch='\';B.ch=62+3;C.ch=NULL;D.ch='\xaa';
59.若a、b、c、d都是int型变量且都已经正确赋初值,则下列不正确的赋值语句是()。
A.a+d;B.a++;C.a=b=c=d=100;D.a=(b=3)+(d=5);
60.若有定义;intw[3][5];,则以下不能正确表示该数组元素的表达式是()。A.*(*w+3)B.*(w+1)[4]C.*(*(w+1))D.*(&w[0][0]+1)
四、选择题(20题)61.设整型变量a为5,使b不为2的表达式是()。
A.b=a/2B.b=6-(--a)C.b=a%2D.b=a>3?2:1
62.有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是()。
A.自然连接B.交C.投影D.并
63.以下关于逻辑运算符两侧运算对象的叙述中正确的是()。
A.可以是任意合法的表达式B.只能是整数0或非0整数C.可以是结构体类型的数据D.只能是整数0或1
64.下列关于结构型、共用型、枚举型的定义语句中,正确的是()。
A.structss{intx}
B.unionuu{intx;}xx=5;
C.enumee{intx};
D.struct{intx;};
65.若有定义语句:“inta=3,b=2,c=1;”,以下选项中错误的赋值表达式是()。
A.a=(b=4)=3;B.a=b=c+1:C.a=(b=4)+C;D.a=1+(b=c一4);
66.以下关于指针概念不正确的是()。
A.指针变量可以用整数赋值,但不可以用浮点数赋值
B.一个变量的地址称为该变量的指针,一个指针变量只能指向同一类型的变量
C.只有同一类型的变量地址才能放到指向该类型变量的指针变量之中
D.只能将地址赋给指针变量
67.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是
A.插入排序B.冒泡排序C.直接插入排序D.堆排序
68.以下程序的输出结果为
main()
{
char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};
char**p;
inti;
p=alpha;
for(i=0;i<4;i++)
printf("%s",p[i]);
printf("\n");
}
A.ABCDEFGHIJKLB.ABCD
C.ABCDEFGHIJKLMNOPD.AEIM
69.在面向对象方法中,具有相似属性与操作的一组对象称为()。
A.类B.实例C.消息D.数据
70.已知inta=15,执行语句a=a<<2以后,变量a的值是()。
A)20B)40
C)60D)80
71.有以下程序#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf(“%d\n”,m);}程序的运行结果是()A.1B.0C.2D.3
72.定义结构体数组:structstu{intnum;charnameE20];}X[5]={1,"LI",2,"ZHAO",3,"WANG",4,"ZHANG",5,"LIU");for(i=1;i<5;i++)printf("%d%c",x[i].num,x[i].name[2]);以上程序段的输出结果为()。A.2A3N4A5UB.112A3H4IC.1A2N3A4UD.2H3A4H5I
73.语句“printf(”a\bhow\’are\’y\\\bou\n”);”的输出结果是()。A.A.a\bhow\'are\'y\\bou
B.a\bhow\’are\’y\bou
C.how'are'you
D.ahow'are'y\bou
74.有以下说明和定义语句
structstudent
{
intage;charnum[8];
};
structstudentstu[3]={{20,"200401"},{21,"200402"},{10\9,"200403"}};
structstudent*p=stu;
以下选项中引用结构体变量成员的表达式错误的是
A.(p++)->numB.p->numC.(*p).numD.stu[3].age
75.
76.
77.下列函数的功能是()。
A.将a所指字符串赋给b所指空间
B.使指针b指向a所指字符串
C.将a所指字符串和b所指字符串进行比较
D.检查a和b所指字符串中是否有’\0
78.有以下程序
main()
{
intx[]={1,3,5,7,2,4,6,0},i,j,k;
for(i=0;i<3;i++)
for(j=2;j>=i;j--)
if(x[j+1]>x[j])
{
k=x[j];
x[j]=x[j+1];
x[j+1]=k;
}
for(i=0;i<3;i++)
for(j=4;j<7-i;j++)
if(x[j]>x[j+1])
{
k=x[j];
x[j]=x[j+1];
x[j+1]=k;
}
for(i=0;i<8;i++)
printf("%d",x[i]);
printf("\n");
}
程序运行后的输出结果是
A.75310246B.01234567
C.76310462D.13570246
79.已知longi=32768;执行语句printf(“%d”,i);屏幕显示()。
A.-1B.-32768C.1D.32768
80.有以下程序程序运行后的输出结果是()。
A.6,4,3,2B.6,2,l,l,C.1,1,2,6,D.2,3,1,6,
五、程序改错题(1题)81.下列给定程序的功能是:读入一个整数n(2<;=n<;=5000),打印它的所有为素数的因子。例如,若输入整数1234,则应输出2,617。请修改程序中的错误,使程序能得出正确的结果。注意:不要改动main()函数,不能增选或删行,也不能更改程序的结构。试题程序:
六、程序设计题(1题)82.请编写fun函数,其功能是:计算并输出3~m所有素数的平方根之和。
例如,若主函数从键盘给m输入50后,则输出为s=68.665791。
请勿改动main函数与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
注意:m的值要大于2但不大于100。部分源程序给出如下。
试题程序:
#include<math.h>
#include<stdio.h>
doublefun(intm)
{}
voidmain
{
intm;
doubles;
FILE*out:
printf("\n\nInputm:");
scanf("%d",&m);
s=fun(m);
printf("\n\ns=%f\n\n",s);
ut=fopen("outfile.dat","w");
for(m=0;m<10;m++)
fprintf(out,"%f\n",fun(m+80));
felose(out);
}
参考答案
1.D
2.B程序首先定义二维字符数组v,使用4个字符串初始化,另外定义字符指针数组P。通过第1个for循环,将v的4个字符串的首地址赋给p。第2for循环通过两层内嵌循环将p中元素指向的字符串首字母进行排序交换。规则是将指向的字符串的首字母字符按照字母表中的顺序排序后交换。注意,这里交换的是首字母,而不是整个字符串,所以程序输出:afgebcdhnopqmijkl。本题答案为B选项。
3.CC)【解析】白盒测试方法也称为结构测试或逻辑测试,主要方法有逻辑覆盖测试、基本路径测试等。
4.D解析:在关系数据表中,行称为元组,对应存储文件中的记录,列称为属性,对应存储文件中的字段,所以本题答案为D。
5.A程序首先以读二进制文件的方式打开文件d.dat;然后使用fwrite函数将数组a中6个元素写入d.dat中。并调用for循环将a[2]元素(值为3)6次写入d.dat文件中;接着使用rewind函数将文件指针fp移动到文件头;再使用fseek函数将fp从当前位置向后移动2个整数位置;最后使用fread函数从fp指向的位置向后读取6个整数。由此可知这6个整数分别是:3,4,5,6,3,3。故本题答案为A选项。
6.C
7.A题干中,if语句的含义是:如果a的值为1,将b的值赋给a,否则将a的值自增1。选项A中,“switch(a==1)”中表达式“a==1”的结果如果为真,即1,则从case1开始执行“a++”;如果“a==1”的结果为假,即为0,则从case0开始执行“a=b”,所以与题干含义执行操作相反的是选项A中的语句。故本题答案为A选项。
8.A本题主要考查结构体数组的使用。x[i].num为结构体x[i]中的hum成员,x[i].num[2]是结构体x[i]中name成员的第3个元素。程序执行循环过程时:第1次循环,i=1,输出x[i].num,x[1].name[2]的值;第2次循环,i=2,输出x[2].num,x[2].name[2]的值,即3N;第3次循环,i=3,输出X[3].hum,x[3].name[2]的值,即4A;第4次循环,i=4,输出x[4].num,x[4].name[2]的值,即5U。
9.B解析:本题考查的是外部变量的应用。因为程序的初始inta=4;语句定义了外部变量a,在以后的执行过程中,当i=0时,调用f(0)函数,执行的语句是else{inta=7;t+=a++;},此处程序中又定义了变量a,所以原来定义的外部变量在此不起作用,得到t=7,返回值语句returnt+a++;处,外部变量a起作用,返回值为7+5=12:当i=1时,调用f(1)函数,执行的是语句else{inta=6:t+=a++;},此处程序中又定义了变量a,所以原来定义的外部变量在此不起作用,得到t=6,返回值语句
10.A
11.D程序定义double变量x、y,给x赋初值2.0。if语句判断,当x小于0.0时,给y赋值0.0。否则当x小于10.0时,y的值为1.0/x;当x大于等于10.0时,y的值为1.0。题干中x的值为2.0,所以y的值为1.0/x,即0.500000。本题答案为D选项。
12.C
13.A
14.B
15.D解析:函数scanf()的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。本题中定义变量a为双精度型变量,双精度变量的格式符为“1e”;变量的地址用取地址符“&”加变量名表示,如变量a的地址为“&a”。
16.D
17.B
18.B指针自增或自减1,移动的字节数与指针变量的基类型有关,假设指针变量p基类型为int类型,那么“p=p+1”表示指针P移动4个字节(通常int类型占4个字节),选项A错误;指针变量具有基类型,基类型不同的指针变量不能直接相互赋值,选项B正确;将0赋给指针变量,表示指针变量的值为空,这是合法的,选项C错误;通过指针变量存储指向变量的地址并通过指针存取变量的值,称为“间接存取”方式,选项D错误。故本题答案为B选项。
19.C
20.D
21.52
22.cdeabcdeab解析:本题move()函数的作用,是将形参s仕所指地址的连续n位循环右移1位,即让str[n-1]=str[n-2],str[n-2]=str[n-3],…,str[1]=str[0],str[0]=str[n-1](原)。主函数中用了一个for循环调用move()函数,共循环3次,所以数组s被循环右移了3位,故最后输出的值为cdeab。
23.队尾队尾解析:在队列中,允许插入的一端叫做“队尾”,允许删除的一端叫做“队头”。
24.33解析:软件系统结构图的宽度:整体控制跨度(最大模块数的层)的表示。
25.b[i][0]b[i][0]解析:因为要将a的最后一行放在b的第0列中,【】应填b的第0列的元素。
26.max=10row=2colum=1
27.11解析:本题考查两个知识点:一是x/y的值为整型,即为0;二是数1是double类型。
28.b=I+1b=I+1解析:本题考查了for循环语句的执行过程。i+=2是修正表达式,执行一次循环体后i的值就增加2,i的初始值为0,每次加2后的和累加至a,所以a的值就是110之间的偶数之和;b的值是111之间的奇数和,但在输出b值时,c去掉多加的11,即为110之间的奇数之和。
29.算法或程序或流程图算法或程序或流程图解析:算法是问题处理方案正确而完整的描述。
30.5252解析:do...while语句的形式为:
do
{
语句;
}while(条件表达式)
当条件表达式为非零时,继续执行循环体,直到条件表达式为零时退出循环。
31.k=p;k=p;解析:为要寻找数组中的最大元素的下标,需先预设1个临时最大元素的下标,并顺序逐一考查数组的元素,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。直至考查了数组的全部元素后,这临时最大元素下标就是数组的最大元素下标。通常预设的最大元素下标是数组的首元素下标,考查是从首元素开始顺序向后继元素考查。程序中,存储临时最大元素下标的变量是k,变量p控制顺序考查的循环控制变量。当发现当前元素s[p]比临时最大元素s[k)更大时,应该用p更新k。所以在空框处应填入代码“k=p;”。
32.*t*t解析:通过while循环扫描字符串,遇到字符‘\\0’结束,并用t统计字符串的长度。
33.0。0。解析:表达式中将实型常量2.5和算术表达式1.25*(3.7+2.3)的值强制转换为整型后参与运算。
34.3131解析:设队列容量为m,如果:rear>front,则队列中元素个数为rear-front;如果rear<front,则队列中元素个数为m+(rear-front)。本题rear<front,则m=32+(2-3)=31。
35.88解析:本题考查带参数的宏定义及相关运算.运算过程为:t=B*2=A+3*2=2+3*2=8。
36.交换排序交换排序解析:所谓排序是指将一个无序序列整理成按值非递减顺序排列成的有序序列,常用的排序方法有:交换排序、插入排序和选择排序。其中交换排序包括冒泡排序和快速排序,插入排序包括简单插入排序和希尔排序,选择排序包括直接选择排序和堆排序。
37.swap(st);swap(s,t);解析:本题要在主函数中调用swap函数交换a、b的值,实现数据交换需要进行地址传递,所以函数的形参都应该是需要交换的数据的地址,程序中通过“s=&a;t=&b;”将指针变量s和t指向变量a、b的地址,因此,引用时直接引用指针变量s和t即可。
38.HelloHello解析:字符串中,数值0或符号'/0'表示字符串的结束。本题中,b[5]被赋了0值,表明字符串b的第六个字符就是结束标志。因此,只输出前五个字符,即Hello。
39.*t++或*(t++)*t++或*(t++)解析:主函数中定义了两个字符型数组str1和str2,并且给str2赋初值“abcdefgh”,接着调用函数strcpy(str1,str2),将字符串str2的值赋给str1。在函数sstrcpy(*s,*t)中,用了一个while循环,每循环一次将形参指针t所指的字符赋给形参指针s所指向的存储空间,然后将指针s和t都移到下一个元素。所以空白处应该填*t++或*(t++)。
40.s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]s[i]>=\'0\'&&s[i]<=\'9\'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<=\'9\'&&s[i]>=\'0\'或\'9\'>=s[i]&&\'0\'<=s[i]或\'0\'<=s[i]&&\'9\'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]解析:本题中,chars[80],d[80];定义了两个字符型数组,可以放入80个字符。gets函数是C语言提供的一个专门用于读字符串的函数,它读入全部字符(包括空格),直到遇到回车为止。本题中,读入字符串s后,开始比较s中的每个字符是否为数字字符,因为字符数据在内存中以相应的ASCII码存放,所以只需比较相应的ASCII码值是否在48(\'0\'的ASCII代码)与57(\'9\'的ASCII代码)之间,或者直接与\'0\',\'9\'进行比较,如果是数字字符则将此字符存入d数组中,不是则继续进行下一字符的比较,直至s结束(即\'\\0\'的出现)。将'\\0'字符作为字符串d结束标志,最后调用puts函数输出d。所以在空格处应填入比较语句s[i]>=\'0\'&&s[i]<=\'9\'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<=\'9\'&&s[i]>=\'0\'或9\'>>=s[i]&&\'0\'<=s[i]或\'0\'<=s[i]&&\'9\'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]。
41.D解析:程序中x=-m++执行后x=-3,执行x=x+8/++n相当于执行x=-3+8/5,即n先增加1,再代入表达式运算,结果为-2。
42.B解析:本题考查通过scanf函数输入数据时的格式控制问题。变量j的格式控制为“%2d”,即只接收输入数据的前两位,从第三位开始直到空格之间的输入都会被保存到变量y中,因为y为浮点型数据,所以输出结果为选项B)。
43.A解析:题目的四个选项中,B、C、D都不要求运算数必须为整数,参与模运算(%)的运算数必须是整型数据。
44.B解析:fgets函数的作用是从指定的文件读入—个字符串。fgets(str,n,fp);中的n为要求得到的字符的个数,但只从中指向的文件输入n-1个字符,然后在最后加—个'\\0'字符,因此得到的字符串共有n个字符。
45.C解析:C语言规定的标识符只能由字母、数字和下划线3种字符组成,第一个字符必须为字母或下划线,并且不能使用C语言中的关键字作为标识符。选项C)中goto和int是关键字,b-a中'-'不是组成标识符的3种字符之一;选项D)中int是关键字,所以,均是不合法用户标识符的选项是C)。
46.B解析:选项A定义数组时省略了长度,而C语言中规定,只有在定义并同时进行初始化时,数组的长度才可以省略,数组的长度为初始化时候的成员个数,故选项A错误;在C语言中规定,数组的长度必须是一个整数或整型常量表达式,故选项C不正确:定义时数组的长度不能使用变量表示,故选项D不正确,所以,4个选项中选项B符合题意。
47.A解析:p[0]存放的是“BOOL\\0”的首地址:p[1]存放的是“OPK\\0”的首址等。在printf语句中输出的*p[i]表示p[i]字符串的第—个字符。在for循环中,i的初值为3,那么输出的第—个字符为“S”,接着两次i--,则输出的值为*p[1],即字符“O”,所以本题的输出为SO。
48.D解析:文件系统所管理的数据文件基本上是分散的、相互独立的,因此相对于数据库系统,以此为基础的数据处理存在3个缺点,数据冗余大、数据的不一致性、程序与数据的相互依赖(简称为数据依赖)。注意:文件系统和数据库系统各自的特点,人工管理阶段及数据库系统三代的特点。
49.B解析:尽管C语言以传值方式进行函数调用,但也可以通过传递指针的值(变量的地址)来达到修改实参变量值的目的,这是此题主要说明的问题。其次,应注意表达式。(z++)的值是*z,其后的z++在程序中无实际作用。函数调用时,由于x,y和z分指向a,b和c,因此,*x,*y和*z就是a,b和c。第一次调用函数时,*x=a=10,*y=b=40,*z=c=20输出结果为11,41,20,至此,已经可以肯定选项B)是正确的。在第一次输出后,a=11,b=41,c=20,第二次输出为:12,42,20。注意:指针作为参数的函数调用的执行过程。
50.A算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。
51.A解析:本题考查'%'运算符的使用。运算符'%'要求两个运算对象都为整型,其结果是整数除法的余数。本题中表达式ao%=(b%2)等价于a=a%o(b%2)=5%(7%2)=5%1=0。
52.A解析:函数rewind的功能是将文件指针重新指向一个流的开头。用法如下:
intrewind(FILE*stream);并且无返值。
53.B解析:本题考查if语句。scanf函数通过键盘读入a、b的值,a=1,b=2。第一个if语句,先判断条件,发现a<b条件成立,则s=b=2,s=s*s=4。
54.C
55.B解析:中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树,并且在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。
56.D解析:线性表可以为空表,排除选项B。第一个元素没有直接前件,最后一个元素没有直接后件,故排除选项A。线性表的定义中,元素的排列没有规定大小顺序,故选项C也有误,只有D项是正确的。
57.D解析:同时说明多个变量为同一类型时,变量之间应用逗号分隔。故D为正确选项。
58.A解析:对字符变量赋值时,即可以赋一字符常量,也可以赋0~255的整数,该整数表示字符常量的ASCII值。本题中选项B是将65赋值给ch,表示字符A;选项C中NULL是C语言中的符号常量,其值为0;选项D是将一个转义字符赋值给ch,该字符的ASCII值为aa,其中aa是十六进制;选项A错误。
59.A解析:C语言规定,赋值号的右边可以是一个赋值表达式.因此选项C)、选项D)正确:在选项B)中,a++是一个自加1的表达式,a被重新赋值,因此它是一个合法的赋值表达式:选项A)中,a+d是一个算术表达式,虽然最后有一个分号,但这个表达式中没有赋值操作,因此它不是一条赋值语句。
60.B通过—维数组名或指向维数组元素的指针来引用数组元素有两种写法:a[i]和*(a+i),它们是等价的。这是一种运算符之间的等价转换,就好像a-(b-C)等价于a-b+c一样。知道了这种转换,我们可以将之扩展到二维数组甚至任意维数组上来。因为[]运算符的结合性是从左至右的,所以w[i][j]等价于(w[i][j],此时可以先将任意一个[]运算符转换为指针形式为:(*(w+i)[j]或*(w[i]+j),或者同时转换:*(*(w+i)+j)。上述几种形式都完全等价于w[i][j]。选项A中,*(*w+3)可以看成*(*(w+0)+3),即w[0][3],是正确的。选项B小,因为[]运算符的优先级高于*运算符,所以*(w+1)[4]等价于*((w+1)[4]等价于*(*((w+1)+4)),即*(*(w+5)+0),它等价于w[5][0],很明显它超过数组的范围了,故不正确。选项C等价于w[1][0],是下确的。选项D中,&w[0][0]是数组w第1个元素的地址,它等价于&*(*(w+0)+0),外面的&和*可以抵消,就好像先乘以个数,然后再除以这个数一样。所以,&w[0][0]等价于*(w+0)+0。即*w。所以原式就变为*(*w+1)等价于w[0][1],这个也是合法的。综上所述,本题应该选择B。
61.C
62.A解析:结构化程序的概念首先是从以往编程过程中无限制地使用转移语句而提出的。转移语句可以使程序的控制流程强制性地转向程序的任一处,在传统流程图中,就是用上节我们提到的“很随意”的流程线来描述这种转移功能。如果一个程序中多处出现这种转移情况,将会导致程序流程无序可寻,程序结构杂乱无章,这样的程序是令人难以理解和接受的,并且容易出错。尤其是在实际软件产品的开发中,更多的追求软件的可读性和可修改性,象这种结构和风格的程序是不允许出现的。
63.AC语言的逻辑运算符比较特别,它的操作数没有明确的数据类型,可以是任意合法的表达式,所以选择A。
64.D定义语句后必须要分号‘;’,所赋初值放在大括号里。枚举类型的基础类型定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年湖北中医药高等专科学校高职单招职业适应性测试备考试题有答案解析
- 外卖平台合作协议(2025年评价体系)
- 2026年哈尔滨幼儿师范高等专科学校高职单招职业适应性测试备考题库带答案解析
- 2026年菏泽家政职业学院单招综合素质笔试参考题库带答案解析
- 2026年湖南工程职业技术学院单招综合素质笔试备考题库带答案解析
- 停车场租赁合同2025年修订版
- 2026年成都工贸职业技术学院单招职业技能考试模拟试题带答案解析
- 2026年黑龙江生物科技职业学院单招职业技能笔试备考题库带答案解析
- 2026年常州机电职业技术学院单招综合素质笔试模拟试题带答案解析
- 2026年云南旅游职业学院单招职业技能考试模拟试题附答案详解
- 饲料厂现场品控年度工作总结
- SMT工作总结和计划
- 羽毛球馆创业计划
- 村监委申请书
- 北京市北师大附中2024-2025学年高一上学期期末考试数学试卷(含答案)
- 市政工程施工机械管理制度
- 带货主播年终述职报告
- JJF 1375-2024机动车发动机转速测量仪校准规范
- DL∕T 1512-2016 变电站测控装置技术规范
- GB/T 4074.6-2024绕组线试验方法第6部分:热性能
- 危险源辨识、风险评价、风险控制措施清单-05变电站工程5
评论
0/150
提交评论