2018计算机二级C语言考试真题汇总
- 格式:docx
- 大小:601.92 KB
- 文档页数:14
2018年9月计算机二级C语言考试章节习题及答案(5) 第2章 C程序设计的初步知识2.2 标识符、常量和变量1[单选题] C语言主要是借助以下哪个功能来实现程序模块化A.定义函数B.定义常量和外部变量C.三种基本结构语句D.丰富的数据类型参考答案:A参考解析:C语言用函数实现软件的模块化设计。
2[单选题] 以下叙述中错误的是A.非零的数值型常量有正值和负值的区分B.常量是在程序运行过程中值不能被改变的量C.定义符号常量必须用类型名来设定常量的类型D.用符号名表示的常量叫符号常量参考答案:C参考解析:C语言中,常常用一个标识符来代表一个常量,称为符号常量。
符号常量在使用之前要先定义,定义格式如下: #define<符号常量名>(常量) 其中,<符号常量名)用标识符,习惯上用大写字母,<常量>可以是数字常量,也可以是字符3[单选题] C语言中char 类型数据占字节数为A.3B.4C.1D.2参考答案:C参考解析:C语言中char 类型数据占字节数为1.4[单选题] 下列叙述中正确的是A.可以用关系运算符比较字符串的大小B.空字符串不占用内存,其内存空间大小是0C.两个连续的单引号是合法的字符常量D.两个连续的双引号是合法的字符串常量参考答案:D参考解析:两个连续的双引号:"",是一个字符串常量,称为“空串”5[单选题] 有以下程序(strcpy 为字符串复制函数,strcat 为字符串连接函数)#include#includemain(){ char a[10]="abc",b[10]="012",c[10]="xyz";strcpy(a+1,b+2);puts(strcat(a,c+1));}程序运行后的输出结果是A.a12xyzB.12yzC.a2yzD.bc2yz参考答案:C参考解析:程序执行后strcpy(a+1,b+2)后,字符数组a 的值为“a2”,再进行字符串的连接strcat(a,c+1),此时字符数组a 的值为“a2yz”。
2018年3月全国计算机等级考试二级C语言上机题库100套(从光碟拷贝出来的最完整版)(可以拷贝在U盘里,然后ctrl+F搜索,百分百有答案,祝考试成功)第一套1. 程序填空给定程序中,函数fun的功能是:计算下式前n 项的和作为函数值返回。
例如:当形参n的值为10 的时,函数返回:9.6125588。
第一处s=0;第二处for(i=1;i<=n;i++)第三处s=s+(2.0*i-1)*(2.0*i+1)/(t*t);2. 程序修改给定程序MODI1.C中函数fun的功能是:统计substr所指字符串在str所指字符串中出现伯次数。
/**found**/for(i=0;str[i];i++)/**found**/if(substr[k+1]==’\0’)3. 程序设计请编写一个函数fun,它的功能是:根据以下公式求JI的值(要求满足精度0.0005,即某项小于0.0005时停止送代):程序运行后,如果输入精度为0.0005,则程序输出为3.14…。
double fun(double eps){ double s=1,t=1./3;int n=1;while(t>=eps){s+=t;n++;t=t*n/(2.0*n+1);}return(s*2.0);}第二套1.程序填空给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。
函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。
第一处free(q);第二处q=p->next;第三处q=q->next;2. 程序修改给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n各元素按从小到大的顺序进行排序。
/**found**/p=j;/**found**/p=i;3. 程序设计请编写一个fun函数,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
全国计算机等级考试二级笔试样卷C语言程序设计一、选择题(( 1)~( 10)、(21)~( 40)每题 2 分,(11)~( 20)每题 2 分,共 70 分)以下各题 A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应地点上,答在试卷上不得分。
( 1)以下选项中不切合优秀程序设计风格的是A)源程序要文档化B)数听说明的序次要规范化C)防止滥用 goto 语句D)模块设计要保证高耦合、高内聚( 2)从工程管理角度,软件设计一般分为两步达成,它们是A)纲要设计与详尽设计B)数据设计与接口设计C)软件构造设计与数据设计D)过程设计与数据设计( 3)以下选项中不属于软件生命周期开发阶段任务的是A)软件测试B)纲要设计C)软件保护D)详尽设计( 4)在数据库系统中,用户所见的数据模式为A)观点模式B)外模式C)内模式D)物理模式( 5)数据库设计的四个阶段是:需求剖析、观点设计、逻辑设计和A)编码设计B)测试阶段C)运转阶段 D)物理设计( 6)设有以下三个关系表以下操作中正确的选项是A) T=R∩ S B) T= R∪ SC) T= R× S D) T=R/S( 7)以下表达中正确的选项是A)一个算法的空间复杂度大,则其时间复杂度也必然大B)一个算法的空间复杂度大,则其时间复杂度必然小C)一个算法的时间复杂度大,则其空间复杂度必然小D)上述三种说法都不对( 8)在长度为64 的有序线性表中进行次序查找,最坏状况下需要比较的次数为A)63B)64C)6D)7( 9)数据库技术的根本目标是要解决数据的A)储存问题B)共享问题C)安全问题D)保护问题( 10)对以下二叉树进行中序遍历的结果是A) ACBDFEG B) ACBDFGE C) ABDCGEF D) FCADBEG( 11)以下表达中错误的选项是A)一个 C 语言程序只好实现一种算法B) C 程序能够由多个程序言件构成C) C 程序能够由一个或多个函数构成D)一个 C 函数能够独自作为一个 C 程序言件存在( 12)以下表达中正确的选项是A)每个 C 程序言件中都一定要有一个main()函数B)在 C 程序中 main()函数的地点是固定的C) C 程序中全部函数之间都能够互相调用,与函数所在地点没关D)在 C 程序的函数中不可以定义另一个函数( 13)以下定义变量的语句中错误的选项是A) int _int;B)double int_;C)char For;D) float US$;( 14)若变量A) ++x,y=x--x、y已正确立义并赋值,以下切合 C 语语言法的表达式是B)x+1=y C) x=x+10=x+y D) double(x)/10(15)以下对于逻辑运算符双侧运算对象的表达中正确的选项是A)只好是整数 0 或 1 B)只好是整数0 或非0 整数C)能够是构造体种类的数据D)能够是随意合法的表达式(16)如有定义 int x,y; 并已正确给变量赋值,则以下选项中与表达式 (x-y)?(x++) : (y++)中的条件表达式(x-y) 等价的是A) (x-y>0)B) (x-y<0)C) (x-y<0||x -y>0)D)(x-y==0)( 17)有以下程序main(){ int x, y, z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序运转后的输出结果是A) 2,3,3B) 2,3,2C) 2,3,1D) 2,2,1(18)设有定义: int a;float b;履行scanf("%2d%f",&a,&b);语句时,若从键盘输入 876 543.0<回车 >,a 和 b 的值分别是A) 876 和 543.000000B) 87和 6.000000C) 87 和 543.000000D) 76和 543.000000( 19)有以下程序main(){ int a=0, b=0;a=10;b=20;printf("a+b=%d\n",a+b);/*/* 给 a 赋值给 b 赋值输出计算结果*/*/}程序运转后的输出结果是A) a+b=10B)a+b=30C) 30D)犯错( 20)在嵌套使用if 语句时, C语言规定else 老是A)和以前与其拥有同样缩进地点的if 配对B)和以前与其近来的if 配对C)和以前与其近来的且不带else 的if配对D)和以前的第一个if 配对( 21)以下表达中正确的选项是A) break 语句只好用于switch 语句B)在 switch 语句中一定使用defaultC) break 语句一定与switch 语句中的 case 配对使用D)在 switch 语句中,不必定使用break 语句( 22)有以下程序main(){ int k=5;while( --k) printf("%d",k -= 3);printf("\n");}履行后的输出结果是A) 1B) 2C) 4D)死循环( 23)有以下程序main(){ int i;for(i=1; i<=40; i++){ if(i++%5==0)if(++i%8==0)printf("%d ",i);}printf("\n");}履行后的输出结果是A) 5B) 24C)32D)40( 24)以下选项中,值为 1 的表达式是A) 1– '0'B)1 - '\0'C) '1' -0D) '\0' - '0'( 25)有以下程序fun(int x, int y){ return (x+y); }main(){ int a=1, b=2, c=3, sum;sum=fun((a++,b++,a+b),c++);printf("%d\n",sum);}履行后的输出结果是A) 6B) 7C)8D)9( 26)有以下程序main(){ char s[]="abcde";s+=2;printf("%d\n",s[0]);}履行后的结果是A)输出字符 a 的 ASCII码B)输出字符 c 的 ASCII码C)输出字符 c D)程序犯错( 27)有以下程序fun(int x, int y){ static int m=0, i=2;i+=m+1;m=i+x+y;return m;}main(){ int j=1, m=1, k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%d\n",k);}履行后的输出结果是A)5, 5B) 5, 11C) 11, 11D) 11, 5( 28)有以下程序fun(int x){ int p;if(x==0||x==1)return(3);p=x-fun(x -2);return p;}main(){ printf("%d\n",fun(7)); }履行后的输出结果是A) 7B) 3C) 2D)0( 29)在 16 位编译系统上,如有定义int a[]={10,20,30}, *p=&a; ,当履行 p++;后,下列说法错误的选项是A) p 向高地点移了一个字节B) p 向高地点移了一个储存单元C) p 向高地点移了两个字节D) p 与 a+1 等价( 30)有以下程序main(){ int a=1, b=3, c=5;int*p1=&a, *p2=&b, *p=&c;*p =*p1*(*p2);printf("%d\n",c);}履行后的输出结果是A) 1B) 2C) 3D)4( 31)如有定义: int w[3][5]; ,则以下不可以正确表示该数组元素的表达式是A) *(*w+3)B) *(w+1)[4]C) *(*(w+1))D) *(&w[0][0]+1)( 32)如有以下函数首部int fun(double x[10], int *n)则下边针对此函数的函数申明语句中正确的选项是A) int fun(double x, int *n);B) int fun(double, int );C) int fun(double *x, int n);D) int fun(double *,int *);( 33)有以下程序void change(int k[ ]){ k[0]=k[5]; }main(){ int x[10]={1,2,3,4,5,6,7,8,9,10},n=0;while( n<=4 ) { change( &x[n]) ; n++; }for(n=0; n<5; n++)printf("%d ",x[n]);printf("\n");}程序运转后输出的结果是A)678910B)13579C)12345D)62345( 34)有以下程序main(){ int x[3][2]={0}, i;for(i=0; i<3; i++)scanf("%d",x[i]);printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);}若运转时输入: 2 4 6<回车 >,则输出结果为A)200B)204C)240D)246( 35)有以下程序int add( int a,int b){ return (a+b);}main(){ int k, (*f)(), a=5,b=10;f=add;}则以下函数调用语句错误的选项是A) k=(*f)(a,b);B)k=add(a,b);C) k= *f(a,b);D) k=f(a,b);( 36)有以下程序#includemain( int argc, char*argv[ ]){ int i=1,n=0;while (iprintf("%d\n",n);}该程序生成的可履行文件名为:proc.exe。
2018年国家计算机二级C语言笔试真题及答案解析(1)一个栈的初始状态为空。
现将元素1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是()。
A)12345ABCDE B)EDCBA54321 C)ABCDE12345 D)54321EDCBA (2)下列叙述中正确的是()。
A)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D)循环队列中元素的个数是由队头指针和队尾指针共同决定3)在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是()。
A)O(n) B)O(n2) C)O(log2n) D)O(n log2n)4)下列叙述中正确的是()。
A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C)顺序存储结构能存储有序表,链式存储结构不能存储有序表 D)链式存储结构比顺序存储结构节省存储空间5)数据流图中带有箭头的线段表示的是()。
A)控制流 B)事件驱动 C)模块调用 D)数据流6)在软件开发中,需求分析阶段可以使用的工具是()。
A)N-S 图 B)DFD 图 C)PAD 图 D)程序流程图7)在面向对象方法中,不属于“对象”基本特点的是()。
A)一致性 B)分类性 C)多态性 D)标识唯一性(8)一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()。
A)一对一 B)一对多 C)多对一 D)多对多(9)在数据管理技术发展的三个阶段中,数据共享最好的是()。
A)人工管理阶段 B)文件系统阶段 C)数据库系统阶段 D)三个阶段相同(10)有三个关系R、S 和T 如下:R S TA B B C A B Cm 1 1 3 m 1 3n 2 3 5由关系R 和S 通过运算得到关系T,则所使用的运算为()。
2018年3月国家二级C语言机试(操作题)真题汇编2(题后含答案及解析)全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.使用VC++2010打开考生文件夹下blank1中的解决方案。
此解决方案的项目中包含一个源程序文件blank1.c。
函数fun的功能是将一个由字符0和1组成的表示二进制数的字符串,转换成相应的十进制整数值返回。
该串长度最大不超过15。
例如,若表示二进制数的字符串为:”10011”,则运行结果应为:10011﹣>19请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在文件BLANK1.C中,不得增行或删行,也不得更改程序的结构!#include<stdio.h>#pragma warning(disable:4996)#define N16/*********found*********/int fun(char【1】){int i,n=0;/*********found*********/for(i=0;【2】;++i)/*********found*********/rl=n*2+(s[i]﹣【3】);return n;}main( ){char num[]=“10011”;int n;n=fun(num);printf(“%s﹣﹣>%d\n”,num,n);}正确答案:(1)s[](2)s[i]!=‘\0’&&i<N(3)48解析:填空1:该函数所接受的参数为字符数组,所以形参也为字符数组,根据函数内所用的字符数组s[i],所以该空填s[]。
答案为s[]。
填空2:访问一个字符数组的所有元素时,当该元素不为字符串结束符’\0’时,继续访问,当访问到字符串结束符’\0’时,表示该字符串结束了,结束循环返回计算结果,因为串的长度最大不超过15,所以定义了一个常量N为16,在for循环的第二个表达式中i<N用来控制其不超过15,当其超过了15位时后面的不做计算,所以该空填s[i]!=‘\0’&&i<N。
2018年计算机二级考试C语言试题及答案(1)2018年计算机等级考试即将开始,为考生们整理了2018年计算机二级考试C语言试题及答案,希望能帮到大家,想了解更多资讯,请关注小编的及时更新哦。
2018年计算机二级考试C语言试题及答案(1)选择题1). 在软件设计中,不属于过程设计工具的是( )A.PDL(过程设计语言)B.PAD图C.N-S图D.DFD图正确答案:D答案解析:DFD(数据流图Data-Flow-Diagram)是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示。
它直接支持系统功能建模。
在软件详细设计的过程阶段,要对每个模块规定的功能以及算法的设计给出适当的算法描述。
常见的过程设计工具有:图形工具:程序流程图,N-S,PAD,HIPO;表格工具:判定表;语言工具:PDL(伪码)。
2). 数据结构中,与所使用的计算机无关的是数据的( )。
A.存储结构B.物理结构C.逻辑结构D.线性结构正确答案:C答案解析:数据的逻辑结构反映的是数据元素之间的逻辑关系,与使用的计算机无关。
3). 设有定义: int x=2; 以下表达式中,值不为6的是( )A.2*x, x+=2B.x++,2*xC.x*=(1+x)D.x*=x+1正确答案:A答案解析:本题考查逗号表达式。
逗号表达式的求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值,因此,选项A中值为4;选项B中,值为6。
选项C中x*=x+1 等价于x=x*(x+1),所以等于6;选项D与选项C等价,结果也为6。
4). 在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为( )A.63B.64C.6D.7正确答案:B答案解析:顺序查找又称顺序搜索。
顺序查找一般是指在线性表中查找指定的元素,其基本方法是:从线性表的第一元素开始,依次将线性表中的元素与被查找的元素进行比较,若相等则表示找到(即查找成功),若线性表中所有元素都与被查元素进行了比较但都不相等,则表示线性表中没有要找的元素(即查找失败)。
2018年国家计算机二级C语言笔试真题及答案解析72018年国家计算机二级C语言笔试真题及答案解析1.以下选项中不符合良好程序设计风格的是什么?A)源程序应该文档化B)数据说明的顺序应该规范化C)避免滥用goto语句D)模块设计应该保证高耦合、高内聚2.从工程管理角度,软件设计一般分为两步完成,它们是什么?A)概要设计与详细设计B)数据设计与接口设计C)软件结构设计与数据设计D)过程设计与数据设计3.下列选项中不属于软件生命周期开发阶段任务的是什么?A)软件测试B)概要设计C)软件维护D)详细设计4.在数据库系统中,用户所见的数据模式是什么?A)概念模式B)外模式C)内模式D)物理模式5.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和什么?A)编码设计B)测试阶段C)运行阶段D)物理设计6.设有如下三个关系表,下列操作中正确的是什么?7.下列叙述中正确的是什么?A)一个算法的空间复杂度大,则其时间复杂度也必定大B)一个算法的空间复杂度大,则其时间复杂度必定小C)一个算法的时间复杂度大,则其空间复杂度必定小D)上述三种说法都不对8.在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为什么?A)63B)64C)6D)79.数据库技术的根本目标是要解决数据的什么问题?A)存储问题B)共享问题C)安全问题D)保护问题10.对下列二叉树进行中序遍历的结果是什么?A)ACBDFEGB)ACBDFGEC)ABDCGEFD)FCADBEG11.下列叙述中错误的是什么?A)一个C语言程序只能实现一种算法B)C程序可以由多个程序文件组成C)C程序可以由一个或多个函数组成D)一个C函数可以单独作为一个C程序文件存在12.下列叙述中正确的是什么?A)每个C程序文件中都必须有一个main()函数B)在C程序中main()函数的位置是固定的C)C程序可以由一个或多个函数组成D)在C程序的函数中不能定义另一个函数13) 错误的是B)double int_。
模拟卷1
1 [填空题]
下列给定程序中,函数fun的功能是:在形参S所指字符串中寻找与参数C相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。
例如,若s所指字符串为“baacda”,c中的字符为a,执行后S所指字符串为“baaaacdaa”。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
参考解析:
【参考答案】
【解题思路】
填空1:for语句循环条件是判断是否到达字符串结尾,即当前字符是否为‘\0’。
填空2:while语句用以确定字符串的长度,所以变量n赋初值为0。
填空3:题目要求如果找到与参数c相同的字符,就在后面插入一个相同的字符,且找到后应该给数组元素赋值,本题目给出参数为c。
二、程序修改题
2 [简答题]
下列给定程序中函数fun的功能是:逐个比较p、q所指两个字符串对应位置上的字符,并把ASCII 值大或相等的字符依次存放到c所指的数组中,形成一个新的字符串。
例如,若主函数中a字符串为“aBCDeFgH”,b字符串为"Abcd",则c中的字符串应为“aBcdeFgH”。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODl1.C中,不得增行或删行,也不得更改程序的结构!
参考解析:
【参考答案】 (1)int k=0;
(2)while(*p||*q)
【考点分析】
本题考查:变量初始化,需根据题意确定变量含义,然后对其进行初始化操作;while循环语句。
【解题思路】
(1)变量k存放数组e的下标,因此应初始化为0。
(2)while循环语句的循环条件是判断两个字符串是否到达结尾。
三. 程序设计题
3 [简答题]
规定输入的字符串中只包含字母和*号。
请编写函数fun,其功能是:将字符串尾部的*号全部删除,前面和中间的*号不动。
例如,字符串中的内容为:“****A*BC*DEF*G*******”.删除后,字符串中的内容应当是:“****A*BC*DEF*G”。
在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
参考解析:
【参考答案】
【考点分析】
本题考查:删除字符串尾部+号;删除的主要思想是把不删除的字符保留起来。
【解题思路】
对于一个字符串要删除其尾部的*号,只需要在最后一个不是*号的字符后面加上结束符号‘\0’。
具体操作为:首先找到字符串的结尾,然后从最后一个字符开始往前逐个判断是否为*号,直到找到非*号字符为止,最后在该字符后面加上结束符号‘\0’。
模拟卷2
一、程序填空题
1 [填空题]
下列给定程序中,函数fun的功能是:从形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回剩余字符串的个数。
ss所指字符串数组中共有N个字符串,且串长小于M。
请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
参考解析:
【参考答案】 (1)N
(2)k
(3)ss[i]
【考点分析】
本题考查:for循环语句;if语句条件表达式;字符串拷贝函数strepy的使用。
【解题思路】
填空l:for循环语句作用是遍历字符串数组中的每一个字符串,所以循环变量i的循环条件是i
填空2:题目要求删除串长度小于k的字符串,所以if条件语句的条件表达式是len<=k。
填空3:通过字符串拷贝函数将串长不大于k的字符串另存,并记录个数。
【解题宝典】
字符串拷贝函数strcpy,其格式为:strepy(字符数组名1,字符数组名2)
功能:把字符数组2中的字符串拷贝到字符数组l中。
字符串结束标识‘\0’也一同拷贝。
字符数名2,也可以是一个字符串常量。
这时相当于把一个字符串赋予一个字符数组。
二、程序修改题
2 [简答题]
给定程序MODI1.C中,函数fun的功能是:判断输入的任何一个正整数n,是否等于某个连续正整数序列之和。
若是,则输出所有可能的序列,否则输出“不能分解”。
例如:当输入100时,输出:100=9+10+11+12+13+14+15+16
100=18+19+20+21+22
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
参考解析:
【参考答案】 (1)m=n;
(2)m=m-c;c++;
(3)if(m==0)
【解题思路】
(1)每次循环,程序需要对n执行减去连续的正整数序列来判断n是否刚好为0,即n是否是连续的正整数序列之和,所以需要使用临时变量m寄存n的值,每次循环对m执行减运算操作,不满足继续下一轮。
另外,程序声明变量m时,未初始化它的值,所以此处应该修改为:m=n。
(2)语法错误。
C语言中每个语句必须以分号结束,所以应修改为:m=m-c;c++;。
(3)题目判断n是否是连续的正整数序列之和,若是,则输出所有序列,程序中m依次减去连续的正整数,当m为0时,表示m(即11)满足条件,再输出当前序列中的每个正整数,所以此处判断条件反了,应修改为:if(m==0)。
3 [简答题]
请编写函数fun,其功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从0~P(含P,P小于等于n-1)的数组元素平移到数组的最后。
例如,一维数组中的原始内容为:1、2、3、4、5、6、7、8、9、10;P的值为3。
移动后,一维数组中的内容应为:5、6、7、8、9、10、1、2、3、4。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
参考解析:
【参考答案】
【解题思路】
本题要求把下标从0~P(含P,P小于等于n-1)的数组元素平移到数组的最后,可以根据输入的P值,通过for循环语句,将P+1-n-1(含n-1)之间的数组元素依次向前移动P+1个存储单元,即
W[j-1]=w[j];,同时将0~P个数组元素逐一赋给数组w[n-1],也就是通过语句w[n-1]=ch;来实现此操作的。
模拟卷3
一、程序填空题
1 [填空题]
给定程序中,函数fun的功能是:将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
参考解析:
【参考答案】
【解题思路】
填空1:由语句fopen("filel.txt","r")可知,fp应该是文件类型指针,因此本空应该填写FILE *。
填空2:feof函数只能对文件类型数据进行操作,因此本空应填写fp。
填空3:putchar()代表输入一个字符,从ch=fgetc(fp)可以看出本题应该填写ch。
二、程序修改题
2 [简答题]
给定程序中函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到C所指数组中,过长的剩余字符接在C 所指的数组的尾部。
例如,当a所指字符串中的内容为“abcdefg”,b所指字符串中的内容为“1234”时,C所指数组中的内容应为“a4b3c2dlefg”;而当a所指字符串中的内容为“1234”,b所指字符串的内容为“abcdefg”时,C所指数组中的内容应该为“192f3e4dcba”。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
参考解析:【参考答案】
【解题思路】
(1)由i和j定义的初始值可知,此处应该判断i是否小于j,所以应改为while(i
(2)此处将if错写成If,这个错误比较简单,但往往不容易发现。
三. 程序设计题
3 [简答题]
请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m 的k个素数存入所指的数组中。
例如,若输入17,5,则应输出19、23、29、31、37。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
参考解析:
【参考答案】
【解题思路】
本题主要考查素数的判定方法,如果一个数不能被除了1和其自身以外的数整除,则这个数为素数。
本程序使用循环语句控制需要判断的数,在循环体中判断该数是否为素数,若是则存入数组xx 中。