2021-2022年江西省吉安市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021-2022年江西省吉安市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021-2022年江西省吉安市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021-2022年江西省吉安市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021-2022年江西省吉安市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2021-2022年江西省吉安市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若有定义语句:inta[3][6];,按在内存中的存放顺序,a数组的第10个元素是A.a[0][4]B.a[1][3]C.a[0][3]D.a[1][4]

2.

3.下列程序段的时间复杂度为()。A.O(3n)B.O(n)C.O(n2)D.O(log3n)

4.下列算法中,()算法用来求图中某顶点到其他顶点所有顶点之间的最短路径。

A.DijkstraB.FloyedC.PrimD.Kruskal

5.若有定义“intx,y;”,并已正确给变量赋值,则以下选项中与表达式“(x-y)?(x++):(y++)”中的条件表达式“(x-y)”等价的是()。

A.(x-y<0||x-y>0)B.(x-y<0)C.(x-y>0)D.(x-y==0)

6.有以下程序:

程序执行后的输出结果是()。

A.45B.50C.60D.55

7.有以下程序:#include<stdio,h>#include<string,h>struetSTU{intnam;floatTotalSeore;};voidf(strnctSTUp){structSTUs[2]={{20044,550},{20045,537}};p.num=s[1].num;p.TotalScore=s[1].TotalScore;main(){structSTUs[2]={{20041,703},{20042,580}};f(s[0]);printf("%d%3.Of\n",s[0].num,s[0].TotalSeore);}程序运行后的输出结果是()。

A.20045537B.20044550C.20042580D.20041703

8.有以下程序:#include<stdio.h>main(){FILE*pf;char*s1=“China”,*s2=“Beijing”;pf=fopen(“abc.dat”,“wb+”);fwrite(s2,7,1,pf);rewind(pf);/*文件位置指针回到文件开头*/fwrite(s1,5,1,pf);fclose(pf);}程序执行后,abc.dat文件的内容是()。

A.ChinaB.ChinangC.ChinaBeijingD.BeijingChina

9.设有如下定义:intx=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y));的输出结果是()。

A.1B.0C.4D.3

10.执行下列程序段后的输出结果是()。A.3B.2C.1D.4

11.某某二叉树的中序序列和后序序列正好相反,则该二叉树一定是______的二叉树

A.空或只有一个结点B.高度等于其结点数C.任一结点无左孩子D.任一结点无右孩子

12.下面描述中,不属于软件危机表现的是()A.软件过程不规范B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高

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

A.intB.floatC.doubleD.不确定

14.关于地址和指针,以下叙述正确的是()。

A.可以通过强制类型转换让char型指针指向double型变量

B.函数指针P指向一个同类型的函数f时,必须写成“p=&f;”

C.指针P指向一个数组f时,必须写成“P=&f;”

D.—个指针变量P可以指向自身

15.

16.下面叙述正确的是______。A.算法的执行效率与数据的存储结构无关

B.算法的空间复杂度是指算法程序中指令(或语句)的条数

C.算法的有穷性是指算法必须能在执行有限个步骤之后终止

D.以上三种描述都不对

17.设x=011050,则x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

18.若有定义语句:intX=10;,则表达式x-=x+X的值为A.-20B.-10C.0D.10

19.有以下函数:intfun(char*x,char*y)intn=0;while((*x==*y)&&*x!=‘\0’)∣x++;y++;n++;∣returnn;函数的功能是()。A.将y所指字符串赋给x所指存储空间

B.查找和y所指字符串中是否有‘\0’

C.统计x和y所指字符串中最前面连续相同的字符个数

D.统计x和y所指字符串中相同的字符个数

20.下列排序算法中,()算法可能会出现下面情况:初始数据有序时,花费的时间反而最多。

A.堆排序B.冒泡排序C.快速排序D.希尔排序

二、2.填空题(20题)21.有以下程序main(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序执行后的输出结果是

22.以下程序的输出结果是______。

main()

{inta=177;

printf("%o\n",a);

23.下面函数要求计算两个整数x,y之和,并通过形参返回该值,请填空。

add(intx,inty,【】z)

{【】=x+y;}

24.选择程序中的输入输出语句,以满足题目给定的输入输出数据形式。

main()

{inta;floatb;

【】

【】}

输入形式:3.52<空格>6<回车>

输出形式:a*b=21.12

25.在关系运算中,【】运算是对两个具有公共属性的关系所进行的运算。

26.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。

27.面向对象的模型中,最基本的概念是对象和______。

28.执行以下程序后的输出结果是【】。

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",a);

}

29.设二进制数A是00101101,若想通过异或运算ab使A的高4位取反,低4位不变,则二进制数B应是【】。

30.设有以下程序,为使之正确运行,请在横线中填入应包含的命令行。(注:try_me()函数在a:\myfile.txt中有定义。)

______

main()

{printf("\n");

try_me();

printf("\n");}

31.阅读下面程序,则程序的执行结果为【】。

#include"stdio.h"

fun(intk,int*p)

{inta,b;

if(k==1‖k==2)

*p=1;

else{fun(k-1,&a);

fun(k-2,&b);

*p=a+b;}}

main()

{intx;

fun(6,&x);

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

32.以下程序的运行结果是______。

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:

case2:return1;}

return(fib(g-1)+fib(g-2));}

main()

{longk;

k=fib(5);

printf("k=%51d\n",k);}

33.表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))的值是______。

34.下列程序中字符串中各单词之间有一个空格,则程序的输出结果是【】。

#include<string.h>

main()

{charstr1[]="Howdoyoudo",*p1=str1;

strcpy(str1+strlen(str1)/2,"eshe");

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

}

35.以下函数用于求出一个2×4矩阵中的最大元素值。

max_value(arr)

intarr[][4];

{

inti,j,max;

max=arr[O][0];

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

for(j=0;【】;j++)

if(【】>max)max=【】;

return(max);

}

36.在一个容量为25的循环队列中,若头指针front=16,尾指针rear=9,则该循环队列中共有上【】个元素。

37.执行以下for语句后,变量i的值是【】。

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

38.若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是【】。

intb,c;floata;

scanf("%f,%d,c=%d",&a,&b,&c)

39.以下程序运行后的输出结果是【】。

intf(inta[],intn)

{

if(n>=1)

returnf(a,n-1)+a[n-1];

else

return0;

}

main()

{

intaa[5]={1,2,3,4,5},s;

s=f(aa,5);

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

}

40.设x和y均为int型变量,且x=1,y=2,则表达式2.0+y/x的值为【】。

三、1.选择题(20题)41.以下错误的定义语句是()。

A.intx[][3]={{0},{1},{1,2,3}};

B.intx[4][3]={{1,2,3},{1,2,3),{1,2,3},{1,2,3}};

C.intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

D.intx[][3]={1,2,3,4};

42.若有语句:Char*line[5];,以下叙述中正确的是()。

A.定义line是一个数组,每个数组元素是一个基类型为Char的指针变量

B.定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组

C.定义line是一个指针数组,语句中的*号称为间址运算符

D.定义line是一个指向字符型函数的指针

43.C语言中()

A.不能使用do-while语句构成的循环

B.do-while语句构成的循环必须用break语句才能退出

C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环

D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环

44.运行下面程序时,从键盘输入字母H,则输出结果是main(){charch;ch=getchar();swimh(ch){case'H':printf("Hello!\n");case'G':printf("Goodmorning!\n");default:printf("Bye_Bye!\n");}}

A.Hello!

B.Hello!GoodMoring!

C.Hello!Goodmoming!Bye_ye!

D.Hello!Bye_ye!

45.以下叙述中正确的是______。

A.C语言比其他语言高级

B.C语言可以不用编译就能被计算机识别执行

C.C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D.C语言出现的最晚,具有其他语言的一切优点

46.C语言库函数fgets(str,n,fp)的功能是______。

A.从中指向的文件中读取长度n的字符串存入str指向的内存

B.从fp指向的文件中读取长度不超过n-1的字符串存入str指向的内存

C.从fp指向的文件中读取n个字符串存入str指向的内存

D.从str读取至多n个字符到文件fp

47.下列叙述中正确的是A.break语句只能用于switch语句

B.在switch语句中必须使用default

C.break语句必须与switch语句中的case配对使用

D.在switch语句中,不一定使用break语句

48.数据的存储结构是指()。

A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示

49.若变量a,b已正确定义,且b已正确赋值,则合法的语句是()。

A.b=double(b);B.++b;C.a=a++5;D.a=double(b);

50.下列描述中,不是线性表顺序存储结构特征的是

A.不便于插入和删除B.需要连续的存储空间C.可随机访问D.需另外开辟空间来保存元素之间的关系

51.在下列#include命令中,正确的一条是()

A.#include[string.h]

B.#include{math.h}

C.#include(stdio.h)

D.#include<stdio.h>

52.算法具有五个特性,以下选项中不属于算法特性的是_____。A.有穷性B.简洁性C.可行性D.确定性

53.在C语言中,函数调用时()。

A.实参和形参各占独立的存储单元

B.实参和形参共用存储单元

C.由系统自动确定实参和形参是否共用存储单元

D.由用户指定实参和形参是否共用存储单元

54.待排序的关键码序列为(33,18,9,25,67,82,53,95,12,70),要按关键码值递增的顺序排序,采取以第一个关键码为基准元素的快速排序法,第一趟排序后关键码33被放到第()个位置。

A.3B.5C.7D.9

55.表达式3.6-5/2+1.2+5%2的值是A.4.3B.4.8C.3.3D.3.8

56.下列关于栈的描述中错误的是()

A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针

57.以下程序的输出结果是______。main(){inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=0;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d\n",s);}

A.18B.19C.20D.21

58.设x,y,z,(均为整型变量,现有如下语句x=y=z=1;t=++x‖++y&&++z;,则执行这个语句后t的值为

A.2B.1C.0D.不定值

59.设已包含头文件<string.h>,下列程序段的运行结果是()。chars1[]={"ACDEF"};chars2[]="ABC";strcpy(s1,s2);printf("%d",strlen(s1));

A.3B.4C.6D.5

60.以下程序的输出结果是()structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf("%d%d\n"h[0].p)->x,(h[1].p)->y);}

A.12B.23C.14D.32

四、选择题(20题)61.

62.

设变量均已正确定义,

值10和20,为变量cl和c2赋字符X和Y。以下所示的输入形式中正确的是(注:口代表空格字符.()。

A.

B.

C.

D.

63.

64.下面叙述中错误的是()。

A.软件测试的目的是发现错误并改正错误

B.对被调试的程序进行“错误定位”是程序调试的必要步骤

C.程序调试通常也称为Debu9

D.软件测试应严格执行测试计划,排除测试的随意性

65.

66.有以下程序:

#include<stdio.h>

intfun(intX,inty)

{if(X!=y)return((x+y)/2);

elsereturn(x);

}

main()

{inta=4,b=5,c=6;

printf("%d/n",fun(2*a,fun(b,c)));

}

程序运行后的输入结果是()。

A.3

B.6

C.8

D.12

67.有以下程序:

程序的运行结果是()。

A.0B.9C.6D.8

68.有以下程序

69.若有定义和语句:

int*(*pp),*P,a=20,b=10;

pp=&p;p=&a;p=&b;printf("%d,%d\n",*P,**PP);

则输出结果是()。A.A.20,10B.20,20C.10,20D.10,10

70.有以下程序:

程序运行后的输出结果是()。

A.02B.13C.57D.12

71.有以下程序:

程序运行后的输出结果是()。

72.有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母:

程序运行后的输出结果是()。

A.abcdEFg!B.AbCdEFg!C.abcdEFG!D.aBcDEFG!

73.对于一个正常运行的C程序,以下叙述中正确的是()。

A.程序的执行总是从main函数开始,在程序的最后一个函数中结束

B.程序的执行总是从程序的第一个函数开始,在main函数结束.

C.程序的执行总是从main函数开始、

D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束

74.

75.设有定义:“struct{charmarkp[l2];intnuml;doublenum2;}tl,t2;”,若变量均已正确赋初值,则以下语句中错误的是()。

A.t1=t2;

B.t2.num1=tl.numl;

C.t2.mark=tl.mark;

D.t2.num2=tl.num2;

76.

77.下列选项中,能正确定义数组的语句是()。

A.

B.

C.

D.

78.

79.有以下程序段:

当执行上述程序段,从键盘上输入555667777abc后,y的值为()。A.55566.0B.566.0C.7777.0D.566777.0

80.设有如下说明

typedefstruct

{intnumber;charclass;doublescore;}student;

则以下选项中,能正确定义结构体数组并赋初值的语句是()。

A.studenttt[2]={{189,’A’,62},{190,’B’,75}};

B.studenttt[2]={189,’"A",62,190,"B",75};

C.structtt[2]={{189,’A’},{190,’B’}};

D.structtt[2]={{189,"A",62.5},{190,"B",75.0}};

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCIl码升序排序后输出。

例如,输入opdye,则应输出deopy。

请修改程序中的错误,使它能得到正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include%string.h>

#include%stdlib.h>

#include<conio.h>

#include<stdio.h>

//****found****

intproc(charstr[])

{

charC;

unsignedi,j;

for(i=0;i<strlen(str)-1;i++)

for(j=i+1;j<strlen(str);j4-+)

if(str[i]>str[j])

{

c=str[j]:

//****found****

str[j]=str[i++];

str[i]=C;

}

}

voidmain

{

charst/[81];

system("CLS");

printf("\nPleaseenteracharacter

string:");

gets(str);

printf("\nknBeforesorting:\n%s",str);

proc(str);

printf("\nAftersortingdecendingly:\n

%S",str);

}

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,规定输入的字符串中只包含字母和*号。请编写函数其功能是使字符串的前导*号不得多于n个,若多于n个,则删除多余的*号;若少于或等于n个,则不做处理。字符串中间和尾部的*号不删除。例如,字符串中的内容为“*******A*BC*DEF*G****”,若n的值为4,删除后,字符串中的内容应当是“****A*BC*DEF*G****”;若n的值为8,则字符串中的内容仍为“*******A*BC*DEF*G****”。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#include<conio.h>voidfun(char*a,intn){}voidmain(){ chars[81];intn; printf(“Enterastring:\n”); gets(s); printf(“Entern:”); scanf(“%d”,&n); fun(s,n); printf(“Thestringafterdeleted:\n”); puts(s);}

参考答案

1.B解析:二维数组的元素在内存中是按行列顺序连续存放的。以本题的二维数组a[3][6]为例,它的元素在内存中的存放顺序是:a[0][0]、a[0][1]、a[0][2]…a[0][5]、a[1][0]、\u3000a[1][1]…a[1][5]、a[2][0]…a[2][5]。由此可见,第10个元素就是第2行第4个元素,即a[1][3]。故应该选择B。

2.C

3.D

4.A

5.A条件表达式“x=表达式1?表达式2:表达式3”的含义是:先求解表达式1,若其值不为0(真),则求解表达式2,将表达式2的值赋给x;若表达式1的值为0(假),则求解表达式3,将表达式3的值赋给X。本题中与条件表达式“(x-y)”等价的是“(x-y<0||lx-y>0)”。故本题答案为A选项。

6.C内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。Fun(a,5)的值是l5,再次调用后slim=15,所以Fun(b,4)=45,s=45+15=60。

7.D解析:函数f中定义了结构体类型的变量P作为形参,在main函数中,将结构体变量s[0]中的值传给了形参变量P,在函数f中,虽然改变了p中的内容,但其改变对main函数中s[0]的值不产生影响,所以main函数中输出s[0]的数据仍然是main函数中初始化时的数据。

8.B题目中先是将s2字符串写入adc.dat中,然后执行rewind函数将写指针放置于文件开头,写入s1字符串。s1字符串将前5个字符覆盖,所以最终结果为Chinang。故本题答案为B选项。

9.D

10.A

11.C

12.A软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。所以选择A。

13.C

14.A函数名代表函数的入口地址,函数指针P指向一个同类型的函数f时,可以写成“p=f;”,而不能写成“P=&f;”,选项B错误。指针p指向一个数组f时,可以写成“p=f;”,数组名f代表数组的首地址,选项C错误。指针变量指向的是变量的地址,选项D错误。char型根据转化原则可以转化为double类型。故本题答案为A选项。

15.A

16.C解析:算法的执行效率与数据的逻辑结构和存储结构都有很紧密的关系。算法的空间复杂度是指执行该算法需要的内存空间,并非算法程序中指令的条数。算法一般应该具有以下4个特征:可行性、确定性、有穷性和拥有足够情报。其中,有穷性是指算法必须能在执行有限个步骤之后终止,否则可能失去实际意义。

17.A本题考查按位与运算,按位与就是相同为1,不同为0,把x=011050化成二进制为0001001000101000,把01252化成二进制为0000001010101010,两者相与得0000001000101000。

18.B解析:x-=x+x可化为:x=x-(x+x),由于x初始值为10,所以计算后,x=10-20=-10,因此选B)。

19.C本题中由循环条件可知遇到‘\\0’或x与y所指的字符的值不等中的一个条件时就结束,所以功能是统计x和y所指字符串中最前面连续相同的字符个数。

20.C

21.C

22.261261解析:在控制格式符中“O”代表的是将数据按八进制输出,十进制数的177代表的八进制数是261,所以该空格处应该填写261。

23.int**zint*\r\n*z解析:函数希望通过形参z带回结果,形参z必须是指针类型的。由于返回整型结果,所以第一处填int*;函数返回前必须先把结果通过形参z间接引用传回,第二处应填*z。

24.scanf("%f<空格>%d"&b&a);printf("ab=%5.2f"a*b);scanf('%f<空格>%d',&b,&a);\r\nprintf('a,b=%5.2f',a*b);

25.自然连接自然连接解析:在关系运算中,自然连接运算是对两个具有公共属性的关系所进行的运算。

26.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本题考查基本逻辑表达,“整数x的绝对值大于5”时值为“假”,即整数x的绝对值小于等于5,也就是整数x要大于等于-5且要小于等于5。这里“且”用“与(&&)”表示,所以C语言表达式为:(x>-5)&&(x<5)。

27.类类

28.a=14a=14解析:逗号表达式的值是以逗号分隔的最后一个表达式的值。所以题目中的语句a=(3*5,a+4);就等价于a=a+4;。故本题输出结果是a=14。

29.1111000011110000解析:按位异或运算的一个重要应用是让某个整型变量的二进制位取反,0变成1,而1变成0。这只要设计这样一个位串信息,让要变反的位为1,不要改变的位为0,用这个位串信息与整型变量按位加就能得到希望的结果。要使字节的高4位取反,低4位不变,则需要位串信息是11110000。

30.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本题考查了函数的存储分类的概念。如果没有特别说明,函数的存储范围是从定义函数的位置到文件的结尾,如果其他文件想使用这个函数,需要用ginclude文件包含命令将定义函数的文件包含进来。

31.88解析:函数可以被递归调用,但是不能递归定义。有返回值的函数调用可以出现在表达式可以出现的任何地方。

32.k=5k=5解析:本题主要考查了函数的递归调用方法。g=0或g=1或g=2是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。

33.0。0。解析:表达式中将实型常量2.5和算术表达式1.25*(3.7+2.3)的值强制转换为整型后参与运算。

34.HowdoesheHowdoeshe解析:本题的关键在于表达式str1+strlen(str1)/2,注意“/”的用法,可得str1+13/2=str1+6。

35.j<4arr[i][j]arr[i][j]j<4\r\narr[i][j]\r\narr[i][j]解析:2*4矩阵实际上就是一个二维数组,结合本题应为arr[2][4],所以在第一个循环中应当填写“4”;第二个横线处是要判断当前的数组元素值是否大于max,所以应填写arr[i][j];第三个横线处是要将当前大于max的数组元素的值赋给变量max,所以应当填写“arr[i][j]”。

36.1818解析:设循环队列的容量为n。若rear>front,则循环队列中的元素个数为rear-front;若rear<front,则循环队列中的元素个数为n+(rear-from)。题中,front=16,rear=9,即rear>front,所以,循环队列中的元素个数为m+(rear-front)=25+(9-16)=18。

37.7

38.5.04c=35.0,4,c=3解析:scanf(掐式控制,地址列表),如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时应输入与这些字符相同的字符。所以此题中输入数据的形式是5.04,c=3。

39.1515解析:在函数f()中只有一条if语句,如果n不小于1,则返回f(a,n-1)+a[n-1];否则返回0。所以f(aa,5)返回f(aa,4)+aa[4],而f(aa,4)返回f(aa,3)+aa[3],……直到f(aa,0)返回0。故f(aa,5)实际返回值是0+aa[1]+aa[2]+aa[3]+aa[4]+aa[5],所以本题最终输出15。

40.4.0或44.0或4

41.C解析:若在定义二维数组的同时对数组进行初始化,可以不指定一维长度.但二维长度不能省略,因此选项C是错误的。如果数据不足,系统将自动给后面的元素自动补初值0。

42.A解析:理解复杂定义要掌握两点:一、右结合原则.本题中的定义char*line[5];等价于char*(line[5]);;二、自外向内分解成typedef语句。char*(line[5]);等价于typedefchar*A;Aline[5];其中A被typedef定义成字符指针的别名,然后line被定义成A的一维数组,即字符指针的一维数组。再来看看行指针的定义char(*line)[5];它应该被分解成typedefcharB[5];B*line;其中B被定义成包含5个元素的一维字符数组,然后line被定义成指向B的指针,即指向包含5个元素的一维字符数组的指针。所以两者切不可混淆了,后者的括号不能省略。故本题应该选择A。

43.D

44.C解析:本题主要对switch语句进行了考查。switch语句的执行过程为:进入switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各case都不匹配时,则执行de-fault后面的语句。本题中ch为字符'H',所以case'H'条件中的语句将被执行,由于没有break语句,所以case'C'后的语句也被执行,由于同样的缺少break语句,所以default后的语句也被执行

45.C解析:计算机语言分为低级语言、汇编语言和高级语言,C语言属于高级语言,但并不是说C语言比其他语言高级,所以选项A错误;除了低级语言外,其他各种语言都必须编译成能被计算机识别的二进制数才能执行,选项B错误;C语言出现在1972年到1973年间,并不是出现最晚的语言,所以选项D也是错误的。

46.B解析:fgets函数的作用是从指定的文件读入一个字符串。fgets(str,n,fp)冲的n为要求得到的字符的个数,但只从fp指向的文件输入n-1个字符,然后在最后加一个'\\0'字符,因此得到的字符串共有n个字符。

47.D解析:break语句除了能用于switch语句外,还可以用于循环语句中,因此选项A不正确。在switch语句中,可以使用default来执行所有case均失配时的分支,也可以不使用default,此时若所有case均失配则跳出switch,因此选项B不正确。在switch语句中,每个case的作用就是标出一个执行的起点,当符合某个case时,程序就从该case所标出的起点处开始执行,若没有break语句中断执行的话,程序会一直执行到switch的最后一条语句,而不是碰到下一个case就跳出switch。虽然break与case的配对使用会让所有case分支互不重叠条理明确,但不配对使用在C语言中也是允许的。因此选项C不正确,应该选择D。

48.D数据的逻辑结构是指数据元素之间的逻辑关系的数据结构。数据的存储结构则是数据的逻辑结构在计算机中的物理实现,有时也称作数据的物理结构。两者的区别是数据的逻辑结构只涉及到数据之间抽象的数学关系。存储结构则涉及到如何在计算机中通过对数据的物理存储进行组织来表达数据元素之间的逻辑关系。比如在线性表的顺序存储中是利用物理存储空间上的连续性来表达线性表中数据的前后件关系;在线性表的链式存储中是通过指针域构成的逻辑链条来表达数据的前后件关系。一般的,一种数据的逻辑结构对应的物理实现,即数据的存储结构不止一种。因此选项D正确。

49.B解析:要解答此题只要知道两个知识点:①在C语言中规定进行强制类型转换的格式是:(double)变量名;②在C语言中不允许给表达式赋值。

50.D解析:线性表的顺序存储是用一片连续的空间来存放数据元素,其特点是逻辑上相邻的元素在物理位置上也相邻。数据元素之间逻辑上的先后关系自动隐含在物理位置的相邻元素之中,因此,不需要另外开辟空间来保存元素之间的关系。

51.D

52.B解析:一个算法应当具有以下5个特性:有穷性;确定性;可行性;有零个或多个输入;由一个或多个输出.简洁性不属于这5个特性,所以本题应该选择B。

53.A解析:本题考查函数调用时的参数传递。函数的形参是函数定义时由用户定义的形式上的变量,实参是函数调用时,主调函数为被调函数提供的原始数据。

在函数调用时,实参和其所对应的形参分别占用不同的存储单元,彼此之间不影响。

54.BB.【解析】快速排序的基本思想是:从表中选取一个元素(如本题中的33),将表中小于此元素的移到前面,大于此元素的移到后面,结果把线性表分割成两部分(两个子表),此元素插入到其分界线的位置处。然后分别对两个子表再次分割……本题中33作为分割的中界线,第一趟排序后排在比它小的18、9、25、12后面。

55.D解析:*、/和%的优先级要高于+和—,同级别的运算符从左至右运算。所以本题首先计算5/2和5%2,虽然我们都知道5/2的结果应该是2.5,但C语言中规定了两个整数相除的结果为整数,而且是截尾取整,所以5/2的结果是2;5%2表示的是5除以2所得的余数,其结果为1。计算完后,表达式变为3.6-2+1.2+1,从左至右计算不难得出结果为3.8,故应该选择D。

56.B解析:在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。即栈是按照先进后出(FILO,FirstInLastOut)或后进先出(LIFO,LastInFirstOut)的原则组织数据的,因此,栈也被称为先进后出表或后进先出表。由此可以看出,栈具有记忆作用。答案B错在带链的栈的结点存储顺序与其逻辑顺序是可以不一致的。

57.B解析:本题函数的功能是计算并输出一个二维数组对角线及对角线下面的元素之和。

58.B解析:逻辑与(&&)优先于逻辑或(‖)优先于赋值运算符。由于逻辑运算符的结果为逻辑值,真为1,假为0,题目中的逻辑值为真。

59.A解析:头文件<string.h>是字符串处理函数对应的头文件,要想调用C语言的库函数时,都要在程序中嵌入该函数对应的头文件,否则无法使用库函数。

strcpy(s1,s2)把s2中的字符串复制到s1中,所以结果就为s2的长度。

60.D解析:本题中是一个含有两个结点的循环链表。

C语言中结构体的定义为:

struct结构题类型名

{

成员项表;

};

61.C

62.D本题中,scanf函数的格式控制没有空格,所以,对于选项A)、B)、c),输入的第一个空格会作为字符赋值给变量cl,而不会被解释成分隔符。

63.C

64.A软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,因此选项A)错误。程序调试的基本步骤有:错误定位、修改设计和代码以排除错误、进行回归测试以防止引进新的错误。程序调试通常称为Debu9,即排错。软件测试的基本准则包括:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、不可能实现穷举测试、妥善保存测试计划等文件。

65.D\r\n

66.B\n此题考查的是函数fun,fun(b,c)=5,然后fun(2*a,5)=fun(8,5)=6。

\n

67.C函数intf(intx)是一个递归函数调用,

68.Af函数是值传递,不会改变main函数中结构体a的值,所以选择A)。

69.D本题考查指针变量的赋值。**PP是定义一个指针变量,语句pp=&p是将pp指向指针P,*P和**PP都是指针P所指的内存空间的内容,即b的值。

70.D本题考查逻辑运算符的”短路”现象,由于k的值为0,表达式首先去求k++的值,因为表达式k++的值为0,系统完全可以确定逻辑表达式的运算结果总是为0,因此将跳过n++>2,不再对它进行求值,即k的值加1,n的值不变。

71.A外循环第一次i的值为1,内循环第一次j的初值为l,打印1*1=1;内循环第二次j的值为2,打印1$2=2;内循环第三次J的值为3,打印1}3=3,打印回车换行,退出内循环。外循环第二次i的值为2,内循环第一次j的初值为2,打印2*2=4;内循环第二次j的值为3,打印2。3=6,打印回车换行,退出内循环。外循环第三次i的值为3,内循环第一次j的初值为3,打印3*3=9,打印回车换行,退出内循环。

72.D调用缸函数后,实参数组名sl传给形参指针P,P也指向数组sl。m函数的功能是遍历字符数组中的所有字符,如果某一个字符是空格并且前一个字符是小写字母的话,就把前一个字符转换为大写。程序中语句P[i一1]=P[i—1]一ga’+-A‘;即P[i一1]=P[i一1]一32,意思是将P[i一1]中的字符转换为大写。因此D选项正确。

73.C任何一个C语言程序的执行都是从主函数main开始,至主函数main结束。故本题答案为C选项。

74.C

75.C结构体不能通过结构体名字整体赋值,通过结构体名.成员名的方式赋值。所以C选项错误。

76.C

77.D选项A)不符合c语言的语法要求;选项

B)中没有指定数组的大小;选项c)中数组大小不能用变量来指定。

78.D

79.B本题考查通过scanf函数输入数据时的格式控制问题。变量J的格式控制为”%2d”,即只接收输人数据的前两位,从第三位开始直到空格之间的输入都会被保存到变量Y中,因为Y为浮点型数据,所以输出结果为选项B。

80.AB项定义格式不对,tt[2]只有两个元素,C项缺少了结构体名,而结构体名不可少,D项一样缺少了结构体名。

81.(1)错误:intproc(charstr[])

\n正确:voidproc(charstr[])

\n(2)错误:str[j]=str[i++];

\n正确:str[j]=str[i];

\n【解析】由主函数中的函数调用可知,函数proc没有返回值。因此,“intproc(charstr[])”应改为“voidproc(charstr[])”;由函数proc可知,if语句块完成将字符串str中的第i个元素与第j个元素相交换。因此,“str[j]=str[i++];”应改为“str[j]=str[i];”。

\n

82.voidfun(char*a,intn){ inti=0,k=0; char*p,*t; p=t=a; /*开始时,p与t同时指向数组的首地址*/ while(*t==‘*’) /*用k来统计前导星号的个数*/ {k++;t++;} if(k>n) /*如果k大于n,则使p的前导保留n个星号,其后的字符依次存入数组a中*/ { while(*p) { a[i]=*(p+k-n); i++; p++; } a[i]=‘\0’; /*在字符串最后加上字符串结束标志*/ }}字符串中前导*号不能多于n个,多余的应删除。首先需要通过while循环统计字符串前导*号的个数,然后通过if条件语句完成前导*号的个数和n的比较,如果前导*号多于n个,则需要把n个*号和其余字符重新保留。2021-2022年江西省吉安市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若有定义语句:inta[3][6];,按在内存中的存放顺序,a数组的第10个元素是A.a[0][4]B.a[1][3]C.a[0][3]D.a[1][4]

2.

3.下列程序段的时间复杂度为()。A.O(3n)B.O(n)C.O(n2)D.O(log3n)

4.下列算法中,()算法用来求图中某顶点到其他顶点所有顶点之间的最短路径。

A.DijkstraB.FloyedC.PrimD.Kruskal

5.若有定义“intx,y;”,并已正确给变量赋值,则以下选项中与表达式“(x-y)?(x++):(y++)”中的条件表达式“(x-y)”等价的是()。

A.(x-y<0||x-y>0)B.(x-y<0)C.(x-y>0)D.(x-y==0)

6.有以下程序:

程序执行后的输出结果是()。

A.45B.50C.60D.55

7.有以下程序:#include<stdio,h>#include<string,h>struetSTU{intnam;floatTotalSeore;};voidf(strnctSTUp){structSTUs[2]={{20044,550},{20045,537}};p.num=s[1].num;p.TotalScore=s[1].TotalScore;main(){structSTUs[2]={{20041,703},{20042,580}};f(s[0]);printf("%d%3.Of\n",s[0].num,s[0].TotalSeore);}程序运行后的输出结果是()。

A.20045537B.20044550C.20042580D.20041703

8.有以下程序:#include<stdio.h>main(){FILE*pf;char*s1=“China”,*s2=“Beijing”;pf=fopen(“abc.dat”,“wb+”);fwrite(s2,7,1,pf);rewind(pf);/*文件位置指针回到文件开头*/fwrite(s1,5,1,pf);fclose(pf);}程序执行后,abc.dat文件的内容是()。

A.ChinaB.ChinangC.ChinaBeijingD.BeijingChina

9.设有如下定义:intx=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y));的输出结果是()。

A.1B.0C.4D.3

10.执行下列程序段后的输出结果是()。A.3B.2C.1D.4

11.某某二叉树的中序序列和后序序列正好相反,则该二叉树一定是______的二叉树

A.空或只有一个结点B.高度等于其结点数C.任一结点无左孩子D.任一结点无右孩子

12.下面描述中,不属于软件危机表现的是()A.软件过程不规范B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高

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

A.intB.floatC.doubleD.不确定

14.关于地址和指针,以下叙述正确的是()。

A.可以通过强制类型转换让char型指针指向double型变量

B.函数指针P指向一个同类型的函数f时,必须写成“p=&f;”

C.指针P指向一个数组f时,必须写成“P=&f;”

D.—个指针变量P可以指向自身

15.

16.下面叙述正确的是______。A.算法的执行效率与数据的存储结构无关

B.算法的空间复杂度是指算法程序中指令(或语句)的条数

C.算法的有穷性是指算法必须能在执行有限个步骤之后终止

D.以上三种描述都不对

17.设x=011050,则x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

18.若有定义语句:intX=10;,则表达式x-=x+X的值为A.-20B.-10C.0D.10

19.有以下函数:intfun(char*x,char*y)intn=0;while((*x==*y)&&*x!=‘\0’)∣x++;y++;n++;∣returnn;函数的功能是()。A.将y所指字符串赋给x所指存储空间

B.查找和y所指字符串中是否有‘\0’

C.统计x和y所指字符串中最前面连续相同的字符个数

D.统计x和y所指字符串中相同的字符个数

20.下列排序算法中,()算法可能会出现下面情况:初始数据有序时,花费的时间反而最多。

A.堆排序B.冒泡排序C.快速排序D.希尔排序

二、2.填空题(20题)21.有以下程序main(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序执行后的输出结果是

22.以下程序的输出结果是______。

main()

{inta=177;

printf("%o\n",a);

23.下面函数要求计算两个整数x,y之和,并通过形参返回该值,请填空。

add(intx,inty,【】z)

{【】=x+y;}

24.选择程序中的输入输出语句,以满足题目给定的输入输出数据形式。

main()

{inta;floatb;

【】

【】}

输入形式:3.52<空格>6<回车>

输出形式:a*b=21.12

25.在关系运算中,【】运算是对两个具有公共属性的关系所进行的运算。

26.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。

27.面向对象的模型中,最基本的概念是对象和______。

28.执行以下程序后的输出结果是【】。

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",a);

}

29.设二进制数A是00101101,若想通过异或运算ab使A的高4位取反,低4位不变,则二进制数B应是【】。

30.设有以下程序,为使之正确运行,请在横线中填入应包含的命令行。(注:try_me()函数在a:\myfile.txt中有定义。)

______

main()

{printf("\n");

try_me();

printf("\n");}

31.阅读下面程序,则程序的执行结果为【】。

#include"stdio.h"

fun(intk,int*p)

{inta,b;

if(k==1‖k==2)

*p=1;

else{fun(k-1,&a);

fun(k-2,&b);

*p=a+b;}}

main()

{intx;

fun(6,&x);

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

32.以下程序的运行结果是______。

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:

case2:return1;}

return(fib(g-1)+fib(g-2));}

main()

{longk;

k=fib(5);

printf("k=%51d\n",k);}

33.表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))的值是______。

34.下列程序中字符串中各单词之间有一个空格,则程序的输出结果是【】。

#include<string.h>

main()

{charstr1[]="Howdoyoudo",*p1=str1;

strcpy(str1+strlen(str1)/2,"eshe");

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

}

35.以下函数用于求出一个2×4矩阵中的最大元素值。

max_value(arr)

intarr[][4];

{

inti,j,max;

max=arr[O][0];

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

for(j=0;【】;j++)

if(【】>max)max=【】;

return(max);

}

36.在一个容量为25的循环队列中,若头指针front=16,尾指针rear=9,则该循环队列中共有上【】个元素。

37.执行以下for语句后,变量i的值是【】。

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

38.若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是【】。

intb,c;floata;

scanf("%f,%d,c=%d",&a,&b,&c)

39.以下程序运行后的输出结果是【】。

intf(inta[],intn)

{

if(n>=1)

returnf(a,n-1)+a[n-1];

else

return0;

}

main()

{

intaa[5]={1,2,3,4,5},s;

s=f(aa,5);

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

}

40.设x和y均为int型变量,且x=1,y=2,则表达式2.0+y/x的值为【】。

三、1.选择题(20题)41.以下错误的定义语句是()。

A.intx[][3]={{0},{1},{1,2,3}};

B.intx[4][3]={{1,2,3},{1,2,3),{1,2,3},{1,2,3}};

C.intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

D.intx[][3]={1,2,3,4};

42.若有语句:Char*line[5];,以下叙述中正确的是()。

A.定义line是一个数组,每个数组元素是一个基类型为Char的指针变量

B.定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组

C.定义line是一个指针数组,语句中的*号称为间址运算符

D.定义line是一个指向字符型函数的指针

43.C语言中()

A.不能使用do-while语句构成的循环

B.do-while语句构成的循环必须用break语句才能退出

C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环

D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环

44.运行下面程序时,从键盘输入字母H,则输出结果是main(){charch;ch=getchar();swimh(ch){case'H':printf("Hello!\n");case'G':printf("Goodmorning!\n");default:printf("Bye_Bye!\n");}}

A.Hello!

B.Hello!GoodMoring!

C.Hello!Goodmoming!Bye_ye!

D.Hello!Bye_ye!

45.以下叙述中正确的是______。

A.C语言比其他语言高级

B.C语言可以不用编译就能被计算机识别执行

C.C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D.C语言出现的最晚,具有其他语言的一切优点

46.C语言库函数fgets(str,n,fp)的功能是______。

A.从中指向的文件中读取长度n的字符串存入str指向的内存

B.从fp指向的文件中读取长度不超过n-1的字符串存入str指向的内存

C.从fp指向的文件中读取n个字符串存入str指向的内存

D.从str读取至多n个字符到文件fp

47.下列叙述中正确的是A.break语句只能用于switch语句

B.在switch语句中必须使用default

C.break语句必须与switch语句中的case配对使用

D.在switch语句中,不一定使用break语句

48.数据的存储结构是指()。

A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示

49.若变量a,b已正确定义,且b已正确赋值,则合法的语句是()。

A.b=double(b);B.++b;C.a=a++5;D.a=double(b);

50.下列描述中,不是线性表顺序存储结构特征的是

A.不便于插入和删除B.需要连续的存储空间C.可随机访问D.需另外开辟空间来保存元素之间的关系

51.在下列#include命令中,正确的一条是()

A.#include[string.h]

B.#include{math.h}

C.#include(stdio.h)

D.#include<stdio.h>

52.算法具有五个特性,以下选项中不属于算法特性的是_____。A.有穷性B.简洁性C.可行性D.确定性

53.在C语言中,函数调用时()。

A.实参和形参各占独立的存储单元

B.实参和形参共用存储单元

C.由系统自动确定实参和形参是否共用存储单元

D.由用户指定实参和形参是否共用存储单元

54.待排序的关键码序列为(33,18,9,25,67,82,53,95,12,70),要按关键码值递增的顺序排序,采取以第一个关键码为基准元素的快速排序法,第一趟排序后关键码33被放到第()个位置。

A.3B.5C.7D.9

55.表达式3.6-5/2+1.2+5%2的值是A.4.3B.4.8C.3.3D.3.8

56.下列关于栈的描述中错误的是()

A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针

57.以下程序的输出结果是______。main(){inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=0;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d\n",s);}

A.18B.19C.20D.21

58.设x,y,z,(均为整型变量,现有如下语句x=y=z=1;t=++x‖++y&&++z;,则执行这个语句后t的值为

A.2B.1C.0D.不定值

59.设已包含头文件<string.h>,下列程序段的运行结果是()。chars1[]={"ACDEF"};chars2[]="ABC";strcpy(s1,s2);printf("%d",strlen(s1));

A.3B.4C.6D.5

60.以下程序的输出结果是()structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf("%d%d\n"h[0].p)->x,(h[1].p)->y);}

A.12B.23C.14D.32

四、选择题(20题)61.

62.

设变量均已正确定义,

值10和20,为变量cl和c2赋字符X和Y。以下所示的输入形式中正确的是(注:口代表空格字符.()。

A.

B.

C.

D.

63.

64.下面叙述中错误的是()。

A.软件测试的目的是发现错误并改正错误

B.对被调试的程序进行“错误定位”是程序调试的必要步骤

C.程序调试通常也称为Debu9

D.软件测试应严格执行测试计划,排除测试的随意性

65.

66.有以下程序:

#include<stdio.h>

intfun(intX,inty)

{if(X!=y)return((x+y)/2);

elsereturn(x);

}

main()

{inta=4,b=5,c=6;

printf("%d/n",fun(2*a,fun(b,c)));

}

程序运行后的输入结果是()。

A.3

B.6

C.8

D.12

67.有以下程序:

程序的运行结果是()。

A.0B.9C.6D.8

68.有以下程序

69.若有定义和语句:

int*(*pp),*P,a=20,b=10;

pp=&p;p=&a;p=&b;printf("%d,%d\n",*P,**PP);

则输出结果是()。A.A.20,10B.20,20C.10,20D.10,10

70.有以下程序:

程序运行后的输出结果是()。

A.02B.13C.57D.12

71.有以下程序:

程序运行后的输出结果是()。

72.有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母:

程序运行后的输出结果是()。

A.abcdEFg!B.AbCdEFg!C.abcdEFG!D.aBcDEFG!

73.对于一个正常运行的C程序,以下叙述中正确的是()。

A.程序的执行总是从main函数开始,在程序的最后一个函数中结束

B.程序的执行总是从程序的第一个函数开始,在main函数结束.

C.程序的执行总是从main函数开始、

D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束

74.

75.设有定义:“struct{charmarkp[l2];intnuml;doublenum2;}tl,t2;”,若变量均已正确赋初值,则以下语句中错误的是()。

A.t1=t2;

B.t2.num1=tl.numl;

C.t2.mark=tl.mark;

D.t2.num2=tl.num2;

76.

77.下列选项中,能正确定义数组的语句是()。

A.

B.

C.

D.

78.

79.有以下程序段:

当执行上述程序段,从键盘上输入555667777abc后,y的值为()。A.55566.0B.566.0C.7777.0D.566777.0

80.设有如下说明

typedefstruct

{intnumber;charclass;doublescore;}student;

则以下选项中,能正确定义结构体数组并赋初值的语句是()。

A.studenttt[2]={{189,’A’,62},{190,’B’,75}};

B.studenttt[2]={189,’"A",62,190,"B",75};

C.structtt[2]={{189,’A’},{190,’B’}};

D.structtt[2]={{189,"A",62.5},{190,"B",75.0}};

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCIl码升序排序后输出。

例如,输入opdye,则应输出deopy。

请修改程序中的错误,使它能得到正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include%string.h>

#include%stdlib.h>

#include<conio.h>

#include<stdio.h>

//****found****

intproc(charstr[])

{

charC;

unsignedi,j;

for(i=0;i<strlen(str)-1;i++)

for(j=i+1;j<strlen(str);j4-+)

if(str[i]>str[j])

{

c=str[j]:

//****found****

str[j]=str[i++];

str[i]=C;

}

}

voidmain

{

charst/[81];

system("CLS");

printf("\nPleaseenteracharacter

string:");

gets(str);

printf("\nknBeforesorting:\n%s",str);

proc(str);

printf("\nAftersortingdecendingly:\n

%S",str);

}

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,规定输入的字符串中只包含字母和*号。请编写函数其功能是使字符串的前导*号不得多于n个,若多于n个,则删除多余的*号;若少于或等于n个,则不做处理。字符串中间和尾部的*号不删除。例如,字符串中的内容为“*******A*BC*DEF*G****”,若n的值为4,删除后,字符串中的内容应当是“****A*BC*DEF*G****”;若n的值为8,则字符串中的内容仍为“*******A*BC*DEF*G****”。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#include<conio.h>voidfun(char*a,intn){}voidmain(){ chars[81];intn; printf(“Enterastring:\n”); gets(s); printf(“Entern:”); scanf(“%d”,&n); fun(s,n); printf(“Thestringafterdeleted:\n”); puts(s);}

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论