版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年山东省枣庄市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.C语言中,要求参加运算的数必须是整数的运算符是()。
A./B.!C.%D.==
2.有以下程序:#includeMain(){intb[3][3]={0.1,2.0,1,},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][b[j][i]];printf(“%d\n”,t);程序运行后的输出结果是()。A.3B.4C.1D.9
3.
4.有以下程序
#include<stdio.h>
intfun(intx,inty)
{if(x==y)return(x);
elsereturn((x+y)/2);
}
main()
{inta=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));
}
程序运行后的输出结果是A.3B.6C.8D.12
5.
6.设有inta=15,b=240;,则表达式(a&b)&b||b的值为______。
A.0B.1C.真D.假
7.有以下程序:#include<stdio.h>#include<string.h>main(){printf(“%d\n”,strlen(“0\t\n\0C011\1”));}程序运行后的输出结果是()。
A.3B.13C.1D.0
8.若有以下程序:inta=1,b=2;a=a^b;b=b^a;则执行以上语句后a和b的值分别是()。A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2,b=l
9.有以下程序:main(){intm=3,n=4,x;x=-m++;x=x+8/++n;printf("%d\n",x);}程序运行后的输出结果是______。
A.3B.5C.-1D.-216
10.以下叙述中正确的是()。
A.无论指针变量P具有何种基类型,表达式“p=p+1”都代表指针P移动1个字节
B.指针变量具有基类型,基类型不同的指针变量不能直接相互赋值
C.指针变量的赋值操作“p=0;”是非法的
D.通过指针变量存取某个变量值的方式称为“直接存取”方式
11.
12.若有定义语句:"inta[4][10],*P,*q[4];"且0≤i<4,则错误的赋值是()。
A.D=aB.q[i]=a[i]C.p=a[l]D.P=&a[2][1]
13.有以下程序#include<stdio.h>intfun(chars[]){intn=0;while(*s<=9&&*s>=0){n=10*n+*s-o;s++;)return(n);}main{chars[10]={6,1,*,4,*,9,*,0,*);printf("%d",fun(s));}程序运行的结果是()。A.9B.61490C.61D.5
14.有下列程序:main(){char*P[]={"3697","2584");inti,j;longnum=0;for(i=0;i<2;i++){j=0;while(p[i][j]!=\0){if((p[i][j]-t\0)%2)num=10*num+p[j][j]-0;j+=2;}}printf("%d\n",num);}程序执行后的输出结果是()。A.35B.37C.39D.3975
15.对包含N个元素散列表进行查找,平均查找长度()。
A.为OB.为O(N)C.不直接依赖ND.上述三者都不是
16.下列选项中,能正确定义数组的语句是()。
A.intnum[0..2008];
B.intnum[];
C.intN=2008;intnum[N];
D.#defineN2008;intnum[N];
17.有以下程序:#include<stdio.h>main(){inta=2,b=3,c=4;a*=16+(b++)-(++c);printf(“%d\n”,a);}程序运行后的输出结果是()。
A.15B.30C.28D.14
18.已知i,j,k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是A.scanf("%2d%2d%2d",&i,&j,&k);
B.scanf("%d%d%d",&i,&j,&k);
C.scanf("%d,%d,%d",&i,&j,&k);
D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);
19.对称数组A中,每个元素的长度为4个字节,行下标i从1到8,列下标j从1到8。将其下三角中的元素连续存储在从首地址SA开始的存储器内,该数组按行存放是,则元素A[5][8]的起始地址为()。
A.SA+124B.SA+128C.SA+132D.136
20.归并排序采用的算法设计方法属于()
A.归纳法B.分治法C.贪心法D.回溯方法
二、2.填空题(20题)21.下面程序
main()
{inti,j,m,n;
i=5;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d",i,j,m,n);
}
运行后,i,j,m,n的值分别是_______。
22.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。
23.表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))的值是______。
24.下列程序的输出结果是______。
main()
{inti,sum;
for(i=1;i<7;i++)
sum+=i;
printf("%d",sum);
}
25.设有定义“struct{inta;floatb;charc;}abc,*p_abc=&abc;”,则对结构体成员a的引用方法可以是abc.a和p_abc【】a。
26.设有定义:floatx=123.4567;,则执行以下语句后的输出结果是()。printf("%f\n",(int)(x*100+0.5)/100.0);
27.数据库管理系统常见的数据模型有层次模型、网状模型和【】3种。
28.设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【】。
29.下面程序中函数creat用于建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾,单向链表的头指针作为函数值返回。将程序补充完整。
#include<stdiao.h>
structlist
{chardata;structlist*next;};
structlist*creat()
{
structlist*h,*p,*q;charch;
h=【】malloc(sizeof(structlist));
p=q=h;ch=getchar();
while(ch!='?')
{
p=【】malloc(sizeof(structlist));
p->data=ch;q->next=p;q=p;ch=getchar();
}
p->next='\0';
【】;
}
30.fwrite函数的一般调用形式是
31.以下程序运行后的输出结果是【】。
main()
{chars[]="9876",*p;
for(p=s;p<s+2;p++)printf("%s\n",p);
}
32.在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为【】。
33.在对文件操作的过程中,若要求文件的位置指针回到文件的开始处,应当调用的函数是【】。
34.算法的工作量大小和实现算法所需的存储单元多少分别称为算法的【】。
35.在软件生命周期中,【】阶段是花费最多、持续时间最长的阶段。
36.下列程序的输出结果是【】。
voidfun(int*n)
{
while((*n)--);
printf("%d",++(*n));
}
main()
{inta=100;
fun(&a);
}
37.下面的程序可列指定字符串中的字符串进行从大到小排序,请将程序填完整。(注:程序采用了冒泡排序算法)
#include<stdio.h>
#include<string.h>
main()
{char*str="ABCDabcd",temp;
intn,i;
n=strlen(str);
while(n->1)
for(i=0;i<n;i++
if(str[i]<str[i+1])
{temp=【】;
str[i]=str[i+1];
【】=temp;
}
printf(【】);
}
38.在关系运算中,查找满足一定条件的元组的运算称之为【】。
39.有以下程序,其功能是:以二进制“写”方式打开文件d1.dat,写入1~100这100个整数后关闭文件。再以二进制“读”方式打开文件d1.dat,将这100个整数读入到另一个数组b中,并打印输出。请填空。
#include<stdio.h>
main()
{FILE*fp;
inti,a[100],b[100];
fp=fopen("d1.dat","wb");
for(i=0;i<100;i++)a[i]=i+1;
fwrite(a,sizeof(int),100,fp);
fclose(fp);
fp=fopen("d1.dat",【】);
fread(b,sizeof(int),100,fp);
fclose(fp);
for(i=0;i<100;i++)printf("%d\n",b[i]);
}
40.下列程序利用指针将2个数按从大到小的顺序输出。
main()
{inta,b,【】;
printf("inputa,b:");
scanf("%d%d",&a,&b);
【】;
p2=&b;
if(a<b)
{p=p1;
p1=p2;
p2=p;
}
printf("a=%db=%d\n",a,b);
printf("max=%dmin=%d\n",【】);
三、1.选择题(20题)41.下列程序执行后输出结果是()main(){chararr[2][4];strcpy(arr,"you");strcpy(arr,[1],"me");arr[0][3]='&';printf("%s\n",arr);}
A.you&meB.youC.meD.err
42.设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是()。
A.x&&y
B.x<=y
C.x||++y&&y-z
D.!(x<y&&!z||1)
43.下列程序的输出结果是______。#defineA100main(){inti=0,sum=0;do{if(i==(i/2)*2)continue;sum+=i;}while(++i<A);printf("%d\n",sum);}
A.2500B.2050C.4D.0
44.若有定义:floatx=1.5;inta=1,b=3,c=2;,则正确的switch语句是
A.switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}
B.switch((int)x);{case1:printf("*\n");case2:printf("**\n");}
C.switch(a+b){case1:printf("*\n");case2+1:printf("**\n");}
D.switch(a+b){case1:printf(**\n);}casec:printf(**\n);}
45.有以下程序main(){chara1='M',a2='m';printf("%c\n",(a1,a2));}以下叙述中正确的是()。
A.程序输出大写字母MB.程序输出小写字母mC.格式说明符不足,程序出错D.程序运行时产生出错信息
46.以下程序运行后,输出结果是()main(){charch[2][5]={"693","825"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(j=0;j<2;j++)for(j=0;p[i][j]>='0'&&p[i][j]<='9';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}
A.6385B.22C.33D.693825
47.关于结构化程序设计原则和方法描述错误的是()。
A.选用的结构只准许有一个入口和一个出口
B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现
C.不允许使用GOTO语句
D.语言中所没有的控制结构,应该采用前后一致的方法来模拟
48.c语言规定,在一个源程序中,main函数的位置()。
A.必须在最开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后
49.已知i、j、k为血型变量,若要从键盘输入2、3、4<CR>,使i、j、k的值分别为2、3、4,下列正确的输入语句是()。
A.scanf("%3d,%3d,%3d",&i,&j,&k);
B.scan("%d,%d,%d",&i,&j,&k);
C.scan("%do/od%d",&i,及j,&k);
D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);
50.已知各变量的类型说明如下:intk,a,b;unsignedlongw=5;doublex=1.42;则以下不符合C语言语法的表达式是():
A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)
51.若有以下程序段(n所赋的是八进制数)intm=32767,n=032767;printf("%d,%O\n",m,n);执行后输出结果是
A.32767,32767B.32767,032767C.32767,77777D.32767,077777
52.下列程序的运行结果是()。#include<stdio.h>main(){staticchara[]="Languagef",b[]="programe";char*p1,*p2;intk;p1=a;p2=b;for(k=0;k<=8;k++)if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));}
A.gaeB.angC.programD.有语法错
53.下列程序执行后输出的结果是______。intd=l;fun(intp){intd=5;d+=p++;printf("%d,",d);}main(){inta=3;fun(a);d+=a++;printf("%d\n",d);}
A.8,12B.9,13C.8,4D.9,5
54.C语言中while循环和do-while循环的主要区别是______。
A.do-while的循环体至少无条件执行一次
B.while的循环控制条件比do-while的循环控制条件严格
C.do-while允许从外部转到循环体内
D.do-while的循环体不能是复合语句
55.下列有关数据库的描述,正确的是A.数据处理是将信息转化为数据的过程
B.数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变
C.关系中的每一列称为元组,一个元组就是一个字段
D.如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字
56.以下程序的输出结果是()main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d",k);}
A.54321B.012345C.12345D.543210
57.字长为32位的计算机是指()
A.该计算机中的CPU有32个寄器
B.该计算机能够处理的最大数不超过232
C.该计算机每秒钟所能执行的指令条数为32MIPS
D.该计算机中的CPU可以相同时处理32位的二进制数
58.设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:□代表空格字符)
A.10□X□20□Y<回车>
B.10□X20□Y<回车>
C.10□X<回车>20□Y<回车>
D.10X<回车>20Y<回车>
59.有以下程序main(){char*s[]={"one","two","three"},*P;p=s[1];printf("%c,%s\n",*(p+1),s[0]);}执行后输出结果是
A.n,twoB.t,oneC.w,oneD.o,two
60.希尔排序法属于______类型的排序法。
A.交换类排序法B.插入类排序法C.选择类排序法D.建堆排序法
四、选择题(20题)61.
62.高有定义inta;floatb;执行scanf("%2d%f",&a,&b);语句时,若从键盘输入876<空格>854.0<回车>,a和b的值分别是()。
A.876和543.000000
B.87和6.000000
C.87和543.000000
D.76和543.000000
63.“商品”与“顾客”两个实体集之间的联系一般是
A.一对一B.一对多C.多对一D.多对多
64.若变量均已正确定义并赋值,以下合法的c语言赋值语句是()。A.x---y=--5;B.x--n%2.5;C.x+n=i;D.x=5--4+1;
65.
66.下列选项中,不是一个算法的基本特征的是()。
A.完整性B.可行性C.有穷性D.拥有足够的情报
67.下面程序的输出结果是()。
A.xyzabcABCB.zabcABCC.xyabcABCD.yzabcABC
68.若有定义“doublea;”,则正确的输入语句是()。
A.seaM("%1f",a);
B.scanf("%f",&a);
C.scanf("%1f",&a)
D.scanf("%1e",&a);
69.下列叙述中正确的是()。
A.数据的逻辑结构与存储结构是一一对应的
B.算法的时间复杂度与空间复杂度一定相关
C.算法的效率只与问题的规模有关,而与数据的存储结构无关
D.算法的时间复杂度是指执行算法所需要的计算工作量
70.
71.下列语句组中,正确的是()。
A.char*s;s="Olympic";
B.charsE73;s="Olympic";
C.char*S;s={¨Olympic"};
D.charsET3;s={"Olympic"};
72.有以下程序执行后的输出结果是()。
A.3B.2C.1D.4
73.
74.以下语句的输出结果是()。
inta=-1,b=4,k;
k=(++a<0)!(b--<=0);
printf("%d,%d,%d\n",k,a,b);
A.1,0,4B.1,0,3C.0,0,3D.0,0,4
75.有以下程序:
从第一列开始输入以下数据(<CR>代表一个回车符.:
2743<CR>
程序的输出结果是()。
A.66877B.668966C.6677877D.6688766
76.支持子程序调用的数据结构是()。A.栈B.树C.队列D.--X树
77.下列关于数据流图的描述正确的是()。
A.数据流图是描述数据处理过程的工具
B.数据流图间接支持系统的功能建模
C.数据流图中带箭头的线段表示控制流
D.数据流图是软件详细设计的工具
78.
79.若有以下语句
80.
以下叙述中正确的是()。
A.预处理命令行必须位于C源程序的起始位置
B.在C语言中,预处理命令行都以“#”开头
C.每个C程序必须在开头包含预处理命令行:#include<stdio.h>
D.C语言的预处理不能实现宏定义和条件编译的功能
五、程序改错题(1题)81.下列给定程序中,函数ptoc的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本方法是:先对字符串中的头两个元素进行排序,然后把第3个字符插入前两个字符中,插入后前3个字符依然有序;再把第4个字符插入前三个字符中,待排序的字符串已
在主函数中赋予。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<strin9.h>
#include<stdi0.h>
#defineM80
voidproc(char*arr)
{inti,j,n;charch;
n=strlen(arr):
for(i=1;i<n;i++)
//****found****
{c=arr[i];
j=i-1;
while((j>=o)&&(ch<arr[j]))
{
arr[j+1]=arr[j];
j--;
}
arr[j+1]=ch;
}
}
voidmain
{
chara[M]="QWERTYUIOPASDFGHJKLMNBVCXZ";
printf("Theoriginalstring:%s\n",a);
proc(a);
printf("Thestringaftersortin9:
%s\n\n",a);
}
六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c在此程序中,编写函数intfun(),其功能是求出小于或等于lim的所有素数,将其存放在aa数组中,并返回所求出的素数的个数。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1#include<conio.h>2#include<stdio.h>3#include<stdlib.h>4#defineMAX1005intfun(intlim,intaa[MAX])6{78}9voidmain()10{11FILE*wf;12intlimit,i,sum;13intaa[MAX];14system("CLS");15printf("输入一个整数:");16scanf("%d",&limit);17sum=fun(limit,aa);18for(i=0;i<sum;i++)19{20if(i%10==0&&i!=0)/*每行输出10个数*/21printf("\n");22printf("%5d",aa[i]);23}24/******************/25wf=fopen("out.dat","w");26sum=fun(15,aa);27for(i=0;i<sum;i++)28{29if(i%10==0&&i!=0)/*每行输出10个数*/30fprintf(wf,"\n");31fprintf(wf,"%5d",aa[i]);32}33fclose(wf);34/******************/35}
参考答案
1.C
2.B
3.C
4.B
5.A
6.B
7.AC语言中的转义字符也是一个字符。字符串“0\\t\\n\\0C011\\1”,共有字符‘0’、‘\\t’、‘\\n’3个字符。strlen遇到‘\\0’字符计数结束,因此计数为3。故本题答案为A选项。
8.B本题考查按位异或的用法。按位异或运算的规则是:两个运算数的相应二进制位相同,则结果为0,相异则结果为1。b=2的二进制为00000010,a=1的二进制为00000001,a=a^b一00000011,转化为十进制后为3,b=b^a=00000010^00000011=00000001,即1。
9.D解析:本题主要考查++执行的次序。执行过x=-m++;后,x=-3,m=4;执行x=x+8/++n;时8/++n=1;因此最后x=-216。
10.B指针自增或自减1,移动的字节数与指针变量的基类型有关,假设指针变量p基类型为int类型,那么“p=p+1”表示指针P移动4个字节(通常int类型占4个字节),选项A错误;指针变量具有基类型,基类型不同的指针变量不能直接相互赋值,选项B正确;将0赋给指针变量,表示指针变量的值为空,这是合法的,选项C错误;通过指针变量存储指向变量的地址并通过指针存取变量的值,称为“间接存取”方式,选项D错误。故本题答案为B选项。
11.C
12.A数组名是一个存放一个数组首地址的值,是一个地址常量。而p=a不是合法的,因为p和a的基本类型不同。
13.C在fun函数中,while循环的功能是逐个取字符数组s的字符判断其是否是数字。若是则将这些数字组成一个数保存到变量n中,并返回变量n的值。
14.D执行第一次for循环时,用表达式p[i][J]!=\o来判断字符串数组指针P是否到达字符串的结尾,如果没有到达,继续执行while中的语句。if语句表示(p[i][j]-\o)除2的余数不为0时,即字符串所有奇数,执行后面的语句。所以退出第1次for的循环体时,输出为397,执行第2次循环体。对字符串“2584”进行处理,输出结果为5,因而最后输出结果为3975。
15.C
16.DC语言不允许定义动态数组,定义数组的大小必须为常量表达式。A选项错误,C语言中的数组没有此类型的定义方法;B选项错误,定义数组应指明数组大小,如果不指明数组大小,需要给定元素的个数;C选项错误,N为变量,不能用来定义数组大小。故本题答案为D选项。
17.C单目运算符“++”的优先级高于赋值运算符。表达式“a*=16+(b++)-(++C);”可转化为“a=a*(16+b-(c+1));b=b+1;”,代入值计算可得a=28。故本题答案为C选项。
18.C
19.B
20.B解析:以2一路归并排序为例进行说明。2一路归并是指将两个有序序列合并成一个有序序列,其基本过程为;从两个序列中各取一个元素,进行比较,输出较小的元素,从较小元素所在序列取下一个元素,与未输出的那个元素比较,输出较小者。依此类推,直到输出序列包含了两个初始有序序列的全部元索。对于一个初始无序的序列,可以先将其等分为两个无序的子序列,对这两个子序列再次二分,重复该过程,直到分出的子序列中仅包含一个元素时(一个元素自然是有序的)为止,然后在反复进行2一路归并的过程,最后完成排序。
21.611610。6,11,6,10。解析:本题考查自加的前置和后置的区别。
22.调试调试
23.0。0。解析:表达式中将实型常量2.5和算术表达式1.25*(3.7+2.3)的值强制转换为整型后参与运算。
24.无定值无定值解析:for(i=1;i<7;i++)决定了循环次数为6次,每次执行的操作是sum+=i,但由于sum没有初始化,并不知道sum的初值是多少,所以结果无定值。
25.->->解析:若结构体变量abc有成员a,并有指针p_abc指向结构变量abc,则引用变量abc成员a的标记形式有abc.a和p_abc->a。
26.460000
27.关系模型关系模型解析:数据库管理系统是位于用户与操作系统之间的一层系统管理软件,是一种系统软件,是用户与数据库之间的一个标准接口。其总是基于某种数据模型,可以分为层次模型、网状模型和关系模型。
28.33解析:本题考查的是C语言逗号表达式的相关知识。程序在计算逗号表达式时,从左到右计算由逗号分隔各表达式的值,整个逗号表达式的值等于其中最后一个表达式的值。本题中,首先i被赋值为2,再自加1,最后i++的值计算为3。
29.(structlist*)(structlist*)return(h)
30.D
31.98768769876\r\n876解析:指针是一种数据类型,这种数据类型的变量用来存放内存中分配的存储单元的首地址。指针的定义:
类型说明符*指针变量名;
32.消息消息解析:在面向对象技术中,主要用到对象(object)、类(class)、方法(method)、消息(message)、继承(inheritance)、封装(encapsulation)等基本概念。其中消息是用来请求对象执行某一处理或回答某些信息的要求。
33.rewind()或fseek()rewind()或fseek()
34.时间复杂度和空间复杂度时间复杂度和空间复杂度
35.维护维护
36.00解析:在函数fun()中,while((*n)-)是先引用*n的值,再做(*n)--运算,所以循环结束时*n的值为0,再做(*n)--运算后,*n的值为-1;执行++(*n)后,*n的值是0。
37.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其实现过程是将相邻两个字符进行比较,如果当前字符小于下一个字符,则通过中间变量temp将字符两两交换,所以第一空应填:str[i],第二空应填:str[i+l]。最终打印输出得到的字符串str,所以第三空应填:'%s',str。
38.选择选择解析:在关系数据库中,选择运算也是一个元运算,关系R通过选择运算(并由该运算给出所选择的逻辑条件)后仍为一个关系。这个关系是由R中的那些满足逻辑条件的元组所组成。
39.rb或"r+b"或"rb+"rb或'r+b'或'rb+'解析:根据题目要求,在下划线位置应该填入一个能实现二进制读的使用文件方式的参数即可。所以,可以填'rb'或'r+b'或'rb+'。
40.*p*p1*p2p1:&a*p1*p2
41.A
42.D解析:该题考查逻辑与“&&”和逻辑或“||”以及逻辑非“!”符号的用法。选项A)即3&&4为真,选项B)即3<=4为真,选项C)是一个逻辑或与逻辑与的混合运算,只要执行了逻辑或左半部分,程序将直接停止执行逻辑或右半部分程序,因为x的值为真,此时选项C)变为1&&-1为真。选项D)不用计算,括号内逻辑或右边的值为1,因而括号内的值为1,再进行逻辑非运算得0。
43.A解析:本题程序的功能是求1到99之间(包括1和99)所有奇数之和。程序中的while循环的终止条件为++i=100,在while循环体内,如果i是偶数,则执行continue,跳过这一次循环,执行下—次循环,否则求和和。最后输出的值是1到99之间(包括1和99)所有奇数之和(1+99)*50/2=2500。
44.C解析:C语言中,switch语句专用于实现多分支结构程序,其特点是各分支清晰而直观。switch后面括号中可以是任何表达式,取其整数部分与各常量表达式进行比较。常量表达式中不能出现变量,且类型必须是整型、字符型或枚举型,各常量表达式各不相同。
45.B解析:(a1,a2)是一个逗号表达式,它的值为a2的值即m,以字符格式输出表达式的值即输出小写字母m。
46.A
47.C解析:限制使用GOTO语句是结构化程序设计的原则和方法之一,但不是绝对不允许使用GOTO语句。其他3项为结构化程序设计的原则。
48.C解析:不论main函数在整个过程中的位置如何,一个C程序总是从main函数开始执行的。
49.B解析:函数scan()的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符:“输入项地址表”是要输入的变量的地址。若在格式符中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符,其中的逗号也必须输入。
50.A解析:“%”是求余运算符或模运算符,“%”两侧均应为整型数据,选项A)中的x是double型数据。
51.A解析:本题考核的知识点是scanf()函数及printf()函数的输出格式。程序在定义时,以十进制形式为m赋初值,以八进制的形式为n赋初值.输出的时候m以十进制形式输出,n以八进制形式输出,因此输出的结果为32767和32767。所以,A选项为所选。
52.A解析:本题考查指针的用法,if(*(p1+k)==*(p2+k))语句的功能是判断两个数组中的字符是否相同,如果相同则输出。
53.C解析:本题执行过程如下:首先调用fun函数,使得实参a的值3传递绐形参p,得到局部变量d=8,打印出局部变量d的值8返回主函数执行“d+=a++””,此处的d为全局变量,所以d=1+3=4(由于本题是值传递,所以在函数fun中对p值的改变并不能引起a的改变),故本题的输出是8,4。
54.A解析:本题考核C++语言中while循环和do-while循环之间的区别。do-while语句与while语句不同的是,do-while循环中的<语句>至少会执行一次,而while语句中当条件在第一次循环就不满足时,语句一次也不会执行。
55.D数据处理是指将数据转换成信息的过程,故选项A叙述错误。数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构,故选项B叙述错误。关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故选项C叙述错误。所以本题选D。
56.B
57.D
58.D解析:本题中,scanf函数的格式控制没有空格,所以,对于选项A)、B)、C),输入的第一个空格会作为字符赋值给变量c1,而不会被解释成分隔符。
59.C解析:本题考核的知识点是指针数组。本崽首先定义了一个有3个元素的指针数组s,并遭过赋值使s[0]指向字符串“one”s[1]指向字符串“two”,s[2]指向字符串“three”,然后通过赋值语句“p=s[1]”,使p指向了字符串“two”,故”(p+1)”就是字符“w”。所以,C选项为所选。
60.B解析:希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。所以希尔排序法属于插入类排序,但它对简单插入排序做了很大的改进。
61.D
62.Bseanf函数用空格区分不同字符串的输入,因此876和543.0被看作两段输入。%2d只选取了第一个输人中的前两位,%f选取随后的数字作为浮点数,因此输出结果为87和6.000000。
63.D解析:两个实体间的联系可以归纳为3种类型:一对一联系:一对一的联系表现为主表中的每一条记录只与相关表中的一条记录相关联。一对多联系,一对多的联系表现为主表中的每一条记录与相关表中的多条记录相关联。多对多联系:多对多的联系表现为二个表中的多个记录在相关表中同样有多个记录其匹配。本题中一个顾客可以购买多种商品,同一种商品可以有多个顾客购买,所以商品和顾客之间是多对多的联系。
64.A%取余操作数只能是整数,x+n和数值5不能作为赋值的左值,NC2B)、C)、D)错误。
65.B
66.A解析:作为一个算法,一般应该具有下列4个特征:(1)可行性,即考虑到实际的条件能够达到一个满意的结果;(2)确定性,算法中的每一个步骤都必须是有明确定义的,(3)有穷性,一个算法必须在有限的时间内做完;(4)拥有足够的情报。
67.C本题考查的重点是拷贝字符串一一使用strepy函数,该函数的调用方式是:strcpy(字符数组,字符串),其中”字符串”可以是字符串常量,也可以是字符数组。函数的功能是:将”字符串”完整地复制到”字符数组”中,字符数组中原有的内容被覆盖。
使用该函数时注意:①字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志\0一起复制;②不能用赋值运算符”=”将一个字符串直接赋值给一个字符数组,只能用strcpy函数处理。
另外,本题还考查连接字符串的strcat函数,其调用方式是:strcat(字符数组,字符串)。功能是把”字符串”连接到”字符数组”中的字符串尾端,
68.D本题考查scanf函数的调用形式:scanf(格式字符串,输入项地址表)。题中定义变量a为双精度型变量,双精度变量的格式符为“le”;变量的地址用取地址符“&”加变量名表示,所以选项D正确。
69.D根据时间复杂度和空间复杂度的定义可知,算法的时间复杂度与空间复杂度并不相关。数据的逻辑结构就是数据元素之间的逻辑关系,它是从逻辑上描述数据元素之间关系的,是独立于计算机的;数据的存储结构是研究数据元素和数据元素之间的关系如何在计算机中表示的,它们并非一一对应。算法的执行效率不仅与问题的规模有关,还与数据的存储结构有关。
70.C
71.A给字符串数组赋值时,要先定义数组长度,然后再赋值。可以只给部分元素赋初值,当中值的个数少于元素个数时,只给前面部分元素赋值。数组的下标是从0开始的,所以s[7]代表从s[0]到s[6]七个元素。其格式可以写成:char数组名[常量]={字符,字符,…);,也可写为char数组名[常量]={"字符串"};,或去掉{)写为:char数组名[常量]="字符串"。所以本题应选择A选项。
72.Ac的值为a乘以b的值,为3。所以答案选择A)。
73.D
74.D
75.A本题主要考查了字符输入输出函数get—char和putchar的使用。getchar函数用来从标准输入设备上读人一个字符,putchar(C)函数是将字符变量c中的字符输出到标准输出设备上,并且字符可以看作整数参与运算。
76.A栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表,在主程序调用子程序时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中诟用子程序的位置,然后继续向下执行,这种调用方式符合栈的特点,因此本题的答案为A)。
77.A\n数据流图是结构化方法的需求分析工具,是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模。数据流图中带箭头的线段表示数据流。
\n
78.A
79.A本题考核的知识点是结构体类型定义和结构体的基本概念。结构体类型的定义格式为:slxuct结构体名{成员说明列表};结构体变量的定义有3种形式。第一种:定义结构体类型的同时定义结构体变量,如struct结构体名{成员说明列表)变量;第二种:先定义一个结构体类型,然后使用该类型来定义结构体变量,如structstudent{成员说明列表l;student变量;第三种:定义一个无名称的结构体类型的同时定义结构体变量,如truct§tudent{成员说明列表l变量。
80.B
\n本题是对基本知识点的理解,预处理命令行的位置没有规定,只是习惯写在起始位置而已,当需要时才用#include<stdio.h>头文件,预处理的作用就是实现宏定义和条件编译。
\n
81.\n\t错误:c=arr[i];
\n正确:ch=arr[i];
\n【解析】由函数定义可知,函故proc只定义了变量ch,没有定义变量C。因此,“c=arr[i]:”应改为“ch=arr[i];”。\n
82.1intfun(intlim,intaa[MAX])2{3inti,j,k=0;4for(i=2;i<=lim;i++)/*求出小于或等于lim的全部素数*/5{for(j=2;j<i;j++)6if(i%j==0)break;7if(j>=i)8aa[k++]=i;/*将求出的素数放入数组aa中*/9}10returnk;/*返回所求出的素数的个数*/11}<i;jp++)<>如果一个数是合数,那么它的最小质因数肯定小于等于它的平方根。本程序使用for循环语句查找小于lim的所有数,使用内嵌的循环判断语句判断该数是否为素数。在做这道题时,需要重点掌握素数的判定方法:for(j=2;j<sqrt(i);j++)if(i%j==0)break;…</i;jp++)<>2021-2022年山东省枣庄市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.C语言中,要求参加运算的数必须是整数的运算符是()。
A./B.!C.%D.==
2.有以下程序:#includeMain(){intb[3][3]={0.1,2.0,1,},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][b[j][i]];printf(“%d\n”,t);程序运行后的输出结果是()。A.3B.4C.1D.9
3.
4.有以下程序
#include<stdio.h>
intfun(intx,inty)
{if(x==y)return(x);
elsereturn((x+y)/2);
}
main()
{inta=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));
}
程序运行后的输出结果是A.3B.6C.8D.12
5.
6.设有inta=15,b=240;,则表达式(a&b)&b||b的值为______。
A.0B.1C.真D.假
7.有以下程序:#include<stdio.h>#include<string.h>main(){printf(“%d\n”,strlen(“0\t\n\0C011\1”));}程序运行后的输出结果是()。
A.3B.13C.1D.0
8.若有以下程序:inta=1,b=2;a=a^b;b=b^a;则执行以上语句后a和b的值分别是()。A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2,b=l
9.有以下程序:main(){intm=3,n=4,x;x=-m++;x=x+8/++n;printf("%d\n",x);}程序运行后的输出结果是______。
A.3B.5C.-1D.-216
10.以下叙述中正确的是()。
A.无论指针变量P具有何种基类型,表达式“p=p+1”都代表指针P移动1个字节
B.指针变量具有基类型,基类型不同的指针变量不能直接相互赋值
C.指针变量的赋值操作“p=0;”是非法的
D.通过指针变量存取某个变量值的方式称为“直接存取”方式
11.
12.若有定义语句:"inta[4][10],*P,*q[4];"且0≤i<4,则错误的赋值是()。
A.D=aB.q[i]=a[i]C.p=a[l]D.P=&a[2][1]
13.有以下程序#include<stdio.h>intfun(chars[]){intn=0;while(*s<=9&&*s>=0){n=10*n+*s-o;s++;)return(n);}main{chars[10]={6,1,*,4,*,9,*,0,*);printf("%d",fun(s));}程序运行的结果是()。A.9B.61490C.61D.5
14.有下列程序:main(){char*P[]={"3697","2584");inti,j;longnum=0;for(i=0;i<2;i++){j=0;while(p[i][j]!=\0){if((p[i][j]-t\0)%2)num=10*num+p[j][j]-0;j+=2;}}printf("%d\n",num);}程序执行后的输出结果是()。A.35B.37C.39D.3975
15.对包含N个元素散列表进行查找,平均查找长度()。
A.为OB.为O(N)C.不直接依赖ND.上述三者都不是
16.下列选项中,能正确定义数组的语句是()。
A.intnum[0..2008];
B.intnum[];
C.intN=2008;intnum[N];
D.#defineN2008;intnum[N];
17.有以下程序:#include<stdio.h>main(){inta=2,b=3,c=4;a*=16+(b++)-(++c);printf(“%d\n”,a);}程序运行后的输出结果是()。
A.15B.30C.28D.14
18.已知i,j,k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是A.scanf("%2d%2d%2d",&i,&j,&k);
B.scanf("%d%d%d",&i,&j,&k);
C.scanf("%d,%d,%d",&i,&j,&k);
D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);
19.对称数组A中,每个元素的长度为4个字节,行下标i从1到8,列下标j从1到8。将其下三角中的元素连续存储在从首地址SA开始的存储器内,该数组按行存放是,则元素A[5][8]的起始地址为()。
A.SA+124B.SA+128C.SA+132D.136
20.归并排序采用的算法设计方法属于()
A.归纳法B.分治法C.贪心法D.回溯方法
二、2.填空题(20题)21.下面程序
main()
{inti,j,m,n;
i=5;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d",i,j,m,n);
}
运行后,i,j,m,n的值分别是_______。
22.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。
23.表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))的值是______。
24.下列程序的输出结果是______。
main()
{inti,sum;
for(i=1;i<7;i++)
sum+=i;
printf("%d",sum);
}
25.设有定义“struct{inta;floatb;charc;}abc,*p_abc=&abc;”,则对结构体成员a的引用方法可以是abc.a和p_abc【】a。
26.设有定义:floatx=123.4567;,则执行以下语句后的输出结果是()。printf("%f\n",(int)(x*100+0.5)/100.0);
27.数据库管理系统常见的数据模型有层次模型、网状模型和【】3种。
28.设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【】。
29.下面程序中函数creat用于建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾,单向链表的头指针作为函数值返回。将程序补充完整。
#include<stdiao.h>
structlist
{chardata;structlist*next;};
structlist*creat()
{
structlist*h,*p,*q;charch;
h=【】malloc(sizeof(structlist));
p=q=h;ch=getchar();
while(ch!='?')
{
p=【】malloc(sizeof(structlist));
p->data=ch;q->next=p;q=p;ch=getchar();
}
p->next='\0';
【】;
}
30.fwrite函数的一般调用形式是
31.以下程序运行后的输出结果是【】。
main()
{chars[]="9876",*p;
for(p=s;p<s+2;p++)printf("%s\n",p);
}
32.在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为【】。
33.在对文件操作的过程中,若要求文件的位置指针回到文件的开始处,应当调用的函数是【】。
34.算法的工作量大小和实现算法所需的存储单元多少分别称为算法的【】。
35.在软件生命周期中,【】阶段是花费最多、持续时间最长的阶段。
36.下列程序的输出结果是【】。
voidfun(int*n)
{
while((*n)--);
printf("%d",++(*n));
}
main()
{inta=100;
fun(&a);
}
37.下面的程序可列指定字符串中的字符串进行从大到小排序,请将程序填完整。(注:程序采用了冒泡排序算法)
#include<stdio.h>
#include<string.h>
main()
{char*str="ABCDabcd",temp;
intn,i;
n=strlen(str);
while(n->1)
for(i=0;i<n;i++
if(str[i]<str[i+1])
{temp=【】;
str[i]=str[i+1];
【】=temp;
}
printf(【】);
}
38.在关系运算中,查找满足一定条件的元组的运算称之为【】。
39.有以下程序,其功能是:以二进制“写”方式打开文件d1.dat,写入1~100这100个整数后关闭文件。再以二进制“读”方式打开文件d1.dat,将这100个整数读入到另一个数组b中,并打印输出。请填空。
#include<stdio.h>
main()
{FILE*fp;
inti,a[100],b[100];
fp=fopen("d1.dat","wb");
for(i=0;i<100;i++)a[i]=i+1;
fwrite(a,sizeof(int),100,fp);
fclose(fp);
fp=fopen("d1.dat",【】);
fread(b,sizeof(int),100,fp);
fclose(fp);
for(i=0;i<100;i++)printf("%d\n",b[i]);
}
40.下列程序利用指针将2个数按从大到小的顺序输出。
main()
{inta,b,【】;
printf("inputa,b:");
scanf("%d%d",&a,&b);
【】;
p2=&b;
if(a<b)
{p=p1;
p1=p2;
p2=p;
}
printf("a=%db=%d\n",a,b);
printf("max=%dmin=%d\n",【】);
三、1.选择题(20题)41.下列程序执行后输出结果是()main(){chararr[2][4];strcpy(arr,"you");strcpy(arr,[1],"me");arr[0][3]='&';printf("%s\n",arr);}
A.you&meB.youC.meD.err
42.设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是()。
A.x&&y
B.x<=y
C.x||++y&&y-z
D.!(x<y&&!z||1)
43.下列程序的输出结果是______。#defineA100main(){inti=0,sum=0;do{if(i==(i/2)*2)continue;sum+=i;}while(++i<A);printf("%d\n",sum);}
A.2500B.2050C.4D.0
44.若有定义:floatx=1.5;inta=1,b=3,c=2;,则正确的switch语句是
A.switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}
B.switch((int)x);{case1:printf("*\n");case2:printf("**\n");}
C.switch(a+b){case1:printf("*\n");case2+1:printf("**\n");}
D.switch(a+b){case1:printf(**\n);}casec:printf(**\n);}
45.有以下程序main(){chara1='M',a2='m';printf("%c\n",(a1,a2));}以下叙述中正确的是()。
A.程序输出大写字母MB.程序输出小写字母mC.格式说明符不足,程序出错D.程序运行时产生出错信息
46.以下程序运行后,输出结果是()main(){charch[2][5]={"693","825"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(j=0;j<2;j++)for(j=0;p[i][j]>='0'&&p[i][j]<='9';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}
A.6385B.22C.33D.693825
47.关于结构化程序设计原则和方法描述错误的是()。
A.选用的结构只准许有一个入口和一个出口
B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现
C.不允许使用GOTO语句
D.语言中所没有的控制结构,应该采用前后一致的方法来模拟
48.c语言规定,在一个源程序中,main函数的位置()。
A.必须在最开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后
49.已知i、j、k为血型变量,若要从键盘输入2、3、4<CR>,使i、j、k的值分别为2、3、4,下列正确的输入语句是()。
A.scanf("%3d,%3d,%3d",&i,&j,&k);
B.scan("%d,%d,%d",&i,&j,&k);
C.scan("%do/od%d",&i,及j,&k);
D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);
50.已知各变量的类型说明如下:intk,a,b;unsignedlongw=5;doublex=1.42;则以下不符合C语言语法的表达式是():
A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)
51.若有以下程序段(n所赋的是八进制数)intm=32767,n=032767;printf("%d,%O\n",m,n);执行后输出结果是
A.32767,32767B.32767,032767C.32767,77777D.32767,077777
52.下列程序的运行结果是()。#include<stdio.h>main(){staticchara[]="Languagef",b[]="programe";char*p1,*p2;intk;p1=a;p2=b;for(k=0;k<=8;k++)if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));}
A.gaeB.angC.programD.有语法错
53.下列程序执行后输出的结果是______。intd=l;fun(intp){intd=5;d+=p++;printf("%d,",d);}main(){inta=3;fun(a);d+=a++;printf("%d\n",d);}
A.8,12B.9,13C.8,4D.9,5
54.C语言中while循环和do-while循环的主要区别是______。
A.do-while的循环体至少无条件执行一次
B.while的循环控制条件比do-while的循环控制条件严格
C.do-while允许从外部转到循环体内
D.do-while的循环体不能是复合语句
55.下列有关数据库的描述,正确的是A.数据处理是将信息转化为数据的过程
B.数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变
C.关系中的每一列称为元组,一个元组就是一个字段
D.如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字
56.以下程序的输出结果是()main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d",k);}
A.54321B.012345C.12345D.543210
57.字长为32位的计算机是指()
A.该计算机中的CPU有32个寄器
B.该计算机能够处理的最大数不超过232
C.该计算机每秒钟所能执行的指令条数为32MIPS
D.该计算机中的CPU可以相同时处理32位的二进制数
58.设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:□代表空格字符)
A.10□X□20□Y<回车>
B.10□X20□Y<回车>
C.10□X<回车>20□Y<回车>
D.10X<回车>20Y<回车>
59.有以下程序main(){char*s[]={"one","two","three"},*P;p=s[1];printf("%c,%s\n",*(p+1),s[0]);}执行后输出结果是
A.n,twoB.t,oneC.w,oneD.o,two
60.希尔排序法属于______类型的排序法。
A.交换类排序法B.插入类排序法C.选择类排序法D.建堆排序法
四、选择题(20题)61.
62.高有定义inta;floatb;执行scanf("%2d%f",&a,&b);语句时,若从键盘输入876<空格>854.0<回车>,a和b的值分别是()。
A.876和543.000000
B.87和6.000000
C.87和543.000000
D.76和543.000000
63.“商品”与“顾客”两个实体集之间的联系一般是
A.一对一B.一对多C.多对一D.多对多
64.若变量均已正确定义并赋值,以下合法的c语言赋值语句是()。A.x---y=--5;B.x--n%2.5;C.x+n=i;D.x=5--4+1;
65.
66.下列选项中,不是一个算法的基本特征的是()。
A.完整性B.可行性C.有穷性D.拥有足够的情报
67.下面程序的输出结果是()。
A.xyzabcABCB.zabcABCC.xyabcABCD.yzabcABC
68.若有定义“doublea;”,则正确的输入语句是()。
A.seaM("%1f",a);
B.scanf("%f",&a);
C.scanf("%1f",&a)
D.scanf("%1e",&a);
69.下列叙述中正确的是()。
A.数据的逻辑结构与存储结构是一一对应的
B.算法的时间复杂度与空间复杂度一定相关
C.算法的效率只与问题的规模有关,而与数据的存储结构无关
D.算法的时间复杂度是指执行算法所需要的计算工作量
70.
71.下列语句组中,正确的是()。
A.char*s;s="Olympic";
B.charsE73;s="Olympic";
C.char*S;s={¨Olympic"};
D.charsET3;s={"Olympic"};
72.有以下程序执行后的输出结果是()。
A.3B.2C.1D.4
73.
74.以下语句的输出结果是()。
inta=-1,b=4,k;
k=(++a<0)!(b--<=0);
printf("%d,%d,%d\n",k,a,b);
A.1,0,4B.1,0,3C.0,0,3D.0,0,4
75.有以下程序:
从第一列开始输入以下数据(<CR>代表一个回车符.:
2743<CR>
程序的输出结果是()。
A.66877B.668966C.6677877D.6688766
76.支持子程序调用的数据结构是()。A.栈B.树C.队列D.--X树
77.下列关于数据流图的描述正确的是()。
A.数据流图是描述数据处理过程的工具
B.数据流图间接支持系统的功能建模
C.数据流图中带箭头的线段表示控制流
D.数据流图是软件详细设计的工具
78.
79.若有以下语句
80.
以下叙述中正确的是()。
A.预处理命令行必须位于C源程序的起始位置
B.在C语言中,预处理命令行都以“#”开头
C.每个C程序必须在开头包含预处理命令行:#include<stdio.h>
D.C语言的预处理不能实现宏定义和条件编译的功能
五、程序改错题(1题)81.下列给定程序中,函数ptoc的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本方法是:先对字符串中的头两个元素进行排序,然后把第3个字符插入前两个字符中,插入后前3个字符依然有序;再把第4个字符插入前三个字符中,待排序的字符串已
在主函数中赋予。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<strin9.h>
#include<stdi0.h>
#defineM80
voidproc(char*arr)
{inti,j,n;charch;
n=strlen(arr):
for(i=1;i<n;i++)
//****found****
{c=arr[i];
j=i-1;
while((j>=o)&&(ch<arr[j]))
{
arr[j+1]=arr[j];
j--;
}
arr[j+1]=ch;
}
}
voidmain
{
chara[M]="QWERTYUIOPASDFGHJKLMNBVCXZ";
printf("Theoriginalstring:%s\n",a);
proc(a);
printf("Thestringaftersortin9:
%s\n\n",a);
}
六、程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽省淮南市西部地区联考2025-2026学年七年级上学期12月月考语文试题(含答案)(含解析)
- 2026年南充科技职业学院单招综合素质考试题库附参考答案详解(b卷)
- 2026年信阳职业技术学院单招职业倾向性考试题库有答案详解
- 2026年兰州石化职业技术学院单招职业倾向性考试题库附参考答案详解(预热题)
- 2026年内蒙古丰州职业学院单招综合素质考试题库附参考答案详解(满分必刷)
- 2026年内蒙古体育职业学院单招职业倾向性考试题库附参考答案详解(模拟题)
- 2026年南京城市职业学院单招职业技能考试题库附答案详解(a卷)
- 2026年内蒙古能源职业学院单招职业技能测试题库附答案详解(培优b卷)
- 2026年南通科技职业学院单招职业适应性考试题库及参考答案详解一套
- 2026年六盘水职业技术学院单招职业适应性测试题库带答案详解(培优b卷)
- 《力与大地:重力、摩擦力的科学透视与地理联结》-初中科学(八年级)单元复习课教学设计
- 2025年宁波职业技术学院单招职业技能考试题库附答案解析
- 宁德新能源VERIFY测评题
- 中国传媒大学毕业论文报告基本规范及格式要求
- 备战2026年高考英语考试易错题(新高考)易错点18 应用文写作(解析版)
- 方言传承的代际差异-洞察及研究
- 企业开工第一课安全培训
- 新能源科技有限公司商业计划书
- 中医埋线课件
- 近五年宁夏中考物理真题及答案2024
- 个人借款合同范本(担保方式)
评论
0/150
提交评论