计算机程序改错题,及答案

合集下载

计算机二级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)主要考查对虚基类函数调用过程的理解,只有使用"::"限定才能访问基类函数,否则将会调用自身的函数,如果该类没有该函数的定义,则会自动调用其父类的该函数,所以必须使用“::”符号。

程序改错包括答案版本.docx

程序改错包括答案版本.docx

12592 '题目 : 编程求一个十进制整数n 的各位数字之和,设n 为小于或等于 5 位的数。

'------------------------------------------------Option ExplicitPrivate Sub Form_Click()Dim N As Integer, Sum As Integer, S1As String, S2 As StringDim i As Integer, Ch As StringSum = 0N = InputBox(" 输入整数n")S1 = Str(N)S1 = Trim(S1)For i = 1 To Len(S1)'**********ERROR**********Ch = Mid(N, i, 1)'**********ERROR**********Sum = Val(Ch)Next iPrint " 该整数的各位数之和是: "; Sum End Sub答案: Ch=Mid(S1 , i , 1)Sum = Sum + Val(Ch)12610'题目:程序功能根据输入的学习成绩, 分别显示优秀 (90 分以上 ), 良好 (75 分以上 ), 及格 (60 分以上 )不及格四个等级 .'------------------------------------------------Option ExplicitPrivate Sub Form_Click()ClsDim i As Integeri = InputBox(" 请输入学习成绩")Select Case i'**********ERROR**********Case 0 < i < 100MsgBox " 成绩应该在0--100 之间 """ '**********ERROR**********Case 90Print " 优秀 "Case 75 To 89Print " 良好 "Case 60 To 74Print " 及格 "'**********ERROR**********CaseMsgBox " 不及格 ", vbCritical End SelectEnd Sub答案: Case 100 < x or x < 0Case 90 to 100Case Else12616.题目:求 s=1!+3!+5!+7! ,阶乘的计算用Function 过程 fact 实现 .'------------------------------------------------Option ExplicitPrivate Sub Form_Click()Dim i As Integer, s As Integer'**********ERROR**********For i = 1 To 7s = s + fact(i)Next iPrint sEnd Sub'**********ERROR**********Public Function fact()Dim t As Integer, i As Integert = 1For i = 1 To nt = t * iNext i'**********ERROR**********fact = iEnd Function答案: For i = 1 To 7 Step 2Public Function fact%(n%)fact = t12620 题目 :编程实现从左到右的滚动字幕,滚动的速度由滚动条控件来控制。

程序改错完整版---C语言

程序改错完整版---C语言

(一)功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。

#include "stdio.h"#define N 20void fun(int a[], int n){int i, j, t, k;for (j = 0 ;j < n-1 ;j++){/**********ERROR**********/k = jfor (i = j+1;i < n; i++)/**********ERROR**********/if(a[i] >a[k])/**********ERROR**********/k=j;t = a[k] ;a[k] = a[j] ;a[j] = t;}}main(){int a[N]={9,6,8,3,-1},i, m = 5;printf("排序前的数据:") ;for(i = 0;i < m;i++)printf("%d ",a[i]);printf("\n");fun(a,m);printf("排序后的数据:") ;for(i = 0;i < m;i++)printf("%d ",a[i]);printf("\n");}【参考答案】k = j;【参考答案】if(a[i] < a[k])if(a[k] > a[i])【参考答案】k = i;(二)功能:求广义菲玻那契级数的第n项。

广义菲玻那契级数的前n 项为: 1,1,1,3,5,9,17,31,……项值通过函数值返回 main ( )函数。

例如:若 n = 15,则应输出:The value is: 2209。

#include "conio.h"#include "stdio.h"long fun ( int n ){long a=1, b=1, c=1, d=1, k;/**********ERROR**********/for (k=4; k<n; k++){d = a+b+c;/**********ERROR**********/a=bb=c;c=d;}/**********ERROR**********/return k;}main( ){int n = 15;printf( "The value is: %ld\n", fun ( n ) );}【参考答案】for (k=4; k<=n; k++)【参考答案】a=b;【参考答案】return d;(三)功能:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

与考试有关的C语言程序改错

与考试有关的C语言程序改错

一、程序改错共138题(共计1380分)━━━━━━━━━━━━━━━━━━第1题(10.0分)/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:根据整型形参m,计算如下公式的值:y=1+1/3+1/5+1/7+...+1/(2m-3)------------------------------------------------------*/#include "stdio.h"double fun(int m){/**********FOUND**********/double y=1int i;/**********FOUND**********/for(i=3; i<m; i++)/**********FOUND**********/y+=1.0/(2i-3);return(y);}void main(void){int n;clrscr();printf("Enter n: ");scanf("%d", &n);printf("\nThe result is %1f\n", fun(n));getch();}答案:1). double y=1;2). for(i=3; i<=m; i++) 或for(i=3; i<m+1; i++)3). y+=1.0/(2*i-3);第2题(10.0分)/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。

c语言题库改错题及详解答案

c语言题库改错题及详解答案

c语言题库改错题及详解答案C语言是一种广泛使用的计算机编程语言,它以其强大的功能和灵活性而闻名。

在学习和掌握C语言的过程中,练习题库中的改错题是提高编程技能的有效方式。

以下是一些常见的C语言改错题及其详解答案。

1. 题目:编写一个程序,计算并输出1到10的累加和。

错误代码:```cint main() {int sum = 0;for(int i = 1; i <= 10; i++) {sum = sum + i;}print("Sum is %d", sum);return 0;}```错误点: `print` 函数应为 `printf`。

正确代码:```c#include <stdio.h>int main() {int sum = 0;for(int i = 1; i <= 10; i++) {sum += i; // 可以简化为 sum += i;}printf("Sum is %d\n", sum);return 0;}```2. 题目:编写一个程序,判断输入的年份是否为闰年。

错误代码:```cint main() {int year;printf("Enter a year: ");scanf("%d", &year);if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {printf("%d is a leap year.\n", year);} else {printf("%d is not a leap year.\n", year);}return 0;}```错误点:逻辑判断的括号使用不正确。

正确代码:```c#include <stdio.h>int main() {int year;printf("Enter a year: ");scanf("%d", &year);if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {printf("%d is a leap year.\n", year);} else {printf("%d is not a leap year.\n", year);}return 0;}```3. 题目:编写一个程序,实现字符串的反转。

全国计算机二级C语言程序改错题(必过)

全国计算机二级C语言程序改错题(必过)

目录题目一前N项和问题 (3)题目二SS字符串问题 (4)题目三变量互换问题1 (4)题目三变量互换问题2 (5)题目三变量互换问题3 (5)题目四最大公约数问题 (6)题目五长数变短数1 (7)题目五长数变短数2 (7)题目五长数变短数3 (8)题目五长数变短数4 (9)题目五长数变短数5 (9)题目五长数变短数6 (10)题目五长数变短数7 (11)题目五长数变短数8 (11)题目五长数变短数9 (12)题目六斐波拉契数列 (13)题目七链表1 (14)题目七链表2 (15)题目七链表3 (16)题目七链表4 (17)题目八非素数问题 (19)题目九排序问题1 (19)题目九排序问题2 (20)题目九排序问题3 (21)题目九排序问题4 (22)题目九排序问题5 (23)题目九排序问题6 (24)题目九排序问题6 (25)题目九排序问题7 (26)题目十平均值问题1 (26)题目十平均值问题2 (27)题目十平均值问题3 (28)题目十平均值问题4 (29)题目十平均值问题5 (30)题目十一字符串连接1 (30)题目十一字符串连接2 (31)题目十一字符串连接3 (32)题目十一字符串连接4 (33)题目十二求和问题1 (33)题目十二求和问题2 (34)题目十二求和问题3 (35)题目十二求和问题4 (36)题目十二求和问题6 (38)题目十二求和问题7 (38)题目十二求和问题8 (39)题目十二求和问题9 (39)题目十二求和问题10 (40)题目十二求和问题11 (41)题目十二求和问题12 (42)题目十二求和问题13 (42)题目十二求和问题14 (43)题目十二求和问题15 (44)题目十二求和问题16 (44)题目十二求和问题17 (45)题目十二求和问题18 (46)题目十二求和问题19 (46)题目十三整数问题 (47)题目十四字符串逆置 (48)题目十五进制转换1 (48)题目十五进制转换2 (49)题目十六素数问题1 (50)题目十六素数问题2 (50)题目十六素数问题3 (51)题目十六素数问题4 (52)题目十六素数问题5 (53)题目十七删除字符串中指定项1 (53)题目十七删除字符串中指定项2 (54)题目十八最小公倍数问题 (55)题目十九字符串替换问题1 (55)题目十九字符串替换问题2 (56)题目二十找最长字符串 (58)题目二十一数组问题1 (58)题目二十一数组问题2 (59)题目二十一数组问题3 (60)题目二十二求平方根问题 (61)题目二十三短字符串变长字符串1 (62)题目二十三短字符串变长字符串2 (62)题目二十三短字符串变长字符串3 (63)题目二十三短字符串变长字符串4 (64)题目二十四字符串s问题1 (64)题目二十四字符串s问题2 (65)题目二十四字符串s问题3 (66)题目二十五求方程的根 (67)题目二十六求阶乘1 (68)题目二十六求阶乘2 (69)题目二十七方阵问题 (70)题目二十八查找字符串中某元素的数目 (71)题目二十九最大值问题1 (72)题目二十九最大值问题2 (72)题目二十九最大值问题3 (73)题目三十大小写转换1 (74)题目三十大小写转换2 (75)题目三十大小写转换3 (76)题目三十一:计算数字位数的问题1 (77)题目三十一:计算数字位数的问题2 (78)题目三十一:计算数字位数的问题3 (79)题目三十一:计算数字位数的问题4 (80)题目三十二统计字母数字个数问题1 (81)题目三十二统计字母数字个数问题2 (82)题目三十二统计字母数字个数问题3 (83)题目三十二统计字母数字个数问题4 (83)题目三十三对角线问题 (84)题目三十四比较字符串大小 (85)题目一前N项和问题.下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。

程序改错题

程序改错题

程序改错题第一篇:程序改错题1、 Gaicuo1.cpp的功能是:1!+2!+3!+……+20!。

程序有两处错误,在****found****处附近有错,请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include void main() {float s=0,t; int n,i; for(n=1;n<=20;n++) { for(i=1,t=1;i<=n;i++) t=t*i; /****found*****/ /****found****/}2、 gaicuo2.cpp的功能是:输入两个不等的整数分别给x和y,输出其中的大数。

程序有两处错误,在****found****处附近有错,请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include void main( ) { int x,y; printf("Enter x & y:\n"); scanf("%d%d",&x,&y); /****found****/ if(x}3、gaicuo3.cpp的功能是交换两个数,若输入10和20,则输出20和10。

程序有两处错误,在****found****处附近有错,请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include void main( ) { int x,y,t; printf("Enter x & y:\n"); /****found****/ scanf("%d%d",&x,&y); /****found****/ t=x; x=y;y=t; printf("x=%d y=%d",x,y) ; } 4. gaicuo4.cpp的功能是输入一个整数,判别它是否能被3整除,若能整除,打印YES;不能打印NO。

C语言改错题-含答案

C语言改错题-含答案

第1题【程序改错】功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。

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

------------------------------------------------------*/#include <conio.h>#include <stdio.h>#include <string.h>void fun (char *s, char *t){/**********FOUND**********/int i;sl = strlen(s);for (i=0; i<sl; i++)/**********FOUND**********/t[i] = s[sl-i];for (i=0; i<sl; i++)t[sl+i] = s[i];/**********FOUND**********/t[2*sl] = "0";}main(){char s[100], t[100];printf("\nPlease enter string s:"); scanf("%s", s);fun(s, t);printf("The result is: %s\n", t);}答案:1). int i,sl;2). t[i] = s[sl-i-1];3). t[2*sl] = '\0'; 或 t[2*sl] = 0;第2题【程序改错】功能:求出以下分数序列的前n项之和。

和值通过函数值返回main 函数。

2/1+3/2+5/3+8/5+13/8+21/13 ……例如:若n = 5,则应输出:8.391667。

------------------------------------------------------*/#include <conio.h>#include <stdio.h>/**********FOUND**********/fun ( int n ){int a, b, c, k; double s;s = 0.0; a = 2; b = 1;for ( k = 1; k <= n; k++ ){/**********FOUND**********/s = (double)a / b;c = a;a = a + b;b = c;}/**********FOUND**********/return c;}main( ){int n = 5;printf( "\nThe value of function is: %lf\n", fun ( n ) );}答案:1). double fun(int n)2). s = s + (double)a / b; 或 s += (double)a / b; 或 s += a /(double)b; 或s=s+a/(double)b;3). return s;第3题【程序改错】功能:读入一个整数m( 5≤m≤20 ),函数getarr调用函数rnd获得m个随机整数,函数sortpb将这m个随机整数从小到大排序。

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

11*程序名:TEST.prg*检索选修课程门数等于3门或3门以上,每门课程成绩大于或等于70分的每个学生的*学号,姓名,性别,平均成绩,最低分和选课门数,并将结果存储到表NEW_TEST中.*以下程序有三处错误,请改正OPEN DA TABASE SDBSELECT STUDENT.学号,姓名,性别,A VG(成绩) 平均成绩,MIN(成绩) 最低分,COUNT(*) 选课门数;FROM STUDENT,SC;WHere STUDENT.学号= SC.学号AND 成绩>= 70 ; &&**********Error**********GROUP BY STUDENT.学号HA VING count(课程号) >= 3; &&**********Error**********inTO table NEW_TEST &&**********Error********** CLOSE ALL9*程序名:dbtest3.prg*定义一个视图VS1,*检索选课门数是3门以上的每个学生的学号、姓名、平均成绩、最低分、选课门数和院系编号,*并按平均成绩降序排序.*以下程序有三处错误,请改正SET TALK OFFSET SAFETY OFFopen DATABASE SDB &&****Error***修改本行的语法错误,不许注释掉本行或删除本行CREATE VIEW VS1SELECT STUDENT2.学号, 姓名, A VG(成绩) 平均成绩, MIN(成绩) 最低分, COUNT(*) 选课门数, 院系编号;FROM STUDENT2, sc; &&*************Error*************WHERE STUDENT2.学号= SC.学号;GROUP BY SC.学号HA VING COUNT(课程号) > 3;ORDER BY 平均成绩desc &&*************Error*************CLOSE DATABASERETURNi=2create table four(结果I)do while i<=1000if i%3=0insert into four values(i) &&错误语句请修改endifi=i+1 && 请增加一条语句enddocreate database 学习情况create table 学生(姓名C(20),学号C(10) primary key) &&有错误alter table 学生add总分I &&有错误alter table 学生alter总分set check 总分<=800 and 总分>=0 &&有错误insert into 学生values ("林红","20100808",788) &&有错误update 学生set 总分=786 where 学号="20100808"&&有错误alter table employee alter 性别set check 性别="男" or 性别="女"SELECT Department.部门名, count(*) as 总人数;FROM employee_m!department INNER JOIN employee_m!employee ;ON Department.部门号= Employee.部门;group by 部门号;INTO TABLE tone.dbfSELECT Department.部门名, count(*) as 人数_男;FROM employee_m!department INNER JOIN employee_m!employee ;ON Department.部门号= Employee.部门;where 性别="男";group by 部门号;INTO TABLE ttwo.dbfSELECT tone.部门名, ttwo.人数_男, 总人数-人数_男as 人数_女, tone.总人数;FROM tone INNER JOIN ttwo ;on tone.部门名=ttwo.部门名;order by tone.部门名desc;INTO TABLE tableone12*程序名:dbtest61.prg*检索同时选修课程号c1和c2的学生的学号*以下程序有三处错误,请改正SELECT 学号;FROM SC ;WHERE 课程号= 'c1' AND 学号in ; &&************Error************ ( SELECT 学号FROM SC ; &&************Error************WHERE 课程号= 'c2' ) &&************Error************CLOSE DATABASE*程序名:dbtest4.prg*检索选课门数大于或等于3门以上的每个学生的学号、姓名、平均成绩、最低分、选课门数和院系,*并按平均成绩降序排序,将结果存储到表TEST1中.*以下程序有三处错误,请改正SET TALK OFFSET SAFETY OFFSELECT STUDENT.学号, 姓名, A VG(成绩) 平均成绩, MIN(成绩) 最低分, COUNT(*) 选课门数,院系院系;FROM STUDENT, SCORE;WHERE STUDENT.学号= SCORE.学号;GROUP BY STUDENT.学号HA VING count(课程编号) >= 3; &&*********Error************ ORDER BY 平均成绩desc; &&*********Error************INTO table TEST1 &&*********Error************RETURN18 $$75所有器件的单价增加5元UPDATE order_detail1 SET 单价=单价+ 5计算每种器件的平均单价SELECT 器件号,A VG(单价) AS 平均价FROM order_detail1 group BY 器件号INTO CURSOR lsb&&查询平均价小于500的记录SELECT * FROM lsb where平均价< 50019&&功能:如果用户输入的用户名和口令一致,则在提示信息后关闭该表单;&&否则重新输入用户名和口令。

&&**********Error**********************if thisform.text1.text = thisform.text2.textwait "欢迎使用……" window timeout 1&&**********Error**********************thisform.releaseelsewait "用户名或口令不对,请重新输入……" window timeout 1endif20&&使表单的标题为:简单应用thisform.caption="简单应用"&&在表格控件中显示order_list表的记录thisform.grid1.recordsource="order_list.dbf"&&关闭表单thisform.release32open database 外汇数据use currency_sl&&***********Error*****************locate for 姓名="林诗因"summ=0&&***********Error*****************do while not eof()select 现钞买入价from rate_exchange ;where rate_exchange.外币代码=currency_sl.外币代码into array a &&***********Error*****************summ=summ+a[1] * currency_sl.持有数量continueenddo?summ37***在下一行添加一条打开customer表的语句, 然后把"(此处空行)"删除use customer***表没有索引,修改如下语句使之能显示所有“北京”客户的信息SCAN for所在地='北京'? 客户编号,公司名称,联系人姓名ENDSCAN38SELECT 零件名称FROM 零件信息WHERE 零件号in ;(SELECT 零件号FROM 使用零件;GROUP BY 零件号HA VING COUNT(项目号) = 3) ;ORDER BY 零件名称;to FILE results45(15)*下面的程序在第1行、第2行和第5行有错误,请直接在错误处修改。

*修改时,不可改变SQL语句的结构和短语的顺序,不允许增加或合并行。

open database sdbCREATE VIEW s_view as ;SELECT Class.班级号, 班级名, 姓名, 性别, 教师名AS 班主任名;FROM Student,Class,Teacher ;WHERE Student.班级号= Class.班级号and Teacher.教师号= Class.班主任号46(15)*下面的程序在第5行、第6行、第8行和第9行有错误,请直接在错误处修改。

*修改时,不可改变SQL语句的结构和短语的顺序,不允许增加或合并行。

OPEN DATABASE SELLDBSELECT S_T.部门号,部门名,年度,;一季度销售额+ 二季度销售额+ 三季度销售额+ 四季度销售额AS 全年销售额,;一季度利润+ 二季度利润+ 三季度利润+ 四季度利润AS 全年利润,;(一季度利润+ 二季度利润+ 三季度利润+ 四季度利润)/ (一季度销售额+ 二季度销售额+ 三季度销售额+ 四季度销售额)AS 利润率;FROM S_T,DEPT;WHERE S_T.部门号= DEPT.部门号;order BY 年度,利润率DESC;INTO table S_SUM49*本程序的功能为输入圆柱体的半径和高,计算圆柱体表面积。

相关文档
最新文档