吉林省计算机二级考试程序改错题解析.DOC

合集下载

计算机二级C++练习题:程序改错题

计算机二级C++练习题:程序改错题

计算机二级C++练习题:程序改错题为了使广大考生在备战计算机等级考试时,更快的掌握相应知识点,下面是店铺搜索整理的计算机二级C++练习题:程序改错题,供参考练习,预祝考生们考出自己理想的成绩!计算机二级C++练习题:程序改错题01使用VC6打开考生文件夹下的工程kt9_1,此工程包含一个源程序文件kt9_1.cpp,但该程序运行有问题,请改正程序中的`错误,使程序的输出结果如下:4,520源程序文件清单如下:#includeclassA{protected:intn,m;public:voidset(inta,intb){m=a;n=b;}voidshow(){cout<<m<<","<<n<<endl;}/**********found**********/}classB:publicA{ints;public:voidset(){s=m*n;}voidshows(){cout<<s<<endl;}};voidmain(){Bb;/**********found**********/b.set();b.show();b.set();/**********found**********/b.show();}【参考答案】(1)在“}”后添加分号(2)将b.set();改为:b.A::set(4,5);(3)将b.show();改为:b.shows();【试题解析】(1)主要考查对类定义格式的掌握,类的结尾应该使用";";(2)主要考查对基类与派生类函数调用关系的掌握,根据所要求的输出结果,应该调用的函数为类A的set,而不是类B自身的set函数,应该避免调用的二义性;(3)主要考查对继承与派生的理解,由所要求输出结果可知正确:b.shows()。

计算机二级C++练习题:程序改错题02使用VC6打开考生文件夹下的工程kt10_1,此工程包含一个源程序文件kt10_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为:classBaseclassD1classD2classD3finBase源程序文件kt10_1.cpp清单如下:#includeclassBase{public:Base(){cout<<"classBase"<<endl;}voidf(){cout<<"finBase"<<endl;}};classD1:virtualpublicBase{public:D1(){cout<<"classD1"<<endl;}voidf(){cout<<"finD1"<<endl;}};/**********found**********/classD2:publicBase{public:D2(){cout<<"classD2"<<endl;}};/**********found**********/classD3::publicD1,publicD2{public:D3(){cout<<"classD3"<<endl;}};voidmain(){D3d;/**********found**********/d.f();}【参考答案】(1)将classD2:publicBase改为:classD2:virtualpublicBase(2)将classD3::publicD1,publicD2改为:classD3:publicD1,publicD2(3)将d.f();改为:d.Base::f();【试题解析】(1)主要考查对虚基类的理解,虚基类可以解决二义性的问题,其定义方式是在继承列表中使用virtual关键字,使用虚基类可以避免程序运行中对基类函数调用的不惟一;(2)主要考查对类的定义方法的掌握,“::”为作用域符,此处应该使用“:”,因为后面是继承列表;(3)主要考查对虚基类函数调用过程的理解,只有使用"::"限定才能访问基类函数,否则将会调用自身的函数,如果该类没有该函数的定义,则会自动调用其父类的该函数,所以必须使用“::”符号。

计算机二级上机考试程序修改题应试技巧

计算机二级上机考试程序修改题应试技巧

计算机二级上机考试程序修改题常见应试技巧
计算机二级上机考试,题库每年都有,如果你的记忆力足够好,再加上那么一点
点运气的话,把每年的100题目全部都背下来,还是可以顺利通过上机考试的(或者
说是应付…)。

但是,一百套题,背着背着就会混淆,所以光背是远远不够的,所以,本人在这里把最容易拿分的程序修改题的应试技巧总结下来,分享给大家。

上机之后,针对程序修改题,首先单击F7,进行Build操作。

步骤如下:
1、单击“F7”
2、出现这个对话框后单击“是”
3、程序最下方会出现这样的显示:MODI1.exe - 1 error(s), 0 warning(s)。


提示“MODI1.exe - 1 error(s)”中“”error(s)不为零时,即为程序有
错误,无法执行。

在这个框中我们向上看出现错误的信息。

4、在程序修改题中,题目中所有的错误都出现在
“/************found************/”的下方,换句话说,就是
有几个“/************found************/“,其下方就有几处
错误。

5、各种错误信息的出现形式、修改方法参见下表:
上面介绍的是C语言上机考试程序修改题目中最常见的错误类型,总结出来供大家参考,希望对大家有所帮助,谢谢!。

计算机二级上机考试(程序改错题)1

计算机二级上机考试(程序改错题)1

11、第一大类(交换类)共7道/**found**/t=*x; *x=y;/**found**/return(t);2. 程序修改(第60套)void fun(int *a,int *b)/**found**/t=*b;*b=*a;*a=t;2.程序修改(第88套)/**found**/void fun(int *x, int *y)/**found**/t=*x,*x=*y,*y=t;2、第二大类(计算类)共22道2.程序修改(第1套)求岀以下分数序列的前n 项之和。

2/1+3/2+5/3+8/5+13/8+21/13+……和值通过函数值返回main函数。

例如n=5,则应输出:。

/**foun d**/double fun (i nt n)/**foun d**/s=s+(double)a/b;2.程序修改(第6套)给定程序中函数fun的功能是:用递归算法计算列中第n 项的值。

从第一项起,斐波拉契数列为:1、1、2、3、5、8、13、21、/**found**/ switch(g)/**found**/case 1:case 2:return 1;2.程序修改(第13套)long s=0,t=0;t=t/10;2.程序修改(第21套)double f(double x)/**found**/ return s;2.程序修改(第27套)/**found**/double fun(double a,doublex0)/**found**/if(fabs(x1-x0)> 2程序修改(第29套)/**found**/#define FU(m,n) (m)/(n)return (value);2.程序修改(第33套)/**found**/for (i =2 ; i<= m; i++)/**found**/y+=1.0/ ( i* i);2.程序修改(第37套)/**found**/while((fabs(t))>=num)/**found**/t=s/n2.程序修改(第45套)/**found**//**found**/t+=i;2/**found**/result *=n__;2.程序修改(第48套)/**found**/for (i =2 ; i<= m; i++)/**found**/y+=1.0/ ( i* i);s=s +(double)(n+1)/n;/**found**/return t;2.程序修改(第52套)/**found**/int fun(int n)/**found**/if(n==1) 2.程序修改(第58套)给定程序中函数fun的功能是:求K! <k<13>,所求阶乘的值作为函数值返回。

计算机二级C上机考试程序改错题及答案

计算机二级C上机考试程序改错题及答案

计算机二级C上机考试程序改错题及答案计算机二级C上机考试程序改错题及答案为了使广大考生在备战计算机等级考试时,更快的掌握相应知识点,下面是店铺搜索整理的计算机二级C上机考试程序改错题及答案,供参考练习,预祝考生们考出自己理想的.成绩!程序改错题使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正程序中的错误,使程序输出的结果为1063022注意:错误的语句在//******error******的下面,修改该语句即可。

试题程序:#includeclassTC{private:intnumber;intAdd(inti){returnnumber+=i:}intSub(inti){returnnumber-=i:}intMul(inti){returnnumber*=i:}intDiv(inti){if(i!=O){returnnumber/=i;}else returnnumber;}//******error****** typedefint(FUNC)(int);//******error****** FUNCfunc[];public:TC(){fune[0]=TC::Add;,fund[1]=TC::Sub;func[2]=TC::Mul;func[3]=TC::Div;number=0;}intCallFunetion(inti,intj) {//******error****** return(func[i])(j);}};voidmain(){TCmyobj;cout<<myobj.callfunction(0,10)<<endl;cout<<myobj.callfunction(1,4)<<endl;cout<<myobj.callfunction(2,5)<<endl;cout<<myobj.callfunction(3,15)<<endl;cout<<myobj.callfunction(3,o)<<endl;}解析:(1)应改为:“typedefint(TC::*FUNC)(int);”。

吉林省计算机二级考试程序改错题解析.DOC

吉林省计算机二级考试程序改错题解析.DOC

*【程序改错】*题目:在XSDB.DBF中查找学生徐秋实的记录, 如果找到则将该记录* 的系别、姓名,两科科目名称和对应的成绩显示在屏幕上,否则* 显示:"查无此人!"。

答案:1). LOCATE FOR姓名="徐秋实"2). ?系别,姓名,"计算机="+★STR★(计算机),"英语="+★STR★(英语) 或 ?系别,姓名,"... 〖第2题〗『程序改错』(5分)*题目:求2!+4!+6!+…+10!的和答案:1). T=1T★*★N 或 T=★N★*★T3). S=★S★+★T 或 S=★T★+★S〖第1题〗『程序改错』(5分)*题目:有一个字符串"ABC",将其插入3个数字转换为:"A1B2C3"输出。

答案:1). A=SUBS(C1,I★,1) 或 A=SUBSTR(C1,I★,1)2). C2=★C2★+★A+★STR(I,1)*【程序改错】*题目:有学生数据库STD.DBF文件,其中学号字段的前两位是班号。

* 请编写程序MODI1.PRG:选择所有少数民族(非汉族)的学* 生参加某项活动,按民族的拼音次序升序排列,同民族的按* 照学号升序排列,并为之生成编号。

编号的前两位是班号,* 后两位是统一新编序号。

并将学号、编号、姓名、性别和* 民族添加到数据库文件BS中。

答案:1). index★on★民族★+★学号★to★std.idx2). <>3). subs(学号,1,2) +★STR(NUM,1) 或 left(学号,2) +★STR(NUM,1)〖第1题〗『程序改错』(5分)*题目:从键盘上输入5个数,将其中奇数求和,偶数求积。

答案:1). S2=12). IF MOD(M,2)<>0 或 IF MOD(M,2)#0 或 IF INT(M/2)★<>★M/2 或 IF INT(M/2)★#★...*【程序改错】*题目:求0-7这8个数字所能组成的奇数个数。

计算机二级等级考试C语言改错题讲解

计算机二级等级考试C语言改错题讲解

1.调试C程序时常见的错误类型分析一般情况下,错误主要分为两大类:一、语法错误。

对于这种错误,用编译器很容易解决。

所以,改错题的第一步是先编译,解决这类语法错误。

下面总结了二级C 语言上机改错题中常见的语法错误:(1)丢失分号,或分号误写成逗号。

(2)关键字拼写错误,如本来小写变成大写。

(3)语句格式错误,例如for语句中多写或者少写分号。

(4)表达式声明错误,例如:少了()(5)函数类型说明错误。

与main()函数中不一致。

(6)函数形参类型声明错误。

例如:少*等。

(7)运算符书写错误,例如:/写成了\。

二、逻辑错误,或者叫语义错误,这和实现程序功能紧密相关,一般不能用编译器发现。

对于逻辑错误可以按这样的步骤进行查找。

(1)先读试题,看清题目的功能要求。

(2)通读程序,看懂程序中算法的实现方法。

(3)细看程序,发现常见错误点。

2.改错题的改错方式总结,当然这些总结只能对大部分改错行有效。

1、若错误行是函数首部,可分为以下几种情况:A、该行最后若有分号则删除,中间若有分号则改成逗号B、形参类型不一致的问题,特别是指针类型,若后面用到某形参时有指针运算则该形参必为指针类型;若形参是二维数组或指向m个元素的指针变量,则第二维的长度必须与main中对应数组的第二维长度相同C、函数类型不一致的问题,若函数中没有return语句则函数类型为void,若有return语句则函数的类型必须与return 后变量的类型一致。

2、若错误行是if或while语句,则首先看有没有用小括号将整个表达式括起,若没有则加上小括号。

3、若错误行中有if、while、for则要特别注意条件表达式的错误问题:A、指针变量的应用,若表达式中有指针变量且没有指针运算符,则加上指针运算符B、若条件表达式中只有一个等于号,则改成两个等于号,若为其它比较运算符则一般是进行逆转或加一个等于号C、for中要用分号分隔表达式,而不是用逗号4、语法错误A、语句缺少分号,若错误行中有语句没有用分号结束,则加上分号。

计算机等级考试二级C语言程序改错题(一)

计算机等级考试二级C语言程序改错题(一)

一、下列给定程序中函数proc的功能是:取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。

例如,当s中的数为123456789时,t中的数为2468。

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

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

试题程序:#include <stdio.h>// ****found****void proc(long s,long *t){long sl=10;s/=10;*t=s%10;// ****found****while (s>0){s=s/100;*t=s%10*sl+*t;sl=sl*10;}}int main(){long s,t;printf("Please enter s:");scanf("%ld",&s);proc(s,&t);printf("The result is:%ld\n",t);return 0;}参考答案:(1)错误:void proc(long s,long t)正确:void proc(long s,long *t)(2)错误:while (s<0)正确:while (s>0)【解析】从主函数中实参可知,形参的第二个变量是长整型的指针变量。

因此“void proc(long s,long t)”应改为“void proc(long s,long *t)”;要从低位开始取出长整型变量s 中偶数位上的数,每次变量S要除以100,然后判断其是否大于0来决定是否要继续,因此“while(s>0)”。

给定程序中,函数proc()的功能是:使数组中的元素的值缩小5倍。

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

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

试题程序:#include <stdio.h>// ****found****void proc(double m[]){int i;for (i=0; i<10;i++){// ****found****m[i]=m[i]/5;}}int main(){int i;double m[10];printf("before calling\n");for (i=0;i<10;i++){m[i]=i+20;printf("%lf ",m[i]);}proc(m);printf("\nafter calling\n");for(i=0; i<10; i++)printf("%lf ",m[i]);printf("\n");return 0;}参考答案:(1)错误:int proc(int m[])正确:void proc(int m[])(2)错误:m[i]=m[i]%5;正确:m[i]=m[i]/5;【解析】由主函数中的函数调用可知,函数proc()没有返回值。

计算机程序设计员二级一级题库js改错

计算机程序设计员二级一级题库js改错

Sign未定义,应该为fuhao.value将remember.checked =false修改为remember.checked = true9、j=i+1开始,修改这里,将i的初始值设为0 ,因为数组下标是从0开始的,如果从1开始,则忽略掉了第一个元素No改为none减号改成加号,102、斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n 2,n N*)。

(1)本题分值:20分(2)考核时间:20分钟(3)考核形式:机试(4)请在python环境中用分别循环或递归的方式输出Fibonacci的前19项。

理解要点:第一会递归算法,第二发现规律假设10位评委的打分是99,80,86,89,94,92,75,87,86,95,现需要运用Python语言进行编程实现:去掉一个最高分,去掉一个最低分,计算平均分,并打印出来。

打印格式为:去掉一个最高分:XX分,去掉一个最低分:XX分,最后得分为:XX分(1)本题分值:20分(2)考核时间:20分钟(3)考核形式:机试(4)请在python环境中输入运行,并达到以下要求:1) 列表的使用:元素的访问,元素的删除;2) 分值大小的比较;3) 列表元素的遍历;4) 计算总和和平均值;5) 输出正确的结果。

# 创建列表存储评委打分scores = [99, 80, 86, 89, 94, 92, 75, 87, 86, 95]# 方法一:# 找出并删除最高分和最低分h_score = max(scores)l_score = min(scores)scores.remove(h_score)scores.remove(l_score)# 计算剩余分数的总和和平均分total_score = sum(scores)average_score = total_score / len(scores)# 打印结果print(f"去掉一个最高分:{h_score}分,去掉一个最低分:{l_score}分,最后得分为:{average_score:.2f}分")# 方法二:scores = [99, 80, 86, 89, 94, 92, 75, 87, 86, 95]scores.sort()min_score=scores[0]max_score=scores[-1]del scores[0]del scores[-1]average_score_2 = sum(scores)/ len(scores)print(f"去掉一个最高分:{max_score}分,去掉一个最低分:{min_score}分,最后得分为:{round(average_score_2,2)}分")。

计算机二级考试部分试题及答案讲解

计算机二级考试部分试题及答案讲解

第一套一、改错题1 .题目要求下列给定程序中函数fun的功能是:计算函数F(x, y, z)= (x + y)/(x —y) + (z+ y)/(z —y)的值。

其中x和y 的值不相等,z和y的值不相等。

例如,当x的值为9, y的值为11, z的值为15时,函数值为一3.50。

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

注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构。

#i nclude <stdio.h>#in clude <math.h>#in clude <stdlib.h>**********fo un d**********#defi ne FU(m, n) ((m/n)) float fun (float a,float b,float c) { float value;value=FU(a+b,a-b)+FU(c+b,c-b);**********fo un d**********Return(Value);}mai n(){ float x,y,z,sum;prin tf("I nput x y z:");scan f("%f%f%f", &x, &y,& z);prin tf("x=%f,y=%f,z=%f\n",x,y,z);if (x==y||y==z){pri ntf("Data error!\n");exit(0);} sum=fu n(x,y,z);printf("The result is : %5.2f\n",sum);}2 .算法分析①#define FU(m,n) ((m/n)) 错误这样定义FU (m,n)造成语句value=FU(a+b,a-b)+FU(c+b,c-b) 执行为value=(a+b/a-b)+(c+b/c-b) ,所以应该将语句#define FU(m,n) ((m/n))改为#define FU(m,n) (m)/(n)②语句Return(Value);错误 C 语言中大小写字母有不同的含义,此处希望执行返回value的值的操作,所以应该改为return(value);二、填空题1 .题目要求下列给定程序中,函数fun的功能是:有NXN矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。

计算机等级考试二级C语言上机改错题考点汇总[推荐阅读]

计算机等级考试二级C语言上机改错题考点汇总[推荐阅读]

计算机等级考试二级C语言上机改错题考点汇总[推荐阅读]第一篇:计算机等级考试二级C语言上机改错题考点汇总计算机等级考试二级C语言上机改错题考点汇总青年人网站小编发现很多考生对上机考试存在很大的问题,现在小编将在教学当中对二级C语言上机考试题库总结的经验和大家分享,希望能对我们考生的考试有所帮助,顺利通过考试!以下是对上机考试改错题的做题方法和总结,改错题的错误主要分为以下几类:1、if或while语句若错误行是if或者while语句,则要注意以下点:1)首先判断是否正确书写if或while关键字;2)然后看有没有用小括号把整个表达式括起来,若没有则加上小括号;3)若条件表达式中有指针变量而且没有指针运算符时,则加上指针运算符;4)若if条件表达式中只有一个等于号即数学等号(=),则要改写成两个等于号即逻辑等号(= =);5)若if条件表达式为其他的比较运算符,则一般是进行逆转或加一个等于号;2、for语句若错误行是for语句,则要注意以下几点:1)首先判断for有没有书写正确;2)然后看for中的表达式是不是用分号(;)隔开,若不是则改为分号。

记住是分号(;),不是逗号(,)!3)再者,分析for中的三个表达式,是否符合题意;第一个表达式表示起始条件,第二个表达式表示终止条件,第三个表达式表示循环变量的变化。

3、return语句若错误行为return语句,则要注意以下几点:1)首先看是不是正确书写return关键字;2)然后看是不是缺少分号,若是则加上分号即可;3)再者判断return后的变量或表达式是否正确;这种错误需要根据题意来分析,分析返回变量或表达式的值和类型。

4、赋值语句若错误行是赋值语句,则要看赋值是否正确,然后看赋值运算符是否写正确。

5、定义语句若错误行是定义语句,则要注意:1)首先分析变量类型名是否写对;2)然后分析给变量赋初值是否正确;3)若以上均不是,则看是不是少定义了某个变量或少了花括号; 第二篇:二级C语言上机考试改错题总结二级C语言上机考试改错题总结根据本人多年研究全国计算机等级考试二级若错误行中有整数1除以某个表达式或变量时,必C语言,发现很多考生对上机考试存在很大的问须把整数1改为1.0;若变量或表达式是整型时,题。

计算机二级C++程序题及答案解析

计算机二级C++程序题及答案解析

计算机二级C++程序题及答案解析计算机二级C++程序题及答案解析为了使广大考生在备战计算机等级考试时,更快的掌握相应知识点,下面是店铺搜索整理的计算机二级C++程序题及答案解析,供参考练习,预祝考生们考出自己理想的成绩!计算机二级C++程序题及答案解析一、改错题使用VC6打开考生文件夹下的工程kt7_1,此工程包含一个源程序文件kt7_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:Constructor1Constructor1Constructor1DestructorConstructor2Destructorx=0x=5DestructorDestructor源程序文件kt21_1.cpp清单如下:#includeclassB{intx;public:B(){x=0;cout<<"Constructor1"<<endl;}< p="">B(inti){x=i;cout<<"Constructor2"<<endl;}< p="">~B(){cout<<"Destructor"<<endl;}< p="">/**********found**********/~B(inti){cout<<i<<"bedestructor"<<endl;}< p="">voidprint(){cout<<"x="<<x<<endl;}};< p="">voidmain(){B*ptr;ptr=newB[2];/**********found**********/ptr[0]=B(0);ptr[1]=B(5);/**********found**********/for(inti=0;i<2;)ptr[i].print();[]ptr;}【参考答案】(1)将~B(int i){cout<<i<<" p="" destructor?<<endl;}删除<="" be="">(2)将ptr[0]=B(0);改为:ptr[0]=B();(3)将for (int i=0;i<2;)改为:for(int i=0;i<2;i++)B(inti){x=i;cout<<"Constructor2"<<endl;}< p="">~B(){cout<<"Destructor"<<endl;}< p="">/**********found**********/~B(inti){cout<<i<<"bedestructor"<<endl;}< p="">voidprint(){cout<<"x="<<x<<endl;}};< p="">voidmain(){B*ptr;ptr=newB[2];/**********found**********/ptr[0]=B(0);ptr[1]=B(5);/**********found**********/for(inti=0;i<2;)ptr[i].print();[]ptr;}【参考答案】(1)将~B(int i){cout<<i<<" p="" destructor?<<endl;}删除<="" be="">(2)将ptr[0]=B(0);改为:ptr[0]=B();(3)将for (int i=0;i<2;)改为:for(int i=0;i<2;i++)【试题解析】本题主要考查对文件相关操作的熟练程度。

计算机二级C语言改错题答案

计算机二级C语言改错题答案

第1题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';}答案:(1)for( i=0; i<=sl-1; i ++) (2)t[sl+i] = '\0'; 第2题/************found************/void fun (long s, long t){ long sl=10;*t = s % 10;while ( s > 0){ s = s/100;*t = s%10 * sl + *t;/************found************/sl = sl*100;}}main(){ long s, t;printf("\nPlease enter s:"); scanf("%ld", &s);fun(s, &t);printf("The result is: %ld\n", t);}答案:(1)void fun (long s, long *t) (2)sl = sl*10;第3题void fun ( int n, int *a ){ int i, j, p, t;for ( j = 0; j<n-1 ; j++ ){ p = j;/************found************/for ( i=j+1; i<n-1 ; i++ )if ( a[p]>a[i] )/************found************/t=i;if ( p!=j ){ t = a[j]; a[j] = a[p]; a[p] = t; }}}答案:(1)for ( i=j+1; i<n ; i++ ) (2)p=i; 第4题void fun (long s, long *t){ int d;long sl=1;*t = 0;while ( s > 0){ d = s%10;/************found************/if (d%2=0){ *t=d* sl+ *t;sl *= 10;}/************found************/s \= 10;}}答案:(1)if (d%2 = = 0) (2)s /= 10;第5题long fun (long num){/************found************/long k;do{ k*=num%10 ;/************found************/num\=10 ;} while(num) ;return (k) ;}答案:(1)long k=1; (2)num /=10 ;第6题/************found************/fun (char a){ if ( *a ){ fun(a+1) ;/************found************/printf("%c" *a) ;}}main( ){ char s[10]="abcd";printf("处理前字符串=%s\n处理后字符串=", s);fun(s); printf("\n") ;}答案:(1)fun (char *a) (2)printf("%c", *a) ; 第7题void fun(int a[], int n){ int i, j, t, p;for (j = 0 ;j < n-1 ;j++) {/************found************/p = jfor (i = j+1;i < n; i++)if(a[i] < a[p])/************found************/p = j;t = a[p] ; a[p] = a[j] ; a[j] = t;}}答案:(1)p = j ;(2)p = i;第8题fun ( char *p){ int i,t; char c[80];/************found************/For (i = 0,t = 0; p[i] ; i++)if(!isspace(*(p+i))) c[t++]=p[i];/************found************/c[t]="\0";strcpy(p,c);}答案:(1)f or (i = 0,t = 0; p[i] ; i++) (2)c[t]='\0'; 第9题char * fun (char *s, char *t ){char *p , *r, *a;/************found************/a = Null;while ( *s ){ p = s; r = t;while ( *r )/************found************/if ( r == p ){ r++; p++; }else break;if ( *r == '\0' ) a = s;s++;}return a ;}答案:(1) a = NULL; (2)if ( *r == *p ) 第10题void fun (char *s, char *t1, char *t2 , char *w) {char *p , *r, *a;strcpy( w, s );while ( *w ){ p = w; r = t1;/************found************/while ( r )if ( *r == *p ) { r++; p++; }else break;if ( *r == '\0' ){ a = w; r = t2;while ( *r ){/************found************/*a = *r; a++; r++}w += strlen(t2) ;}else w++;}}答案:(1)while ( *r ) (2)*a = *r; a++; r++; 第11题int fun (char *s, char *t){int n; char *p , *r;n = 0;while ( *s ){ p = s; r = t;while ( *r )if ( *r == *p ) {/************found************/r++; p++}else break;/************found************/if ( r == '\0' )n++;s++;}return n;}答案:(1)r++; p++;(2)if ( *r == '\0' )第12题/************found************/IsPrime ( int n );{ int i, m;m = 1;for ( i = 2; i < n; i++ )/************found************/if !( n%i ){ m = 0; break ; }return ( m );}main( ){ int j, k;printf( "\nPlease enter an integer number between 2 and 10000: " ); scanf( "%d", &k );printf( "\n\nThe prime factor(s) of %d is( are ):", k );for( j = 2; j <= k; j++ )if( ( !( k%j ) )&&( IsPrime( j ) ) ) printf( "\n %4d", j );printf("\n");}答案:(1)IsPrime ( int n ) (2)if ( n%i = =0)第13题long fun ( int k){/************found************/if k > 0return (k*fun(k-1));/************found************/else if ( k=0 )return 1L;elsereturn 1L;}答案:(1)if ( k > 0 )(2)else if ( k= =0 )第14题void fun ( char str[][10], int m, char *pt ){/************found************/Int k, q, i ;for ( k = 0; k < m; k++ ){ q = strlen ( str [k] );for (i=0; i<q; i++)/************found************/pt[i] = str[k,i] ;pt += q ;pt[0] = 0 ;}}答案:(1)i nt k, q, i ;if ( k > 0 )(2)pt[i] = str[k][i] ;第15题/**********found**********/void fun ( int a, b ){ int t;/**********found**********/t = b; b = a ; a = t;}main ( ){ int a, b;printf ( "Enter a , b : "); scanf ( "%d,%d", &a, &b );fun ( &a , &b ) ;printf (" a = %d b = %d\n ", a, b );}答案:(1)void fun ( int *a, int *b ) (2)t = *b; *b = *a ; *a = t; 第16题void fun ( int * a, int n ){ int i, m, t, k ;for(i=0;i<2;i++) {/**********found**********/m=0;for(k=i+1;k<n;k++)/**********found**********/if(a[k]>a[m]) k=m;t=a[i];a[i]=a[m];a[m]=t;}}答案:(1)m= i ; (2)if(a[k]>a[m]) m=k;第17题/**********found**********/void fun(char str, char ch ){ while ( *str && *str != ch ) str++;/**********found**********/if ( *str = = ch ){ str [ 0 ] = ch;/**********found**********/str[1] = '0';}}main( ){ char s[81], c ;printf( "\nPlease enter a string:\n" ); gets ( s );printf ("\n Please enter the character to search : " );c = getchar();fun(s, c) ;printf( "\nThe result is %s\n", s);}答案:(1)void fun(char *str, char ch ) (2)if (*str!= ch) (3)str[1] = '\0';评析】(1)fun函数中先设置了二个循环从字符串str中寻找字符ch,如果找到则中断循环并保留字符ch的地址,否则一直循环到串尾"。

计算机二级C语言程序修改题解题思路

计算机二级C语言程序修改题解题思路

计算机二级C语言程序修改题解题思路计算机二级C语言程序修改题解题思路12通信3班盛伟上次计算机二级缺几分及格,所以只能参加今年3月份的二级考试了。

我认认真真的做了50套程序改错题,这里我总结了一些对于此题解题的经验与想法,过级的略过,没过级的大家不妨看看,希望对大家有用哦!首先大家有没有注意到每套程序改错题中到底哪里错了,在哪里改,这是个关键,也是我们需要思考的驻点。

我可是真的发现了规律,当然这个规律我去年9月份备考二级的时候就已经发现了。

请看下面。

(每套题都是这样)例如:/***************found***************/d=d\10;(这就是错误的所在处,改错就在此处改)改为d=d/10;在这里我们将/***************found***************/称为错误栏,那么每道题的错误处就在这个错误栏的下面,改正就好了。

当然到底怎么改,改的过程我们需要注意什么问题,我想这是我们大家都很关心的问题,那就由我为大家说说解题思路吧。

我觉得第一步大家还是得锁定错误所在处,接着就应该看是否出现那些不易发现的“低级错误”,其实往往就是这些错误却很容易被我们忽略。

这点我为大家总结了一些,供大家复习所用。

我以例子的形式给大家展现出来:(1)符号错误:1.if(t==0)被写成if(t=0) 2.d=d/10;被写成d=d\10;(2)大小写混乱:3.if(*a)被写成If(*a) 4. s=s+(double)a/b;被写成s=s+(Double)a/b; 5.前文定义了int y,而下文却写成了Y=1;(3)漏加标点符号:6.printf(“%c” *a);错误在于没有加上逗号,应该改为printf(“%c”,*a);7.for语句中有两个分号,但是题目往往会写成两个逗号,这是大家需要注意的地方。

8.漏加分号如:result *=n-- 错误就在于末尾没有加上分号,应该改为result *=n--;9.多加分号如在if语句后面加上分号也是错误的。

二级改错题答案

二级改错题答案

1.2给定程序MODI1.C中函数fun的功能是:先将在字符串s中的字符串按正序存放到t串中,然后把s终端字符按逆序连接到t串的后面。

例如:当s中的字符串为”ABCDE”时,则t中的字符串应为:“ABCDEEDCBA”。

第一处:把s1改成sl第二处:把t[sl]=‘\0’改成t[2*sl]=‘\0’2.2给定程序MODI1.C中的函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。

高位仍在高位,低位仍在低位。

例如:当s 中的数为:7654321时,t中的数为:7531。

第一处:void fun(long s,long t)改为void fun(long s, long *t)第二处:sl=sl*100改为sl=sl*103.2给定程序MODI1.C中的函数fun的功能是:将n个无序整数从小到大排序。

第一处:for(i=j+1;i<n-1;i++)改为for (i=j+1;i<n;i++)第二处:t=i改成p=i4.2给定程序MODI1.C中的函数fun的功能是:将长整型数中的每一位上为偶数的数依次取出,构成一个新数放在t中。

高位仍在高位,低位仍在低位。

例如:当s中的数为:87654321时,t中的数为:8642。

第一处:if(d%2=0)改为if(d%2= =0)第二处:s\=10;改为s/=105.2给定程序MODI1.C中的函数fun的功能是:计算正整数num的各位上的数字之积。

例如:若输入:252,则输出应该是20。

若输入:202,则输出应该是:0。

第一处:long k改为long k=1;第二处:num\=10改为num/=106.2给定程序MODI1.C中函数fun的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。

例如,若字符串为abcd,则应输出:dcba. 第一处:fun(char a)改为fun(char *a) 第二处:printf(“%c“*a)改为printf(“%”,*a)7.2给定程序modi1.c中函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

*【程序改错】
*题目:在XSDB.DBF中查找学生徐秋实的记录, 如果找到则将该记录
* 的系别、姓名,两科科目名称和对应的成绩显示在屏幕上,否则
* 显示:"查无此人!"。

答案:
1). LOCATE FOR姓名="徐秋实"
2). ?系别,姓名,"计算机="+★STR★(计算机),"英语="+★STR★(英语) 或 ?系别,姓名,"... 〖第2题〗『程序改错』(5分)
*题目:求2!+4!+6!+…+10!的和
答案:
1). T=1
T★*★N 或 T=★N★*★T
3). S=★S★+★T 或 S=★T★+★S
〖第1题〗『程序改错』(5分)
*题目:有一个字符串"ABC",将其插入3个数字转换为:"A1B2C3"输出。

答案:
1). A=SUBS(C1,I★,1) 或 A=SUBSTR(C1,I★,1)
2). C2=★C2★+★A+★STR(I,1)
*【程序改错】
*题目:有学生数据库STD.DBF文件,其中学号字段的前两位是班号。

* 请编写程序MODI1.PRG:选择所有少数民族(非汉族)的学
* 生参加某项活动,按民族的拼音次序升序排列,同民族的按
* 照学号升序排列,并为之生成编号。

编号的前两位是班号,
* 后两位是统一新编序号。

并将学号、编号、姓名、性别和
* 民族添加到数据库文件BS中。

答案:
1). index★on★民族★+★学号★to★std.idx
2). <>
3). subs(学号,1,2) +★STR(NUM,1) 或 left(学号,2) +★STR(NUM,1)
〖第1题〗『程序改错』(5分)
*题目:从键盘上输入5个数,将其中奇数求和,偶数求积。

答案:
1). S2=1
2). IF MOD(M,2)<>0 或 IF MOD(M,2)#0 或 IF INT(M/2)★<>★M/2 或 IF INT(M/2)★#★...
*【程序改错】
*题目:求0-7这8个数字所能组成的奇数个数。

答案:
1). do★while★j<★=★8 或 do★while★j<★9
2). sum= sum +s
3). j=j+1 或 j=1+j
〖第1题〗『程序改错』(5分)
*题目:将一串ASCII码字符"ABC123",逆序输出为:321CBA"。

答案:
1). L=LEN(S)
2). L=L-1
〖第2题〗『程序改错』(5分)
*题目:ZHG.DBF是一个职工信息文件,其中包含编号(C 5)、姓名
* (C 8)、性别(C 2)、政治面目(C 4)、出生日期(D 8)等字
* 段。

性别用字符串"男"或"女"表示,此文件已按出生日期
* 建立了索引,索引文件名是ZHG_SR.IDX。

* 程序MODI1.PRG功能是:按年龄由小到大的顺序显示输出所
* 有"男"职工的编号、姓名和出生日期;
答案:
1). USE★ZHG★INDEX★ZHG_SR 1). USE★ZHG★INDEX★ZHG_SR
2). DO★WHILE★.NOT.BOF() 或 DO★WHILE★!BOF()
3). SKIP★-1
〖第1题〗『程序改错』(5分)
*题目:将200到300之间的所有能被3整除或被5整除的数求和并统计个数。

答案:
1). IF INT(I/3)★=I/3★.OR.★INT(I/5)=★I/5 或 IF MOD(I,3)=0★.OR.★MOD(I,5)=0...
2). C=★1+C 或 C=★C+1
〖第2题〗『程序改错』(5分)
*题目:计算并显示输出数列1,-1/2, 1/4, -1/8, 1/16 …的
* 前10项之和
答案:
1). DO★WHILE★C<=10★或 DO★WHILE★C<11
2). I=I★*2 或 I=-I*★(-2)
3). ENDD★O
〖第1题〗『程序改错』(5分)
*题目:将200到300之间的所有能被3整除或被5整除的数求和并统计个数。

答案:
1). IF INT(I/3)★=I/3★.OR.★INT(I/5)=★I/5 或 IF MOD(I,3)=0★.OR.★MOD(I,5)=0...
2). C=★1+C 或 C=★C+1
〖第2题〗『程序改错』(5分)
*题目:请考生编写程序 MODI1.PRG,其功能是计算下列多值函数的值:
* ┌ABS(x) x<0
* ├ex 0<=x<1
* y=├x2 1<=x<3
* └INT(x) x>=3
* 计算的数据都存放在数据库shj.dbf中,该数据库只有两个字段:
* X(N,4.1)和Y(N,6.4)。

在程序中读取字段X的数据,然后把计算
* 结果存放在字段Y中,最后把shj.dbf所有记录复制到shj1.dbf * 文件中。

答案:
1). CASE★X1>=0★.AND.★X<1
2). Y1=EX★P(X1)
3). REPLACE★YW★ITH★Y1
(1)计算s=1+3+5+…+99的程序。

答案:1)do while i<=99
2) I=2+i。

相关文档
最新文档