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的功能是:逆置数组元素是的值。
- 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个存储单元*/ {