2013.03全国计算机等级考试二级C上机题库中难度题型
全国计算机二级考试C++上机考试试题及答案
全国计算机二级考试C++上机考试试题及答案全国计算机二级考试C++上机考试试题及答案全国计算机二级考试上机试题是一个比较难的模块,需要大家在考前不断的做一些练习试题,下面就是店铺跟大家分享全国计算机二级考试C++上机考试试题及答案,欢迎大家阅读!一、程序改错题使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正程序中的错误。
本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。
试题程序:#include#include//********error********usingstd;voidWriteFile(char*s){ofstreamout1;//********error********out1.open("1.txt",binary|app);for(inti=0;s[i]!=0;i++){//********error********out1.puts(s[i]);}out1.close();}voidClearFile(){ofstreamout1;out1.open("1.txt");out1.close();}intmain(){chars[1024];ClearFile();cout<<"pleaseinputastrin9:"< cin.getline(s,1024);WriteFile(s);return0;}二、简单应用题使用VC++6.0打开考生文件夹下的源程序文件2.cpp。
请完成函数fun(intx)的定义,该函数功能是判定x的所有约数,并且在函数中调用写函数WriteFile将结果输出到2.txt文件中。
例如:x=100的约数为124510202550100。
2013年全国计算机二级C上机考试题库100套(可打印)
类型一:调整一个数的个、十、百、千位1.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45,b=12,调用该函数后c=4152。
*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10);填空:STYPE FILE Fp改错:for( i=0; i<=sl; i ++) 把s后字母改为小写Lt[2*sl] = '\0';2.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。
例如,当a=45,b=12,调用该函数后c=1524。
*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);填空:*fw str str改错:void fun(long s,long *t)sl=sl*10;3.请编写函数fun,其功能是:将两个两位数的正整数a、b 合并形成一个整数放在c中。
合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。
例如,当a=45,b=12,调用该函数后c=2514。
*c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10);填空:fp fclose(fp) fname改错:for ( i=j+1; i<=n-1 ; i++ )p=i;4.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45,b=12,调用该函数后c=5142。
全国计算机等级考试二级C语言真题2013年3月
全国计算机等级考试二级C语言真题2013年3月(总分40, 做题时间90分钟)一、选择题1. 程序流程图中带有箭头的线段表示的是______。
A 图元关系B 数据流C 控制流D 调用关系答案:C[解析] 在数据流图中,用标有名字的箭头表示数据流。
在程序流程图中,用标有名字的箭头表示控制流。
所以选择C。
2. 结构化程序设计的基本原则不包括______。
A 多态性B 自顶向下C 模块化D 逐步求精答案:A[解析] 结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。
3. 软件设计中模块划分应遵循的准则是______。
A 低内聚低耦合B 高内聚低耦合C 低内聚高耦合D 高内聚高耦合答案:B[解析] 软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。
模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。
模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。
4. 在软件开发中,需求分析阶段产生的主要文档是______。
A 可行性分析报告B 软件需求规格说明书C 概要设计说明书D 集成测试计划答案:B[解析] A错误,可行性分析阶段产生可行性分析报告。
C错误,概要设计说明书是总体设计阶段产生的文档。
D错误,集成测试计划是在概要设计阶段编写的文档。
B正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。
5. 算法的有穷性是指______。
A 算法程序的运行时间是有限的B 算法程序所处理的数据量是有限的C 算法程序的长度是有限的D 算法只能被有限的用户使用答案:A[解析] 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。
有穷性是指算法程序的运行时间是有限的。
6. 对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是______。
A 快速排序B 冒泡排序C 直接插入排序D 堆排序答案:D[解析] 除了堆排序算法的比较次数是O(nlog2n),其他的都是n(n-1)/2。
【高分飘过】2013年国二C语言上机题库(必备完美版)
2013年国二C语言上机题库一、上机改错题的特点和注意事项1.上机改错的试题中通常包含两个(或三个)错误需要修改。
2.试题中用"******found******/"来提示在下一行(或下面第二行)有错。
3.错误的性质基本分语法错和逻辑错两种,也有些试题要求把语句添加在下划线处4.要注意的是:只能在出错的行上进行修改,不要改动程序行的顺序,更不要自己另编程序。
二、C编程时常犯的错误1.书写标识符时,忽略了大小写字母的区别。
main(){int a=5;printf("%d",A);}编译程序把a和A认为是两个不同的变量名,而显示出错信息。
C认为大写字母和小写字母是两个不同的字符。
习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。
2.忽略了变量的类型,进行了不合法的运算。
main(){float a,b;printf("%d",a%b);}%是求余运算,得到a/b的整余数。
整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。
3.将字符常量与字符串常量混淆。
char c;c="a";在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。
C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a'和‘\',而把它赋给一个字符变量是不行的。
4.忽略了“=”与“==”的区别。
在许多高级语言中,用“=”符号作为关系运算符“等于”。
如在BASIC程序中可以写if (a=3) then …但C语言中,“=”是赋值运算符,“==”是关系运算符。
如:if (a==3) a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。
由于习惯问题,初学者往往会犯这样的错误。
5.忘记加分号。
分号是C语句中不可缺少的一部分,语句末尾必须有分号。
2013全国计算机等级考试新大纲二级C语言题库及参考答案
参考答案第一套题二、程序填空题本题是根据给定的公式来计算函数的值。
第一处:程序中使用双精度double类型进行计算,所以函数的返回值类型也为double,所以应填:double。
第二处:当i等于1时,则返回f1函数的值,所以应填:f1。
第三处:如果i不等于1,则返回f2函数的值,所以应填:f2。
三、程序修改题解题思路:第一处: 试题要求返回字符串的首地址,所以应改为:char *fun(char *s,char *t)第二处: 取字符串指针ss的下一个位置,所以应改为:ss++;。
第三处:取字符串指针tt的下一个位置,所以应改为:tt++;。
四、程序设计题解题思路:本题是考察字符串的操作。
1. 由于函数fun1是将字符串中字符循环左移一个位置,并通过实参w返回循环左移一个位置的字符串。
2. 利用循环for语句来操作多少个字符(m)需要循环左移。
参考答案:void fun(char *w, int m) /* 可调用fun1函数左移字符*/{int i;for(i = 0 ; i < m ; i++) fun1(w);}第二套题一、选择题解题思路:第一处:计算好的平均值通过形参av返回,所以应填:*av。
第二处:计算小于平均值且最接近平均值的位置j,所以应填:i。
第三处:返回该数,所以应填:x[j]。
三、程序修改题解题思路:第一处:函数的返回是浮点型数,所以应改为:float fun(int n)。
第二处:for的终止条件应是i<=n。
四、程序设计题解题思路:本题是利用两重循环给二维数组右上三角元素中的值乘以m。
参考答案:int fun ( int a[][N], int m ){int i, j;for(i = 0 ; i < N ; i++)for(j = i ; j < N ; j++)a[i][j] *= m ;}第三套题一、选择题解题思路:第一处:如果n是奇数,则中间的元素不动,所以应填:1。
全国计算机等级考试2级C语言上机考试例题讲解PPT课件
三、上机编程题考点总结
二级C语言上机编程题在二级上机考试中属于较难题型,因 此很多同学都害怕通过不了。综合往年的考试,结合考试大纲, 每年考试的编程题都有一定的规律和方法,只要同学们认真、 熟练掌握做题的方法和技巧,通过考试是没有问题的。
下面介绍常考题型
10
类型一:数学问题,公式类型
[例1]:求小于n能同时被3和7同时整除的所有自然 数之和的平方根。
2级C语言上机考试例题讲解
1
2级考试的上机题型有:
1。填空题(30分,2~3个) 2。改错题(30分,2~3个) 3。程序编写题(40分,一定记得调试运行,否则没分!)
1、2 题是按照每个考点的答案给分的,也就是说只有和标准 答案一致的才是正确的 。虽然和标准答案不同也有可能运行 正确 ,但是也不能得分 。不过不用担心这个 ,因为题目简单 相应的正确答案的种类也少, 所以运行正确就OK ;3题要求 最高、 也最灵活 ,只要能写出符合题目要求功能的代码就可 以得40分。
须把整数1改为1.0;若变量或表达式是整型时,则只能进 行强制类型转换。
5、 字符串类问题 若错误行中有字符串结束符,则特别要注意结束符
有没有写错。注意要区分字符‘o’和数字’0’。
6、 指针类问题 若错误行中有指针变量,并且该变量名之前没有指
针运算符,则一般都是加上指针运算符;
8
7、 函数首部类问题
float fun(int n) {
{ int i,sum=1; double s=1.0; for(i=2;i<=n;i++) {sum=sum+i; s=s+1.0/sum ;} return s;
} }
12
通过上面问题的探讨,大家自己来解决以下两个问题:
2013全国计算机等级考试新大纲二级C语言题库及参考答案-推荐下载
C
A
D
B
B
C
B
D
C
C
A
B
B
A
A
D
A
B
A
D
if(strcmp(a[i].num, b)==0) { /* 判断学号是否相等 */ strcpy(c.num, a[i].num) ; /* 相等,则对学号进行赋值 */ c.s=a[i].s; /* 相等,则对成绩进行赋值 */ break ; /* 退出循环体 */ } return c ; /* 返回结构体变量 */ }
第三套题
一、选择题
1-10 D
11-20 B
21-30 A
31-40 A
二、程序填空题
解题思路:
D
A
D
A
C
D
D
B
第一处:如果 n 是奇数,则中间的元素不动,所以应填:1。
第二处:使用 for 循环语句来交换数组元素的值,所以应填:i。 第三处:使用中间变量 t 来交换的,所以应填:t。 三、程序修改题
解题思路:
B
A
A
C
第一处:在函数 fun 体中,k 是一个浮点型变量,所以应改为:float k;。
C
D
D
D
第二处:三个数比较大小,第 1 个条件是第 1 个比第 2 个小,则交换。第 3 个条件是第 2
个比第 3 个小,则也交换。第 2 个条件是应该第 1 和第 3 个小,则交换就符合题意了,所
以应改为: if(*a<*c)。
解题思路:
第一处: 试题要求返回字符串的首地址,所以应改为:char *fun(char *s,char *t)
第二处: 取字符串指针 ss 的下一个位置,所以应改为:ss++;。 第三处:取字符串指针 tt 的下一个位置,所以应改为:tt++;。 四、程序设计题
计算机二级C语言上机题库100套(最新版)
2013年3月全国计算机等级考试二级C语言上机题库100套(超级最新完整版)建议拷贝岛U盘使用查找功能百分百中第一套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返回这些数的个数。
void fun(int m,int *a,int *n){int i;*n=0;for(i=7;i<=m;i++)if((i%7==0)||(i%11==0))a[(*n)++]=i;}第三套1. 程序填空函数fun的功能是:逆置数组元素是的值。
全国计算机等级考试二级C语言上机题库及详细解答
1 第一套给定程序的功能是:求二分之一圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:圆面积公式为:S r π=2,在程序中定义的变量名要与公式的变量相同)。
例如,输入圆的半径值:19.527,输出为:s=598.949991。
注意:部分源程序给出如下。
请勿改动main 函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。
试题程序:#include <stdio.h> double fun( double r) { return 3.14159*【1】/2.0; }void main() { double x; printf("Enter x: "); scanf("%lf",【2】); printf("s=%lf\n",fun(【3】)); }【参考答案】 (1)r*r (2)&x (3)x 【考点分析】 本题考查:圆面积计算公式S π=*r*r;scanf( )函数的形式,其一般形式为"scanf("格式控制字符串",地址表列);",注意地址是由地址运算符"&"后跟变量名组成的;printf( )函数的形式,其一般形式为"printf("格式控制字符串",输出表列);";函数实参调用,函数作为另一个函数调用的实际参数出现。
【解题思路】填空1:计算圆的面积,公式为:s r π=*r 。
填空2:scanf( )函数一般形式为scanf(格式控制,地址表列),因此填入&x 。
填空3:函数的实际参数是圆的半径x 。
下列给定程序中,函数fun 的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。
例如,当n 为5时,函数值应为10.407143。
2013年3月全国计算机等级考试二级C语言上机题库100套完全版aaa
2013年3月全国计算机等级考试二级C语言上机题库100套完全版aaa导读:就爱阅读网友为您分享以下“2013年3月全国计算机等级考试二级C语言上机题库100套完全版aaa”的资讯,希望对您有所帮助,感谢您对的支持!第 3 处:{ tl++; /*****found*** ***/ fscanf(fp,”%s%s%s”,str,str1,str2); 2.tt++; 程序修改给定程序MODI1.C 中函数fun 的功能是:对N 名学生的学生成绩,按从高到低的顺序找出前m(m<10) if(tl>sl) return t; 名学生来,将这些学生数据存放在一个动态分配的else return s; 连续存储区中,此存储区的首地址作为函数值返回。
} STU *fun(STU a[ ],int m) { STU b[N],*t; 3. 程序设计int i,j,k; 请编写函数fun,函数的功能是:移动字符串中的/*****found*** ***/ 内容,移动的规则如下:把第 1 到第m 个字符,平t=(STU *)calloc(sizeof(STU),m); 均移到字符串的最后,把第m+1个到最后的;字for(i=0;i<N;i++) 符移到字符串的前部。
void fun(char *w, int m ) for(k=0;k<m;k++) { { for(i=j=0;i<N;i++) int i; if(b[i].s>b[j].s)j=i; /*****found*** ***/ t[k]=b[j]; b[j].s=0; 第七套1.程序填空return t; 程序通过定义并赋初值的方式,利用结构体变量存} 储了一名学生的信息,函数fun 的功能是输出这位学生的信息。
3. 程序设计请编写函数fun,函数的功能是,删去一维数组中第 1 处void show( STU tt) 所有相同的数,使之只剩一个。
全国计算机二级C2013年3月考试真题与答案(打印版)-推荐下载
A、x++; printf((“%d\n”,x);
B、n=++x; printf((“%d\n”,n);
C、++x; printf((“%d\n”,x);
D、n=x++; printf((“%d\n”,n);
19、以下选项中,能表示逻辑值“假”的是
A、 1
B 、0.000001
C、 0
D、 100.0
9、 在黑盒测试方式中,设计测试用例的主要根据是
A、程序外部功能
B、程序内部逻辑
C、程序数据结构
D、程序流程图
10、 在软件设计中不使用的工具是
A、系统结构图
B、程序流程图
C、PAD 图
D、数据流图(DFD 图)
11、针对简单程序设计,以下叙述的实施步骤正确的是
A、确定算法和数据结构、编码、调试、整理文档
20、有以下程序
#include <sthio.h>
main()
{ int a;
scanf(“%d”,&a);
If(a++<9) printf((“%d\n”,a);
else printf((“%d\n”,a--);
}
程序运行时键盘输入 9<回车>,则输出的结构是
A、10
B 、11
C、 9
D 、8
21、有以下程序
D、只有八进制表示的数在不会有误差
13、以下关于算法叙述错误的是
A、算法可以用伪代码、流程图等多种形式来描述
B、一个正确的算法必须有输入
C、一个正确的算法必须有输出
D、用流程图可以描述的算法可以用任何一种计算机高级语言编写成程序代码
2013年3月份全国计算机等级考试二级C语言_笔试+上机题库(完整版)
.全国计算机等级考试二级C语言笔试+上机题库(全)一、选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为A)PAD图B)N-S图 C)结构图 D)数据流图(2)结构化程序设计主要强调的是A)程序的规模 B)程序的效率 C)程序设计语言的先进性 D)程序易读性(3)为了使模块尽可能独立,要求A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强(4)需求分析阶段的任务是确定A)软件开发方法 B)软件开发工具 C)软件开发费用 D)软件系统功能(5)算法的有穷性是指A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是A)快速排序 B)冒泡排序 C)直接插入排序 D)堆排序(7)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是A)e3,e1,e4,e2 B)e2,e4,e3,e1 C)e3,e4,e1,e2 D) 任意顺序(8)将E-R图转换到关系模式时,实体与联系都可以表示成A)属性 B)关系 C)键 D)域(9)有三个关系R、S和T如下:RB C Da 0 k1b 1 n1SB C Df 3 h2a 0 k1n 2 x1TB C Da 0 k1由关系R和S通过运算得到关系T,则所使用的运算为A)并 B)自然连接 C)笛卡尔积 D)交(10)下列有关数据库的描述,正确的是A)数据处理是将信息转化为数据的过程B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变C)关系中的每一列称为元组,一个元组就是一个字段D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字(11)以下叙述中正确的是A)用C程序实现的算法必须要有输入和输出操作B)用C程序实现的算法可以没有输出但必须要有输入C)用C程序实现的算法可以没有输入但必须要有输出D)用C程序实现的算法可以既没有输入也没有输出(12)下列可用于C语言用户标识符的一组是A)void, define, WORD B)a3_3,_123,Car C)For, -abc, IF Case D)2a, DO, sizeof(13)以下选项中可作为C语言合法常量的是A)-80 B)-080 C)-8e1.0 D)-80.0e(14)若有语句:char *line[5];,以下叙述中正确的是A) 定义line是一个数组,每个数组元素是一个基类型为char为指针变量B) 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组C) 定义line是一个指针数组,语句中的*号称为间址运算符D) 定义line是一个指向字符型函数的指针(15)以下定义语句中正确的是A)int a=b=0; B)char A=65+1,b=′b′; C)float a=1,*b=&a,*c=&b;D)double a=00;b=1.1;(16)有以下程序段char ch; int k;ch=′a′;k=12;printf("%c,%d,",ch,ch,k); printf("k=%d \n",k);已知字符a的ASCII码值为97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12D)a,97,k=12(17)有以下程序main(){ int i,s=1;for (i=1;i<50;i++)if(!(i%5)&&!(i%3)) s+=i;printf("%d\n",s);}程序的输出结果是A)409 B)277 C)1 D)91(18)当变量c的值不为2、4、6时,值也为"真"的表达式是A)(c==2)||(c==4)||(c==6)B)(c>=2&& c<=6)||(c!=3)||(c!=5)C)(c>=2&&c<=6)&&!(c%2)D)(c>=2&& c<=6)&&(c%2!=1)(19)若变量已正确定义,有以下程序段int a=3,b=5,c=7;if(a>b) a=b; c=a;if(c!=a) c=b;printf("%d,%d,%d\n",a,b,c);其输出结果是A)程序段有语法错 B)3,5,3 C)3,5,5 D)3,5,7 (20)有以下程序#include <stdio.h>main(){ int x=1,y=0,a=0,b=0;switch(x){ case 1:switch(y){ case 0:a++; break;case 1:b++; break;}case 2:a++; b++; break;case 3:a++; b++;}printf("a=%d,b=%d\n",a,b);}程序的运行结果是A)a=1,b=0 B)a=2,b=2 C)a=1,b=1 D)a=2,b=1(21)下列程序的输出结果是#include "stdio.h"main(){ int i,a=0,b=0;for(i=1;i<10;i++){ if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b); }A)a=4,b=4 B)a=4,b=5 C)a=5,b=4 D)a=5,b=5(22)已知#int t=0;while (t=1){...}则以下叙述正确的是A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对(23)下面程序的输出结果是main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}A)3 B)4 C)1 D)2(24)以下错误的定义语句是A)int x[][3]={{0},{1},{1,2,3}}; B)int x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};C)int x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}}; D)int x[][3]={1,2,3,4}; (25)有以下程序void ss(char *s,char t){ while(*s){ if(*s==t)*s=t-′a′+′A′;s++; } }main(){ char str1[100]="abcddfefdbd",c=′d′;ss(str1,c); printf("%s\n",str1);}程序运行后的输出结果是A)ABCDDEFEDBD B)abcDDfefDbD C)abcAAfefAbA D)Abcddfefdbd(26)有如下程序main(){ char ch[2][5]={"6937","8254"},*p[2];int i,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>′\0′;j+=2)s=10*s+p[i][j]-′0′;printf("%d\n",s);}该程序的输出结果是A)69825 B)63825 C)6385 D)(27)有定义语句:char s[10];,若要从终端给s输入5个字符,错误的输入语句是A)gets(&s[0]); B)scanf("%s",s+1); C)gets(s); D)scanf("%s",s[1]); (28)以下叙述中错误的是A)在程序中凡是以"#"开始的语句行都是预处理命令行 B)预处理命令行的最后不能以分号表示结束 C)#define MAX 是合法的宏定义命令行 D)C程序对预处理命令行的处理是在程序执行的过程中进行的(29)设有以下说明语句typedef struct{ int n;char ch[8];} PER;则下面叙述中正确的是A)PER 是结构体变量名 B)PER是结构体类型名 C)typedef struct 是结构体类型D)struct 是结构体类型名(30)以下叙述中错误的是A)gets函数用于从终端读入字符串 B)getchar函数用于从磁盘文件读入字符C)fputs函数用于把字符串输出到文件 D)fwrite函数用于以二进制形式输出数据到文件(31)以下能正确定义一维数组的选项是A)int a[5]={0,1,2,3,4,5}; B)char a[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′}; C)char a={′A′,′B′,′C′}; D)int a[5]="0123";(32)有以下程序#include<string.h>main(){ char p[]={′a′, ′b′, ′c′},q[10]={ ′a′, ′b′, ′c′};printf("%d%d\n",strlen(p),strlen(q));}以下叙述中正确的是A) 在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3B) 由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3C) 由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3D) 由于p和q数组中都没有字符串结束符,故长度都不能确定(33)有以下程序#include <stdio.h>#include <string.h>void fun(char *s[],int n){ char *t; int i,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strlen(s[i])>strlen(s[j])) {t=s[i];s[i]:s[j];s[j]=t;}}main(){ char *ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};fun(ss,5); printf("%s,%s\n",ss[0],ss[4]);}程序的运行结果是A)xy,aaaacc B)aaaacc,xy C)bcc,aabcc D)aabcc,bcc(34)有以下程序#include <stdio.h>int f(int x){ int y;if(x==0||x==1) return(3);y=x*x-f(x-2);return y;}main(){ int z;z=f(3); printf("%d\n",z);}程序的运行结果是A)0 B)9 C)6 D)8(35)下面程序段的运行结果是char str[]="ABC",*p=str;printf("%d\n",*(p+3));A)67 B)0 C)字符′C′的地址 D)字符′C′(36)若有以下定义:struct link{ int data;struct link *next;} a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:指针p指向变量a,q指向变量c。
全国计算机等级考试2级C语言上机考试例题讲解
2级考试的上机题型有: 级考试的上机题型有: 级考试的上机题型有
1。填空题(30分,2~3个) 。填空题( 分 个 2。改错题(30分,2~3个) 。改错题( 分 个 3。程序编写题(40分,一定记得调试运行,否则没分!) 一定记得调试运行, 。程序编写题( 分 一定记得调试运行 否则没分! 1、 题是按照每个考点的答案给分的, 1、2 题是按照每个考点的答案给分的,也就是说只有和标准 答案一致的才是正确的 。虽然和标准答案不同也有可能运行 正确 ,但是也不能得分 。不过不用担心这个 ,因为题目简单 相应的正确答案的种类也少, 所以运行正确就OK 相应的正确答案的种类也少, 所以运行正确就 ;3题要求 题要求 最高、 最高、 也最灵活 ,只要能写出符合题目要求功能的代码就可 以得40分 以得 分。 出现的问题是: 出现的问题是:有时最后那题就是编不出来 ,前面又错了 就得50分 一点 就得 分……
}
2。删除字符串 。
[例5]:规定输入的字符串中只包含字母和*号。请编写函数 fun,它的功能是:将字符串中的前导*号全部删除,中间和尾部 的*号不删除。例如,若字符串中的内容为 *******A*BC*DEF*G****,删除后,字符串中的内容则应当 是A*BC*DEF*G****。 void fun (char *a) { char *p=a ; while(*p==‘*’) p++; for(; *p!=‘\0’;p++,a++) *a=*p; *a=‘\0’ ; }
练习:fun函数的功能是:在一个字符串中,删除指定 下标的字符,余下的形成一个新串,比如,串a为 “world”,n=3,则输出的字符串为“word”. void fun(char a[], charb[], int n) { int i,k=0 ; for(i=0;a[i]!=‘\0’;i++) {if ( i!=n ) b[k]=a[i]; k++;} b[k]=‘\0 ’;
全国计算机等级考试二级C上机题库难度题型总结
1.规定输入的字符串中只包含字母和*号。
请编写函数fun功能是:除了字符串前导的*号之外,将串中其它*号全部删除。
void fun( char *a ){int i=0;char *p=a;while(*p&&*p=='*'){a[i]=*p;i++;p++;}while(*p){if(*p!='*'){a[i]=*p;i++;}p++;}a[i]='\0';}2.规定输入的字符串中只包含字母和*号。
请编写函数fun功能是:将字符串中的前导*号全部移到字符串的尾部。
void fun( char *a ){int i=0,n=0;char *p;p=a;while (*p=='*') /*判断*p是否是*号,并统计*号的个数*/{n++;p++;}while(*p) /*将前导*号后的字符传递给a*/{a[i]=*p;i++;p++;}while(n!=0){a[i]='*';i++;n--;}a[i]='\0';}3. 规定输入的字符串中只包含字母和*号。
请编写函数fun功能是:除了尾部的*号之外,将字符串中其它的*号全部删除。
形参p已指向字符串中最后的一个字母。
void fun( char *a, char *p ){char *t=a;for(;t<=p;t++)if(*t!='*')*(a++)=*t;for(;*t!='\0';t++)*(a++)=*t;*a='\0'; /*在字符串最后加上字符串结束标识*/}4. 规定输入的字符串中只包含字母和*号。
请编写函数fun功能是:将字符串中的前导*号全部删除,中间和尾部的*号不删除。
void fun( char *a ){char *p=a;while(*p=='*') p++; /*指针p指向字符串第一个字母*/for(;*p!='\0';p++,a++)*a=*p; /*从第一个字母开始,其后的字符都放入指针a所指的字符串中*/*a='\0'; /*在字符串最后加上字符串结束标识*/}5. 规定输入的字符串中只包含字母和*号。
计算机等级考试二级C语言重点难点分析与题解
计算机等级考试二级C语言重点难点分析与题解第1章应试指南(略)第2章数据结构与算法本章节主要考查算法的基本概念、基本的数据结构及其基本操作、查找和排序算法。
本章的内容在历次试题中所占的比例约为11.2%,都是以选择题和填空题的形式出现的。
本章历次试题分数分布如表2-1所示。
从表2-1中我们可以看出,算法的基本概念、数据结构的定义、栈和树几乎是每次必考的知识点;查找和排序基本上每次有一道试题;线性表、队列和线性链表很少单独出题,但经常与其它知识点结合出题。
本章涉及知识点分值在历次试题中比重如图2-1所示。
2.1 算法的基本概念从图2-1可以看出,该节知识点所占试题比重为18%,属于重点考查对象,基本上每次必考,主要考查算法的定义和对算法复杂度的理解。
历次试题分值在0-4分之间波动,其变化趋势如图2-2所示。
2.1.1 考点1:算法的定义算法是对一个问题求解步骤的一种描述,是求解问题的方法,它是指令的有限序列,其中每条指令表示一个或者多个操作。
一般来说,一个算法具有以下5个主要的特征。
(1)有穷性:一个算法(对任何合法的输入)在执行有穷步后能够结束,并且在有限的时间内完成。
(2)确定性:算法中的每一步都有确切的含义。
(3)可行性:算法中的操作能够用已经实现的基本运算执行有限次来实现。
(4)输入:一个算法有零个或者多个输入,零个输入就是算法本身缺定了初始条件。
(5)输出:一个算法有一个或者多个输出,以反映出数据加工的结果。
例2.1.1 问题处理方案的正确而完整的描述称为______。
[2005年4月填空第5题]答案:算法例2.1.2 一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是()。
A.有零个或多个输入 B.有零个或多个输出C.有穷性 D.可行性答案:B例2.1.3 算法具有5个特性,以下选项中不属于算法特性的是()。
A.有穷性 B.简洁性 C.可行性 D.确定性答案:B第3章程序设计基础本章主要考查程序设计的一些基本知识,比如程序设计的方法与风格、结构化程序设计与面向对象程序设计的基本思想。
历年全国计算机等级考试二级C语言上机考试题库及答案
1.填空给定程序的功能是调用fun函数建立班级通讯录。
通讯录中记录每位学生的编号,姓名和电话号码。
班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。
请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.c中不得增行或删行,也不得更改程序的结构!void check();/**********found**********/int fun(___1___ *std){/**********found**********/___2___ *fp; int i;if((fp=fopen("myfile5.dat","wb"))==NULL)return(0);printf("\nOutput data to file !\n");for(i=0; i<N; i++)/**********found**********/fwrite(&std[i], sizeof(STYPE), 1, ___3___);fclose(fp);return (1);}修改给定程序MODI1.C中函数fun的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串后面。
例如:当s中的字符串为:“ABCDE”时,则他中的字符串应为:“ABCDEEDCBA”。
请改正程序中的错误,使他能得出正确的结果。
注意:不要改动main函数,不能增行或删行,也不得更改程序的结构!void fun (char *s, char *t){ int i, sl;sl = strlen(s);/************found************/for( i=0; i<=s1; i ++)t[i] = s[i];for (i=0; i<sl; i++)t[sl+i] = s[sl-i-1];/************found************/t[sl] = '\0';}程序函数fun的功能是:将两个两位数的正整数a,b合并成一个整数放在c中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.编写函数fun,其功能是:实现两个字符串的连接,即把p2所指的字符 串连接到p1所指的字符串的后面。
void fun(char p1[], char p2[]) { int i,j; for(i=0;p1[i]!='\0';i++) ; for(j=0;p2[j]!='\0';j++) p1[i++]=p2[j]; p1[i]=&入一个带头结点的链表结构中,h指向 链表的头结点。请编写函数fun,其功能是:求出平均分,并由函数值 返回。
double fun( STREC *h ) { double ave=0.0; STREC *p=h->next; while(p!=NULL) { ave=ave+p->s; p=p->next; } return ave/N; }
/*删除空格*/
/*加上结束符*/
18.请编写一个函数void fun(int m,int k,ing xx[]),该函数的功能是:将大 于整数m且紧靠m的k个素数存入所指的数组中。
void fun(int m,int k,int xx[]) { int i,j,n; for(i=m+1,n=0;n<k;i++) /*找大于m的素数,循环k次,即找出紧靠m的k个素数*/ {for(j=2;j<i;j++) /*判断一个数是否为素数,如果不是,跳出此循环,判断 下一个数*/ if(i%j==0) break; if(j>=i) /*如果是素数,放入数组xx中*/ xx[n++]=i; } }
void fun( char *a ) { while(*a!='\0') a++; a--; /*指针a指向字符串的尾部*/ while(*a=='*') a--; /*指针a指向最后一个字母*/ *(a+1)='\0'; /*在字符串最后加上结束标志符*/ }
7.学生的记录由学号成绩组成,N名学生的数据已放入主函数中的结构 体数组s中,请编写函数fun,其功能是:函数返回该学号的学生数据, 指定的学号在主函数中输入,若没找到指定学号,在结构体变量中给学 号置空串,给成绩置-1,作为函数值返回。
STREC fun( STREC *a, char *b ) {int i; STREC str={"\0",-1}; /*若没找到指定的学号,在结构体变量中给学号置空串,给成绩置 -1*/ for(i=0;i<N;i++) if(strcmp(a[i].num,b)==0) /*找到指定学号的学生数据*/ str=a[i]; return str; /*返回学生记录*/ }
16.请编写函数fun,该函数的功能是:统计一行字符串中单词的个数, 作为函数值返回。字符串在主函数中输入,规定所有单词由小写字母组 成,单词之间有若干个空格隔开,一行的开始没有空格。
int fun(char *s) { int i,j=0; for(i=0;s[i]!='\0';i++) if(s[i]!=' '&&(s[i+1]==' '||s[i+1]=='\0')) 空格或者结束标记,则表示一个单词结束*/ j++; return j; /*返回单词个数*/ }
15.请编写函数fun,其功能是:计算并输出下列多项式的值,S=(1-1/2)+ (1/3-1/4)+…+(1/(2n-1)-1/2n)
double fun(int n) { int i; double s=0.0; for(i=1;i<=n;i++) s=s+(1.0/(2*i-1)-1.0/(2*i)); /*计算S=(1-1/2)+(1/3-1/4)+(1/(2n1)-1/2n)*/ return s; }
int fun(char *str, char *substr) { int i,j=0; for(i=0;str[i+1]!='\0';i++) /*如果一个长度为2的子字符串 在主字符串中出现一次,则j+1,如此循环*/ if(str[i]==substr[0]&&str[i+1]==substr[1]) j++; return j; /*返回子字符串在主字符串中出现的次数*/ } 14.请编写函数fun,其功能是:计算并输出给定10个数的方差。
return j; }
/*返回最高成绩的学生人数*/
5.编写函数void fun(char *tt,int pp[]),统计在tt所指的字符串中’a’到’z’26 个小写字母各自出现的次数,并依次放在pp所指的数组中。 void fun(char *tt, int pp[]) { int i; for(i=0;i<26;i++) pp[i]=0; /*初始化pp数组各元素为0*/ for(;*tt!='\0';tt++) if(*tt>='a'&&*tt<='z') pp[*tt-'a']++; } 6.规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是: 将字符串尾部的*号全部删除,前面和中间的*号不动。
1.规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删 除字符串中所有的*号
void fun( char *a ) { int i,j=0; for(i=0;a[i]!='\0';i++) if(a[i]!='*') a[j++]=a[i]; /*若不是要删除的字符'*'则留下*/ a[j]='\0'; }
double fun(double x[10]) { double x1=0.0,s=0.0; int i; for(i=0;i<10;i++) x1=x1+x[i]; x1=x1/10; /*求10个数的平均值*/ for(i=0;i<10;i++) s=s+(x[i]-x1)*(x[i]-x1); return sqrt(s/10); /*求10个数的方差*/ }
/*如果一个字母的下一个字符为
17.请编写一个函数,用来删除字符串中的所有空格。
void fun (char *str) { int i=0; char *p=str; while(*p) { if(*p!=' ') { str[i]=*p; i++; } p++; } str[i]='\0'; }
w[j-1]=w[j]; } w[n-1]=ch; } } 11. 请编写函数fun,该函数的功能是:删除一维数组中所有相同的数, 使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后 数组中数据的个数。 int fun(int a[], int n) { int i,j=1; for(i=1;i<n;i++) if(a[j-1]!=a[i]) /*若该数与前一个数不相同,则要保留*/ a[j++]=a[i]; return j; /*返回不相同数的个数*/ } 12.请编一个函数fun(char *s),该函数的功能是:把字符串中的内容逆 置。 void fun(char*s) { char ch; int i,m,n; i=0; m=n=strlen(s)-1; /*将第i个和倒数第i个数互换,但循环的次数为数组长度的一半 */ while(i<(n+1)/2) { /*使用中间变量交换*/ ch=s[i]; s[i]=s[m]; s[m]=ch; i++; m--; } } 13.编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符 串中出现的次数。 /*将0到p个数组元素逐一赋给数组w[n-1]*/
{ int i; double av=0.0; *n=0; for(i=0;i<N;i++) av=av+a[i].s; av=av/N; /*求平均值*/ for(i=0;i<N;i++) if(av<=a[i].s) { b[*n]=a[i];*n=*n+1;} /*将高于等于平均分的学生存入b所 指存储单元中,并统计人数*/ return av; /*返回平均分*/ } 9.请编写函数fun,该函数的功能是:将M行N列的二维数组中的数据, 按列的顺序依次放到一维数组中。一维数组中数据的个数存放在形参n 所指的存储单元中。 void fun(int (*s)[10],int *b,int *n,int mm,int nn) { int i,j; for(j=0;j<nn;j++) /*将二维数组中的数据按列的顺序依次放 入一维数组中*/ for(i=0;i<mm;i++) { b[*n]=*(*(s+i)+j); *n=*n+1; /*通过指针返回元素个数*/ } } 10. 请编写函数fun,函数的功能是:移动一维数组中的内容,若数组中 有n个整数,要求把下标从0~p(含p,p小于等于n-1)的数组元素平移到数 组的最后。 void fun(int *w, int p, int n) { int x,j,ch; for(x=0;x<=p;x++) { ch=w[0]; for(j=1;j<n;j++) /*通过for循环语句,将p+1到n-1(菏n-1)之 间的数组元素依次向前移动p+1个存储单元*/ {