2022年河南省郑州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2022年河南省郑州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2022年河南省郑州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2022年河南省郑州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2022年河南省郑州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

2022年河南省郑州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(12题)1.无向图中一个顶点的度是指图中与该顶点相邻接的顶点数。若无向图G中的顶点数为n,边数为e,则所有顶点的度数之和为()

A.n*eB.n+eC.2nD.2e

2.若有定义:“inta,b;”,通过语句“scan[("%d;%d".,&a,&b);”,能把整数3赋给变量a,5赋给变量b的输入数据是()。

A.35B.3,5C.3;5D.35

3.有以下程序:

程序的运行结果是()。

A.y=0B.y=1C.y=2D.y=3

4.在ASC算法team日常开发中,常常面临一些数据结构的抉择,令人纠结。目前大家在策划一个FBI项目(FastBinaryIndexing),其中用到的词汇有6200条,词汇长度在10-15之间,词汇字符是英文字母,区分大小写。请在下面几个数据结构中选择一个使检索速度最快的()

A.二叉搜索树,比较函数开销:1次运算/每字符

B.哈希表,hash算法开销:10次运算/每字符

C.链表,比较函数开销:1次运算/每字符

D.TRIE树,寻找子节点开销:1次运算/每字符

5.

6.为了提高软件模块的独立性,模块之间最好是()。

A.控制耦合B.公共耦合C.内容耦合D.数据耦合

7.

8.目前以比较为基础的内部排序方法中,其比较次数与待排序的记录的初始排列状态无关的是()

A.插入排序B.快速排序C.二分插入排序D.冒泡排序

9.以下关于注释的叙述中错误的是()。

A.注释的边界符号“/”和“*”之间不允许加入空格

B.C语言允许注释出现在程序中任意合适的地方

C.注释的内容仅用于阅读,对程序的运行不起作用

D.注释的边界符号“/*”和“*/”必须成对出现且可以嵌套

10.二叉树中第5层上的结点个数最多为________

A.8B.15C.16D.32

11.设有以下说明语句

structex

{intx;floaty;charz;}example;

则下面的叙述中不正确的是

A.struct结构体类型的关键字

B.example是结构体类型名

C.x,y,z都是结构体成员名

D.structex是结构体类型名

12.在一个C语言源程序文件中所定义的全局变量,其作用域为()。

A.所在文件的全部范围B.所在程序的全部范围C.所在函数的全部范围D.由具体定义位置和extern说明来决定范围

二、2.填空题(12题)13.若有以下程序

main()

{inta=4,b=3,c=5,t=0;

if(a<b)t=a;a=b;b=t;

if(a<c)t=a;a=c;c=t;

pfintf("%d%d%d\n",a,b,c);

}

执行后输出结果是【】。

14.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>。则输出结果是______。

#include<stdio,h>

main()

{

chara,b;

a=geCchar();scanf("%d“,&b);

a=a-'A'+‘0';b=b*2;

printf('%c%c\n",a,b);

}

15.设有下列宏定义:#defineA2

#defineBA+3

则执行赋值语句;t=B*2;t为int型变量后的值是______。

16.设Y是int型变量,请写出判断Y为奇数的关系表达式【】。

17.下面pi函数的功能是根据以下公式返回满足精度要求的π的值。请根据以下算法要求补足所缺语句。

doublepi(doubleeps)

{doubles=0.0,t=1.0;

intn;

for(【】;t>eps;n++)

{s+=t;

t=n*t/(2*n+1);

}

return(2.0*【】);

}

18.与结构化需求分析方法相对应的是【】方法。

19.#define命令出现在程序中函数的外面,宏名的有效范围为______。

20.以下程序段的输出结果是【】。

inta=1234;

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

21.设i,j,k均为int型变量,则执行完下面的for语句后,k的值为【】。

for(i=0,j=10;i<=j;i++,j--)k=i+j;

22.计算机病毒除有破坏性、潜伏性和激发性外,还有一个最明显的特性是【】

23.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。

#include<string.h>

main()

{inti,j,【】;charstr[]={"1234567"};

for(i=0,j=strlen(str)【】;i<j;i++,j--)

{k=str[i];str[i]=str[j];str[j]=k;}

printf("%s\n",str);}

24.以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值,请填空。

voidfun(int,int,int(*)[4],int*);

main()

{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;

fun(3,4,a,b);

for(1=0;i<3;i++)printf("%4d",b[i]);

printf("\n");

}

voidfun(intm,intn,intar[][4],int*bar)

{inti,j,x;

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

{x=ar[i][0];

for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

【】=x;

}

}

三、3.程序设计题(10题)25.请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。

例如,在主函数中从键盘给n输入20后,输出为:s=0.583333。注意:要求n的值不大于100。

部分源程序在文件PROGl.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

26.请编写一个函数fun(),它的功能是:找出一维数组元素中最大的值和它所在的下标,最大值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。

主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<stdlib.h>

#include<stdio.h>

voidfun(inta[],intn,int*max,int*d)

{

}

main()

{

inti,x[20],max,index,n=10;

randomize();

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

{

x[i]=rand()%50;

printf("%4d",x[i]);

/*输出一个随机数组*/

}

printf("\n");

fun(x,n,&max,&index);

printf("Max=%5d,Index=%4d\n",max,index);

}

27.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。

[注意]部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

[试题源程序]

#include<stdio.h>

#defineN16

typedefstruct

{

charnum[i0];

ints;

}STREC;

intfun(STRECa[])

{

}

main()

{

STRECs[N]={

{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},

{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},

{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}

};

inti;

FILE*out;

fun(s);

printf("Thedataaftersorted:\n");

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

{

if((i)%4==0)

printf("\n");

printf("%s%4d",s[i].num,s[i].s);

}

printf("\n");

}

28.请编一个函数floatfun(doubleh),函数的功能是对变量h中的值保留两位小数,并对第三位进行四舍五入(规定h中的值为正数)。

例如:若h值为8.32433,则函数返回8.32:若h值为8.32533,则函数返回8.33。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数。fun的花括号中填入所编写的若干语句。

试题程序:

#include<stdio.h>

#include<conio.h>

floatfun(floath)

{

}

main()

{

floata;

clrscr();

printf("Entera:");

scanf("%f",&a);

printf("Theoriginaldatais:");

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

printf("Theresult:%f\n",fun(a));

}

29.m个人的成绩存放在score数组中,请编写函数fun(),它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。

例如,当score数组中的数据为10,20,30,40,50,60,70,80,90时,函数返回的人数应该是4,below中的数据应为10,20,30,40。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

intfun(intscore[],intm,intbelow[])

{

}

main()

{

ihti,n,below[9];

intscore[9]={10,20,30,40,50,60,70,

80,90};

clrscr();

n=fun(score,9,below);

printf("\nBelowtheaveragescoreare:");

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

printf("%d",below[i]);

}

30.请编写程序fun,函数的功能是:实现B=A+Aˊ,即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。

例如,输入下面的矩阵:其转置矩阵为:

123147

456258

789369

程序输出:

2610

61014

101418

注意:部分源程序在文件PROGl.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

31.函数fun的功能是:将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。

例如,若s所指字符串中的内容为:“ABCDEFGl2345”,其中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必需删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是:“135”。

注意:部分源程序存在文件PROGl.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

32.请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。

例如:二维数组中的值为:

13579

29994

69998

13570

则函数值为61。

注意:部分源程序存在文件PROGl.C文件中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

33.请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):

程序运行后,如果输入精度0.0005,则程序输出为3.140578。

注意:部分源程序存在文件PROGl.C文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

34.请编写函数fun,其功能是:计算并输出

例如,在主函数中从键盘给n输入20后,输出为:s=534.188884。

注意:要求n的值大于1但不大于100。

部分源程序在文件PROGl.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

四、单选题(0题)35.有三个关系R、S和T如下:由关系R和S得到关系T的操作是()。A.自然连接B.交C.除D.并

五、单选题(0题)36.在一个有头结点的链队列中,假设f和r分别为队首和队尾指针,则插入s所指的结点的运算是()。

A.f->next=s;f=s;

B.r->next=s;r=s;

C.s->next=r;r=s;

D.s->next=f;f=s;

六、单选题(0题)37.以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是

A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp)

参考答案

1.D

2.C\n在输入时必须遵守scanf函数中的格式才能正确地赋值给相应的变量,由于scanf函数为“%d;%d”,所以在输入时要输入3;5,答案为C。

\n

3.D在程序中指针变量P初始指向a[3],执行P减1后,P指向a[2],语句y=*P的作用是把a[2]的值赋给变量y,所以输出为y=3。

4.D

5.A

6.D解析:耦合性与内聚性是模块独立性的两个定性标准,是互相关联的。在程序设计中,各模块间的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚、低耦合,有利于提高模块的独立性。

7.B

8.C

9.D在编写程序时可以在程序中加入注释。在添加注释时,注释内容必须放在符号“/*”和“*/”之间,“/*”和“*/”必须成对出现,“/*”与“*/”之间不可以有空格,选项A正确;注释可以用英文,可以用中文,可以出现在程序中任意合适的地方,选项B正确;注释部分只适用于阅读,对程序的运行不起作用,选项C正确;使用“/*”和“*/”的注释之间不可再嵌套“/*”和“*/”,选项D错误。故本题答案为D选项。

10.C

11.B解析:本题中,structex是结构体类型名,ex-ample是结构体变量名。

12.D

\n全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。当全局变量定义在后,引用它的函数在前时,应该在引用它的函数中用extern对此全局变量进行说明,以便通知编译程序该变量是一个已在外部定义了的全局变量,这时全局变量的作用域从extern说明处起,延伸到该函数末尾。

\n

13.503503解析:如果if后面的条件为真,只执行其后的一条语句或一条复合语句,如果if后面的条件为假,只执行else后面的一条语句或一条复合语句。先判断表达式“a<b”为假,不执行“t=a”,但执行“a=b;b=t;”,a的值为3,b的值为0。在判断表达式“a<c”,值为真,所以执行后面的3条语句“t=a;a=c;c=t”,结果a的值为5,c的值为3,所以最后输出的结果为5、0和3。

14.1B1B解析:在C语古中,字符型变量可以看作整型变量来对待,与整型所不同的是字符型变量在内存中只占1个字节,而整型是2个字节.字符型变量中所有的数值是它所表示字符的ASCII码值.ASCII码中的一些相关字符是顺序排列的,如'0',的ASCII码值为48,'1'为49以此类推一直到'9';'A'的ASCII码值为65,'B'为66以此类推一直到'Z'。本题程序首先定义了两个字符型变量a和b,然后分别使用getchar()和scanf()函数读取输入的字符'B'和十进制整数33到a和b中,因为a-'A'+'0'等于,'B'-'A'+'0'='1'+'0'='1',而b*2等于33*2=66'A'+1='B'。所以最终输出的结果是:1B。

15.88解析:本题考查带参数的宏定义及相关运算.运算过程为:t=B*2=A+3*2=2+3*2=8。

16.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判断变量是否为奇数可以用变量与2取模,判断结果是为1或下为0。本题具体做法如下:Y%2=1或Y%2!=0。

17.n=1s

18.结构化设计结构化设计解析:与结构化需求分析方法相对应的是结构化设计方法。结构化设计就是采用最佳的可能方法设计系统的各个组成部分以及各个成分之间的内部联系的技术。

19.从定义到本源文件结束从定义到本源文件结束解析:C语言规定,宏名的有效范围为从定义宏到本源程序结束。

20.12341234解析:在%与格式符之间插入一个整型数来指定输出宽度,当指定宽度小于输出数的实际宽度时,则按实际宽度输出。

21.1010解析:该for语句以i为0,j为10作为初始值,循环条件是i<=j,每次循环后i增1、j减1,循环体是将i与j的和赋给k,这样变量k将保存的是最后一次赋给它的值。一次循环后i为1、j为9,二次循环后i为2、j为8,……,五次循环后i为5、j为5,第六次循环,将i与j的和10赋给k后,i为6、j为4,循环结束,k值为10。

22.传染性或传播性传染性或传播性

23.k-1k\r\n-1解析:颠倒一个字符串中的字符,就是首尾对应的元素两两交换。简单地可用两个游标变量i和j,i是前端元素的下标,j是后端元素的下标,交换以这两个变量值为下标的元素str[i]和str[j]。开始时,i的值为0,j的值为字符串末元素的下标(字符串长度减1)。每次交换后,i增1,j减1。继续交换的条件是str[i]还位于str[j]的前面,即i<j。字符串末元素的下标是它的长度减1,所以在第二个空框处应填入-1。程序为了交换str[i]和str[j],使用了变量k,该变量应在程序的变量定义部分中一起定义,所以在第一个空框处应填入k。

24.bar[i]bar[i]解析:fun函数中的内层for循环,求出了每一行中的最大值x,内循环结束后就需要把最大值放在存储每行最大值的数组bar[i]中,因此应填bar[i]。

25.

解析:该程序功能是计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。解题过程首先求出能被5或9整除的所有自然数,然后在此基础上求得这些数的倒数之和。

26.voidfun(inta[]intnint*maxint*d){inti;*max=a[0];*d=0;for(i=0;i<n;i++)/*将最大的元素放入指针max所指的单元最大元素的下标放入指针d所指的单元*/if(*max<a[i]){*max=a[i];*d=i;}}voidfun(inta[],intn,int*max,int*d)\r\n{\r\ninti;\r\n*max=a[0];\r\n*d=0;\r\nfor(i=0;i<n;i++)/*将最大的元素放入指针max所指的单元,最大元素的下标放入指针d所指的单元*/\r\nif(*max<a[i])\r\n{*max=a[i];*d=i;}\r\n}解析:该程序直接使用形参max和d,由于它们都是指针变量,所以要引用它所指向的变量时要对它进行指针运算,也即*号运算。

27.#include<stdi0.h>#defineN16typedefstruct{charnum[10];ints;}STREC;intfun(STRECa[]){STRECtmp;intij;for(i=0;i<N;i++)for(j=i+1;j<N;J++)if(a[i].s<a[j].S){tmp=a[i];a[i]=a[j];a[j]=tmp;}}#include<stdi0.h>\r\n#defineN16\r\ntypedefstruct\r\n{\r\ncharnum[10];\r\nints;\r\n}STREC;\r\nintfun(STRECa[])\r\n{\r\nSTRECtmp;\r\ninti,j;\r\nfor(i=0;i<N;i++)\r\nfor(j=i+1;j<N;J++)\r\nif(a[i].s<a[j].S)\r\n{\r\ntmp=a[i];\r\na[i]=a[j];\r\na[j]=tmp;\r\n}\r\n}

28.floatfun(floath){longt;t=(h*1000+5)/10;/*单精度数h乘以1000后再加5相当十对h中的第三位小数进行四舍五入除以10后将其赋给一个长整型数时就把第三位小数后的数全部截去*/return(float)t/100;/*除以100保留2位小数*/floatfun(floath)\r\n{\r\nlongt;\r\nt=(h*1000+5)/10;/*单精度数h乘以1000后再加5,相当十对h中的第三位小数进行四舍五入\r\n除以10后将其赋给一个长整型数时就把第三位小数后的数全部截去*/\r\nreturn(float)t/100;/*除以100,保留2位小数*/解析:注意本题要求h的值真正发生了四舍五入,而不是为了输出,即不能用printf(“%7.2f”,h)来直接得到结果。由于单精度数h乘以1000后再加5,此时相当于对h中的第三位小数进行四舍五入,再将其赋给一个长整型数时就把第三位小数后的数全部截去。注意在return中要将其中一个数转成浮点型数。

29.intfun(intscore[]intmintbelow[]){intij=0;floatav=0.0;for(i=0;i<m;i++)av=av+score[i]/m;/*求平均值*/for(i=0;i<m;i++)if(score[i]<av)/*如果分数低于平均分则将此分数放入below数组中*/below[j++]=score[i];returnj;/*返回低于平均分的人数*/}intfun(intscore[],intm,intbelow[])\r\n{\r\ninti,j=0;\r\nfloatav=0.0;\r\nfor(i=0;i<m;i++)\r\nav=av+score[i]/m;/*求平均值*/\r\nfor(i=0;i<m;i++)\r\nif(score[i]<av)/*如果分数低于平均分,则将此分数放入below数组中*/\r\nbelow[j++]=score[i];\r\nreturnj;/*返回低于平均分的人数*/\r\n}解析:该题第1个循环的作用是求出平均分av,第2个循环的作用是找出低于平均分的成绩并存入below数组中。

30.

解析:该程序功能是实现B=A+Aˊ,即把矩阵A加上A的转置。其中,所谓矩阵的转置,是把行中的数据与列中的数据进行对调。解题过程中首先求得已给的矩阵的转置,然后在循环过程中对矩阵与该矩阵的转置对应元素求和。

31.

解析:该程序功能是将字符串中除了下标为奇数、ASCII值也为奇数的字符外,其余的全都删除。解题过程利用if判断表达式选择符合条件的字符,然后将符合条件的字符放入指定的字符串。

32.

解析:该程序功能是求出二维数组周边元素之和。其中周边元素是指数组的最上和最下的两行,最左和最右的两列。数组第一行元素的行下标为0,最后一行元素的行下标为M-1,第一列的列下标为0,最后一列的列下标为N-1。

33.

解析:进入fun函数,根据前面的分析:(1)根据题意,需要把每一项累加起来;若每一累加项的值放在t中,后一项等于前一项累加项的值乘以n/(2*n+1)来求得。

(2)根据公式将求到的π/2的值放到变量pi中,每累加一次,n的值就增加1,以便求下一个累加项,不断重复,直到满足题目中的精度要求。

34.

解析:该程序功能是对题干中给出的多项式的求解。根据题干中给出的数列,首先推出每一项的表达式,然后再对多项式进行累加求和。

35.C由图所知,其中,C中只有一个属性,是除操作。

36.B

37.D解析:本题考查的是文件操作函数.题目中fseek(fp,0L,SEEK_SET)的作用将文件指针定位到文件开始。feof(fp)的作用是判断文件指针是否已到文件结尾,因此选项A不对。ftell(fp)的作用是获取当前文件指针的位置,因此选项B不对。fgetc(fp)的作用是从文件中读取一个字节,因此选项C不对。rewind(中)的作用是将文件指针重定位到文件开头,所以应该选择D。2022年河南省郑州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(12题)1.无向图中一个顶点的度是指图中与该顶点相邻接的顶点数。若无向图G中的顶点数为n,边数为e,则所有顶点的度数之和为()

A.n*eB.n+eC.2nD.2e

2.若有定义:“inta,b;”,通过语句“scan[("%d;%d".,&a,&b);”,能把整数3赋给变量a,5赋给变量b的输入数据是()。

A.35B.3,5C.3;5D.35

3.有以下程序:

程序的运行结果是()。

A.y=0B.y=1C.y=2D.y=3

4.在ASC算法team日常开发中,常常面临一些数据结构的抉择,令人纠结。目前大家在策划一个FBI项目(FastBinaryIndexing),其中用到的词汇有6200条,词汇长度在10-15之间,词汇字符是英文字母,区分大小写。请在下面几个数据结构中选择一个使检索速度最快的()

A.二叉搜索树,比较函数开销:1次运算/每字符

B.哈希表,hash算法开销:10次运算/每字符

C.链表,比较函数开销:1次运算/每字符

D.TRIE树,寻找子节点开销:1次运算/每字符

5.

6.为了提高软件模块的独立性,模块之间最好是()。

A.控制耦合B.公共耦合C.内容耦合D.数据耦合

7.

8.目前以比较为基础的内部排序方法中,其比较次数与待排序的记录的初始排列状态无关的是()

A.插入排序B.快速排序C.二分插入排序D.冒泡排序

9.以下关于注释的叙述中错误的是()。

A.注释的边界符号“/”和“*”之间不允许加入空格

B.C语言允许注释出现在程序中任意合适的地方

C.注释的内容仅用于阅读,对程序的运行不起作用

D.注释的边界符号“/*”和“*/”必须成对出现且可以嵌套

10.二叉树中第5层上的结点个数最多为________

A.8B.15C.16D.32

11.设有以下说明语句

structex

{intx;floaty;charz;}example;

则下面的叙述中不正确的是

A.struct结构体类型的关键字

B.example是结构体类型名

C.x,y,z都是结构体成员名

D.structex是结构体类型名

12.在一个C语言源程序文件中所定义的全局变量,其作用域为()。

A.所在文件的全部范围B.所在程序的全部范围C.所在函数的全部范围D.由具体定义位置和extern说明来决定范围

二、2.填空题(12题)13.若有以下程序

main()

{inta=4,b=3,c=5,t=0;

if(a<b)t=a;a=b;b=t;

if(a<c)t=a;a=c;c=t;

pfintf("%d%d%d\n",a,b,c);

}

执行后输出结果是【】。

14.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>。则输出结果是______。

#include<stdio,h>

main()

{

chara,b;

a=geCchar();scanf("%d“,&b);

a=a-'A'+‘0';b=b*2;

printf('%c%c\n",a,b);

}

15.设有下列宏定义:#defineA2

#defineBA+3

则执行赋值语句;t=B*2;t为int型变量后的值是______。

16.设Y是int型变量,请写出判断Y为奇数的关系表达式【】。

17.下面pi函数的功能是根据以下公式返回满足精度要求的π的值。请根据以下算法要求补足所缺语句。

doublepi(doubleeps)

{doubles=0.0,t=1.0;

intn;

for(【】;t>eps;n++)

{s+=t;

t=n*t/(2*n+1);

}

return(2.0*【】);

}

18.与结构化需求分析方法相对应的是【】方法。

19.#define命令出现在程序中函数的外面,宏名的有效范围为______。

20.以下程序段的输出结果是【】。

inta=1234;

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

21.设i,j,k均为int型变量,则执行完下面的for语句后,k的值为【】。

for(i=0,j=10;i<=j;i++,j--)k=i+j;

22.计算机病毒除有破坏性、潜伏性和激发性外,还有一个最明显的特性是【】

23.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。

#include<string.h>

main()

{inti,j,【】;charstr[]={"1234567"};

for(i=0,j=strlen(str)【】;i<j;i++,j--)

{k=str[i];str[i]=str[j];str[j]=k;}

printf("%s\n",str);}

24.以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值,请填空。

voidfun(int,int,int(*)[4],int*);

main()

{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;

fun(3,4,a,b);

for(1=0;i<3;i++)printf("%4d",b[i]);

printf("\n");

}

voidfun(intm,intn,intar[][4],int*bar)

{inti,j,x;

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

{x=ar[i][0];

for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

【】=x;

}

}

三、3.程序设计题(10题)25.请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。

例如,在主函数中从键盘给n输入20后,输出为:s=0.583333。注意:要求n的值不大于100。

部分源程序在文件PROGl.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

26.请编写一个函数fun(),它的功能是:找出一维数组元素中最大的值和它所在的下标,最大值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。

主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<stdlib.h>

#include<stdio.h>

voidfun(inta[],intn,int*max,int*d)

{

}

main()

{

inti,x[20],max,index,n=10;

randomize();

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

{

x[i]=rand()%50;

printf("%4d",x[i]);

/*输出一个随机数组*/

}

printf("\n");

fun(x,n,&max,&index);

printf("Max=%5d,Index=%4d\n",max,index);

}

27.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。

[注意]部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

[试题源程序]

#include<stdio.h>

#defineN16

typedefstruct

{

charnum[i0];

ints;

}STREC;

intfun(STRECa[])

{

}

main()

{

STRECs[N]={

{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},

{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},

{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}

};

inti;

FILE*out;

fun(s);

printf("Thedataaftersorted:\n");

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

{

if((i)%4==0)

printf("\n");

printf("%s%4d",s[i].num,s[i].s);

}

printf("\n");

}

28.请编一个函数floatfun(doubleh),函数的功能是对变量h中的值保留两位小数,并对第三位进行四舍五入(规定h中的值为正数)。

例如:若h值为8.32433,则函数返回8.32:若h值为8.32533,则函数返回8.33。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数。fun的花括号中填入所编写的若干语句。

试题程序:

#include<stdio.h>

#include<conio.h>

floatfun(floath)

{

}

main()

{

floata;

clrscr();

printf("Entera:");

scanf("%f",&a);

printf("Theoriginaldatais:");

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

printf("Theresult:%f\n",fun(a));

}

29.m个人的成绩存放在score数组中,请编写函数fun(),它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。

例如,当score数组中的数据为10,20,30,40,50,60,70,80,90时,函数返回的人数应该是4,below中的数据应为10,20,30,40。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

intfun(intscore[],intm,intbelow[])

{

}

main()

{

ihti,n,below[9];

intscore[9]={10,20,30,40,50,60,70,

80,90};

clrscr();

n=fun(score,9,below);

printf("\nBelowtheaveragescoreare:");

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

printf("%d",below[i]);

}

30.请编写程序fun,函数的功能是:实现B=A+Aˊ,即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。

例如,输入下面的矩阵:其转置矩阵为:

123147

456258

789369

程序输出:

2610

61014

101418

注意:部分源程序在文件PROGl.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

31.函数fun的功能是:将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。

例如,若s所指字符串中的内容为:“ABCDEFGl2345”,其中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必需删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是:“135”。

注意:部分源程序存在文件PROGl.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

32.请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。

例如:二维数组中的值为:

13579

29994

69998

13570

则函数值为61。

注意:部分源程序存在文件PROGl.C文件中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

33.请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):

程序运行后,如果输入精度0.0005,则程序输出为3.140578。

注意:部分源程序存在文件PROGl.C文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

34.请编写函数fun,其功能是:计算并输出

例如,在主函数中从键盘给n输入20后,输出为:s=534.188884。

注意:要求n的值大于1但不大于100。

部分源程序在文件PROGl.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

四、单选题(0题)35.有三个关系R、S和T如下:由关系R和S得到关系T的操作是()。A.自然连接B.交C.除D.并

五、单选题(0题)36.在一个有头结点的链队列中,假设f和r分别为队首和队尾指针,则插入s所指的结点的运算是()。

A.f->next=s;f=s;

B.r->next=s;r=s;

C.s->next=r;r=s;

D.s->next=f;f=s;

六、单选题(0题)37.以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是

A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp)

参考答案

1.D

2.C\n在输入时必须遵守scanf函数中的格式才能正确地赋值给相应的变量,由于scanf函数为“%d;%d”,所以在输入时要输入3;5,答案为C。

\n

3.D在程序中指针变量P初始指向a[3],执行P减1后,P指向a[2],语句y=*P的作用是把a[2]的值赋给变量y,所以输出为y=3。

4.D

5.A

6.D解析:耦合性与内聚性是模块独立性的两个定性标准,是互相关联的。在程序设计中,各模块间的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚、低耦合,有利于提高模块的独立性。

7.B

8.C

9.D在编写程序时可以在程序中加入注释。在添加注释时,注释内容必须放在符号“/*”和“*/”之间,“/*”和“*/”必须成对出现,“/*”与“*/”之间不可以有空格,选项A正确;注释可以用英文,可以用中文,可以出现在程序中任意合适的地方,选项B正确;注释部分只适用于阅读,对程序的运行不起作用,选项C正确;使用“/*”和“*/”的注释之间不可再嵌套“/*”和“*/”,选项D错误。故本题答案为D选项。

10.C

11.B解析:本题中,structex是结构体类型名,ex-ample是结构体变量名。

12.D

\n全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。当全局变量定义在后,引用它的函数在前时,应该在引用它的函数中用extern对此全局变量进行说明,以便通知编译程序该变量是一个已在外部定义了的全局变量,这时全局变量的作用域从extern说明处起,延伸到该函数末尾。

\n

13.503503解析:如果if后面的条件为真,只执行其后的一条语句或一条复合语句,如果if后面的条件为假,只执行else后面的一条语句或一条复合语句。先判断表达式“a<b”为假,不执行“t=a”,但执行“a=b;b=t;”,a的值为3,b的值为0。在判断表达式“a<c”,值为真,所以执行后面的3条语句“t=a;a=c;c=t”,结果a的值为5,c的值为3,所以最后输出的结果为5、0和3。

14.1B1B解析:在C语古中,字符型变量可以看作整型变量来对待,与整型所不同的是字符型变量在内存中只占1个字节,而整型是2个字节.字符型变量中所有的数值是它所表示字符的ASCII码值.ASCII码中的一些相关字符是顺序排列的,如'0',的ASCII码值为48,'1'为49以此类推一直到'9';'A'的ASCII码值为65,'B'为66以此类推一直到'Z'。本题程序首先定义了两个字符型变量a和b,然后分别使用getchar()和scanf()函数读取输入的字符'B'和十进制整数33到a和b中,因为a-'A'+'0'等于,'B'-'A'+'0'='1'+'0'='1',而b*2等于33*2=66'A'+1='B'。所以最终输出的结果是:1B。

15.88解析:本题考查带参数的宏定义及相关运算.运算过程为:t=B*2=A+3*2=2+3*2=8。

16.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判断变量是否为奇数可以用变量与2取模,判断结果是为1或下为0。本题具体做法如下:Y%2=1或Y%2!=0。

17.n=1s

18.结构化设计结构化设计解析:与结构化需求分析方法相对应的是结构化设计方法。结构化设计就是采用最佳的可能方法设计系统的各个组成部分以及各个成分之间的内部联系的技术。

19.从定义到本源文件结束从定义到本源文件结束解析:C语言规定,宏名的有效范围为从定义宏到本源程序结束。

20.12341234解析:在%与格式符之间插入一个整型数来指定输出宽度,当指定宽度小于输出数的实际宽度时,则按实际宽度输出。

21.1010解析:该for语句以i为0,j为10作为初始值,循环条件是i<=j,每次循环后i增1、j减1,循环体是将i与j的和赋给k,这样变量k将保存的是最后一次赋给它的值。一次循环后i为1、j为9,二次循环后i为2、j为8,……,五次循环后i为5、j为5,第六次循环,将i与j的和10赋给k后,i为6、j为4,循环结束,k值为10。

22.传染性或传播性传染性或传播性

23.k-1k\r\n-1解析:颠倒一个字符串中的字符,就是首尾对应的元素两两交换。简单地可用两个游标变量i和j,i是前端元素的下标,j是后端元素的下标,交换以这两个变量值为下标的元素str[i]和str[j]。开始时,i的值为0,j的值为字符串末元素的下标(字符串长度减1)。每次交换后,i增1,j减1。继续交换的条件是str[i]还位于str[j]的前面,即i<j。字符串末元素的下标是它的长度减1,所以在第二个空框处应填入-1。程序为了交换str[i]和str[j],使用了变量k,该变量应在程序的变量定义部分中一起定义,所以在第一个空框处应填入k。

24.bar[i]bar[i]解析:fun函数中的内层for循环,求出了每一行中的最大值x,内循环结束后就需要把最大值放在存储每行最大值的数组bar[i]中,因此应填bar[i]。

25.

解析:该程序功能是计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。解题过程首先求出能被5或9整除的所有自然数,然后在此基础上求得这些数的倒数之和。

26.voidfun(inta[]intnint*maxint*d){inti;*max=a[0];*d=0;for(i=0;i<n;i++)/*将最大的元素放入指针max所指的单元最大元素的下标放入指针d所指的单元*/if(*max<a[i]){*max=a[i];*d=i;}}voidfun(inta[],intn,int*max,int*d)\r\n{\r\ninti;\r\n*max=a[0];\r\n*d=0;\r\nfor(i=0;i<n;i++)/*将最大的元素放入指针max所指的单元,最大元素的下标放入指针d所指的单元*/\r\nif(*max<a[i])\r\n{*max=a[i];*d=i;}\r\n}解析:该程序直接使用形参max和d,由于它们都是指针变量,所以要引用它所指向的变量时要对它进行指针运算,也即*号运算。

27.#include<stdi0.h>#defineN16typedefstruct{char

温馨提示

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

评论

0/150

提交评论