计算机程序改错题,及答案
计算机二级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
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语言
(一)功能:用选择法对数组中的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语言程序改错
一、程序改错共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语言改错题及其详解答案。
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语言程序改错题(必过)
目录题目一前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语言改错题-含答案
第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.01、if k>1应改为if(k>1)或if(1<k)2.01、result*=--n应改为result*=n-- 02、应填result;3.01、k++应改为k++; 02、if(m=k)应改为(if(m==k)4.01、IsPrime(int n);应改为IsPrime(int n) 02、if!(n%i)应改为if(!(n%i)) 5.01、if(i%k!=0)应改为if(i%k==0) 02、if(k<i)应改为if(k>=i)6.01、y=0;应改为y=1; 02、d=i-a;应改为d=a-i;7.01、break后应加上一个分号“;”,即break;8.01、fun(int n)应改为double fun(int n) 02、return sum应改为return sum;9.01、long k;应改为long k=1; 02、num\=10;应改为num/=10;10.01、j=1;应改为j=0; 02、while(t!=0&&m!=0&&n!=0)应改为while(t!=0||m!=0||n!=0)11.01、b=a;应改为a=b; 02、return(a);应改为return(b);12.01、void fun(char *s,*t1,*t2,*w)应改为void fun(char *s,char *t1,char*t2,char*w) 02、while(r)应改为while(*r)13.01、int k=1;应改为int k=0; 02、while(*p!=*q)应改为while(*p||*q)14.01、while(*s!= ‘@’)应改为while(*s)或while(*s!= ‘\0’)或while(*s!=0) 02、(*s)++;应改为s++;15.01、s[j]=s[i];应改为s[j++]=s[i]; 02、s[j]= “\0”;应改为s[j]= ‘\0’; 16.01、void upfst (char p)应改为void upfst (char *p)17.01、if(p== ‘’)应改为if(*p== ‘’) 02、*p=toupper(*(p-1));应改为*(p-1)=toupper(*(p-1));18.01、if((tt[i]>= ‘a’)||(tt[i]<= ‘z’))应改为if((tt[i]>= ‘a’)&&(tt[i]<= ‘z’)) 02、tt[i]+=32;应改为tt[i]-=32;19.01、while(i>j)应改为while(i<j)或while(j>i) 02、c=0;应改为*c= ‘\0’;或*c=0; 20.01、if(i%2&&s[i]%2==0)应改为if(i%2||s[i]%2==0)或if(i%2!=0||s[i]%2==0) 02、t[i]= ‘\0’;应改为t[j]= ‘\0’;或t[j]=0;21.01、void fun(char *s,int num[5];应改为void fun(char *s,int num[5]) 02、num[i]=0;应改为num[k]=0; 03、switch(s)应改为switch(*s)22.01、void fun(char *s,int a,int b)应改为void fun(char *s,int *a,int *b) 02、a++;应改为(*a)++; 03、b++;应改为(*b)++23.01、if(r==p)应改为if(*r==*p) 02、if(r== ‘\0’)应改为if(*r== ‘\0’) 24.01、*r=t;应改为r=t;或r=&t[U]; 02、应填r=t;或r=&t[u];25.01、a=NuLL;应改为a=NULL; 02、if(r==p)应改为if(*r==*p)26.01、int fun(char *str,*substr)应改为int fun(char *str,char *substr) 02、for(i=0,str[i],i++)应改为for(i=0;str[i];i++)27.01、c=c-32;应改为c=c+32; 02、c=c-5应改为c=c+5;28.01、if(i+1%5==0)应改为if((i+1)%5==0)29.01、bb[i]=0或*(bb+i)=0 02、bb[5]++或++bb[5]或bb[5]=bb[5]+1或bb[5]+=1 03、p++;或++p;或p+=1;或p=p+1;30.01、void fun(int a,int b)应改为void fun(int *a,int *b) 02、t=b;b=a;a=t;应改为t=*b;*b=*a;*a=t;31.01、t=x;x=y;应改为t=*x;*x=y; 02、return(y);应改为return(t);或return t; 32.01、s=p;应改为p=s; 02、应填p++;或++p;或p+=1;或p=p+1; 03、a[i]= ‘0’;应改为a[i]= ‘\0’;或a[i]=0;33.01、void fun(char str[][],int m,char *pt)应改为void fun(char str[][10],int m,char *pt) 02、pt[i]=str[k,i];应改为pt[i]=str[k][i];34.01、void fun(char s,char t)应改为void fun(char *s,char *t) 02、t[2*d-1]= ‘\0’;应改为t[2*d]= ‘\0’;或t[d+i]= ‘\0’;35.01、fun函数定义少了一个{,应该在int fun(double x[],int n)后面加一个{ 36.01、double fun(char *s,char *t)应改为char *fun(char *s,char *t) 02、(*ss)++;应改为ss++; 03、(*tt)++;应改为tt++;37.01、for(i=j+1;i<n-1;i++)应改为for(i=j+1;i<n;i++) 02、t=i;应改为p=i;38.01、void fun(char a)应改为void fun(char *a)39.01、for(i=strlen(t);i;i--)应改为for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--) 02、if(t[j]<t[j+1])应改为if(t[j]>t[j+1]) 40.01、c=aa[i];应改为ch=aa[i];41.01、void fun(char(*pstr)[6])应改为void fun(char *pstr[6]) 02、if(strcmp(*(pstr+i),pstr+j)>0)应改为if(strcmp(*(pstr+i),*(pstr+j))>0) 03、*(pstr+i)=pstr+j;应改为*(pstr+i)=*(pstr+j);42.01、void fun(int *a,int n);应改为void fun(int *a,int n) 02、m=0;应改为m=i;43.01、for(i=0;i<=s1;i++)应改为for(i=0;i<s1;i++) 02、t[s1]= ‘\0’;应改为t[2*s1]= ‘\0’44.01、void fun(char *p);应改为void fun(char *p) 02、p=q+i;应改为q=p+i; 45.01、if(t=0)应改为if(t==0) 02、zero=count;应改为*zero=count;46.01、c[t]= “\0”;应改为c[t]= ‘\0’;47.01、return 1;应改为return 3; 02、return 3;应改为return 1;48.01、填空sum=0 02、scanf(“%d”,a[i][j]);应改为scanf(“%d,”,&a[i][j]); 49.01、int fun(int m,int xx[])应改为int fun(int m,int xx[][M]) 02、printf(“%4f”,xx[i][j]);应改为printf(“%4d”,xx[i][j]);50.同48题51.01、void fun(int a)应改为void fun(int a[M])或void fun(int a[])或void fun(int *a) 02、a[j]=a[j+1];应改为a[j]=a[j-1];52.01、fun(int **a,int m)应改为void fun(int (*a)[M],int m) 02、a[j][k]=k*j;应改为a[j][k]=(k+1)*(j+1);53.01、n=*p- ‘o’;应改为n=*p- ‘0’; 02、n=n*7+*p- ‘o’;应改为n=n*8+*p- ‘0’54.01、voidfun(int m,int k);应改为void fun(int m,int k) 02、aa[i]=m/k;应改为aa[i]=m%k; 03、printf(“%d”,aa[i]);应改为printf(“%d”,aa[i-1]); 55.01、for(i=0;i<=3;i++)应改为for(i=1;i<=3;i++) 02、if(k>=1&&k<=6)应改为if(k>=0&&k<=6)56.01、d=0;应改为d=1; 02、s=1;应改为s=0; 03、s=s/10;应改为d=d/10; 57.01、for(i=1;i<y;i++)应改为for(i=1;i<=y;i++) 02、t=t/1000;应改为t=t%1000; 58.01、int sum=0.0;应改为double sum=0.0 02、sum\=c;应改为sum/=c;59.01、fun(int m)应改为double fun(int m) 02、for(i=100,i<=m,i+=100)应改为for(i=100;i<m;i+=100)60.01、for(i=2;i<m;i++)应改为for(i=2;i<=m;i++) 02、y-=1/(i*i);应改为y-=1.0/(i*i);61.01、t=1.0-1/i;应改为t-=1.0/i;或t=t-1.0/i;或t-=(double)1/i; 02、应填returnt;62.01、t+=1.0/k;应改为t=+1.0/i; 02、应增加一个返回语句return t;63.01、fun (int n)应改为double fun(int n) 02、b+=c;应改为b=c;64.01、fun(int k)应该为double fun(int k) 02、return s应改为return s; 65.01、while (t>=num)应改为while (fabs(t)>=num) 02、t=s%n;应改为t=s/n; 66.01、fun(n)应改为int fun(int n) 02、if(n=1)应改为if(n==1)67.01、#define FU(m,n) (m/n)应改为#define FU(m,n) (m)/(n) 02、Return (value);应改为return (value);68.01、p=h;应改为p=h->next; 02、p=h->next;应改为p=p->next;69.01、p->next=NULL;应改为p=s; 02、s->data=rand()%m;应改为s->data=rand()%(m-1); 03、return p;应改为return h;70.01、while(p->next)应改为while(p!=NULL)或while(p) 02、p=h->next;应改为p=p->next;71.01、a[i+1]=a[i];应改为a[i]=a[i+1];72.01、p=j应改为p=j; 02、p=i;应改为p=j;73.01、t=s[k];应改为t+=s[k]; 02、*aver=&ave;应改为*aver=ave;74.01、void fun(char str,char ch)应改为void fun(char *str,char ch) 02、if(*str==ch)应改为if(*str== ‘\0’) 03、str[1]= ‘0’;应改为str[1]= ‘\0’;或str[1]=0;75.01、if((k%13=0)||(k%17=0))应改为if((k%13==0)||(k%17==0)) 02、应加一个} 76.01、void fun(long s,long t)应改为void fun(long s,long *t) 02、while(s<0)应改为while(s>0)77.01、void fun(int a[],int m)应改为int fun(int a[],int m) 02、if(m>=a[mid]应改为if(m>a[mid])78.01、for(i=2;i<m;i++)应改为for(i=2;i<=m;i++) 02、y+=1/(i*i);应改为y+=1.0/(i*i);79.01、if n==0应改为if(n==0) 02、result=n--;应改为result *=n--;80.01、t=0;应改为t=1.0; 02、while(t<=eps)应改为while(t>=eps)81.01、k=n;应改为k=i; 02、b=k/10;应改为b=k%10;82. 01、void fun(char*s,t1,t2,w)应改为void fun(char *s,char *t1,char *t2,char *w) 02、while(w)应改为while(*w)83.01、fun(char(*sq)[N])应改为char *fun(char(*sq)[M]) 02、return sq;应改为return sp;84.01、*t=malloc(sizeof(STU));应改为t=(STU *)malloc(sizeof(STU)*m); 02、t[k].num=b[j].num;应改为strcpy(t[k].num,b[j].num);85.01、t[i]=s[s1-i];应改为t[i]=s[s1-i-1];或t[i]=s[s1-1-i];86.01、switch(g);应改为swithc(g) 02、case 1;应改为case 1:87.01、i=1;应改为i=0; 02、while(i<3||*p)应改为while(i<3&&*p) 03、b[k]= ‘’;应改为b[k++]= ‘’;88.01、void fun(long s,long t)应改为void fun(long s,long *t) 02、s1=s1*100;应改为s1=s1*10;89.01、int fun(int *b);应改为int fun(int *b) 02、for(k=10;k<=55;k++)应改为for(k=1;k<55;k++) 03、return k;应改为return i;90.01、long s1=0;应改为long s1=1; 02、s\=10;应改为s/=10;91.01、fun(int n)应改为double fun(int n) 02、s=s+(Double)a/b;应改为s=s+(double)a/b;92.01、fun(int n)应改为double fun(int n) 02、for(i=2;i<n;i++)应改为for(i=2;i<=n;i++)93.01、void fun(int x,int y)应改为void fun(int *x,int *y) 02、t=x;x=y;y=t;应改为t=*x;*x=*y;*y=t;94.01、s[j]=s[i];应改为s[j++]=s[i]; 02、s[i]= ‘\0’;应改为s[j]= ‘\0’; 95.01、float *k;应改为float k; 02、if(*s<*p)应改为if(*s>*p)96.01、long s=0,t=1;应改为long s=0,t=0; 02、for(j=0;j<=n;j++)应改为for(j=0;j<n;j++) 03、t=t%10;应改为t=t/10;97.01、s=s+(n+1)/n;应改为s=s+(double)(n+1)/n; 02、return s;应改为return t; 98.01、f(double x)应改为double f(double x) 02、return s应改为return s; 99.01、int i,j,k,sum;应改为int i,j=0,k,sum; 02、if(sum%4=2)应改为if(sum%4==2) 100.01、int r;应改为double r; 02、while(fabs(n-m)<0.001)应改为while(fabs(n-m)>0.001)101.01、fun(double a,double x0)应改为double fun(double a,double x0) 02、if(abx(x1-x0)>=le-6)应改为if(fabs(x1-x0)>=le-6)。
程序改错题
程序改错题共2题,每题5 分答题注意事项:调试程序中要修改、编译、运行,观察结果的正确性容易出现VC死掉现象,这时用Ctrl+Del+Alt组合键进入Windows任务管理器,结束VC进程。
就可以继续操作了。
第一题/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:求1到10的阶乘的和。
------------------------------------------------------*/#include "stdio.h"main(){ int i;float t,s=0;float fac(int n);/**********FOUND**********/for(i=1;i<10;i++)/**********FOUND**********/s=fac(i);printf("%f\n",s);}float fac(int n){ /**********FOUND**********/int y=1;int i;for(i=1 ;i<=n;i++)y=y*i;/**********FOUND**********/return;}修改后的程序:/*------------------------------------------------------【程序改错】功能:求1到10的阶乘的和。
------------------------------------------------------*/#include "stdio.h"main(){ int i;float t,s=0;float fac(int n);/**********FOUND**********/for(i=1;i<10;i++)/**********FOUND**********/s=s+fac(i);printf("%f\n",s);}float fac(int n){ /**********FOUND**********/int y=1;int i;for(i=1 ;i<=n;i++)y=y*i;/**********FOUND**********/return y;}老师得分:2分标准答案:第二题/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。
程序改错复习题答案
程序改错复习题答案1. 题目:在下面的代码中找出并修正错误,使其能够正确计算并输出两个数的和。
```pythondef sum_numbers(a, b):result = a + bprint("The sum is:", result)sum_numbers(5, "3")```答案:错误在于第二个参数传递了一个字符串类型的值,而函数期望的是一个数字类型。
应将字符串 "3" 改为整数 3。
```pythondef sum_numbers(a, b):result = a + bprint("The sum is:", result)sum_numbers(5, 3)```2. 题目:修正以下代码中的错误,使其能够正确地将列表中的所有元素乘以2。
```pythonmy_list = [1, 2, 3, 4]for i in range(len(my_list)):my_list[i] = my_list[i] * 2print(my_list)```答案:代码本身没有错误,可以直接运行。
但是,更高效的方式是使用列表推导式。
```pythonmy_list = [1, 2, 3, 4]my_list = [x * 2 for x in my_list]print(my_list)```3. 题目:找出并修正以下代码中的错误,使其能够正确地计算并输出一个数的平方。
```pythondef square_number(n):return n * nprint(square_number("5"))```答案:错误在于函数调用时传递了一个字符串类型的值,而函数期望的是一个数字类型。
应将字符串 "5" 改为整数 5。
```pythondef square_number(n):return n * nprint(square_number(5))```4. 题目:修正以下代码中的错误,使其能够正确地遍历字典中的所有键值对。
-程序改错部分试题及答案
第1题/*i【程序改错】功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
------------------------------------------------------------------------------------ * #include <stdio. h>ttdefine N 11main(){int i,number,a[N] = {l,2,4,6,8t9t12,15,149,156);printf(^please enter an integer to insert in the array:\n n):/**********FOUND**********/scanf(”%d&number)printf("The original array:\rT);for(i=0;i<N-l;i++)printf (^%5(1 M,a[i]);printf(*\n n);/**********FOUND**********/for(i=N-l;i>二0;i--)if(number<=a[il)/**********FOUND**********/a[i]=a[i-l]:else{a[i+l]=number;/**********FOUND**********/exit;}if(number<a[0]) aL0]二number;printf(^The result array:\n”);for(i=0;i<N;i++)printf(n%5d w,a[il);printf(H\n H);}第2题/♦ ------------------------------------------------------------------------------------ 【程序改错】功能:求如下表达式:S = 1 + ——+ ——+ .................. + ------------1+2 1+2+3 1+2+3+ ......... +n------------------------------------------------------------------------------------ */ #include <stdio.h>main()int n;double fun ();printf ("Please input a nilmber:R):/**********FOUND**********/print("^d^.n);printf(H%10. 6f\n w,fun(n));}/♦♦********FOUND**********/fun(int n){int i,j,t;double s;s=0;/**********POUND**********/while(i=l;i<=n;i++);{t=0;for(j=l;j<=i;j++)t=t+j;/ **********P*OL1ND**********/=s+l/t;}return s;}第3题/* ---------------------------------------------------------- 【程序改错】功能:判断m是否为素数,若是返回1,否则返回0。
程序改错题-答案
area=3.141593*r*r;
if (area<50.0) contபைடு நூலகம்nue;
printf("r=%d,square=%d\n",r,area);
}
getch();
}
答案
#include <stdio.h>
main()
{
int r,n;
float area;
scanf("%d",&n);
for (r=1;r<=n;r++)/*modified*/
功能说明:以下函数length返回字符串中字母A到字母Z所包含字符的长度。主程序输入一行字符串,调用length函数输出该字符串中大写字母A到Z的子串长度。
如输入:Z2009-AShanghaiZ
则输出:Length=8
例示说明:从A到Z的子串为Shanghai,其长度为8
原程序(见\D_3_2.C):
调试要求:下列程序不能得到正确的结果,它包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*modified*/字样的注释),使其运行能得到正确的结果。将结果(包括X_2_3.C文件和X_2_3.EXE文件)保存到目录C:\KS\中。
功能说明:函数fun分别统计字符串中大写字母和小写字母的个数,main()函数完成字符串的输入和统计数的输出。
ch=(*p)++;/* 移动指针统计不同字符出现的次数 */
ch=ch>=’A’&&ch<=’Z’?ch+’a’-‘A’:ch;
/* 大小写字符转换*/
if(’a’<=ch<=’z’) a[ch-‘a’]++;
程序改错(删减版)
C语言程序设计练习题--程序改错〖第1题〗(练习题所在文件夹:20)/*------------------------------------------------------ 【程序改错】-------------------------------------------------------- 题目:已知一个数列从第1项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项的和。
下列给定程序中,函数fun的功能是:求该数列的前n项的平方根之和sum,n的值通过形参传入。
输出由主函数完成。
例如,当n=10时,程序的输出结果应为23.197745。
请改正程序中的错误,使它能得出正确的结果。
-------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/ #include "math.h"/**********FOUND**********/fun (int n){double sum,s0,s1,s2,s;int k;/**********FOUND**********/sum=0.0;if(n<=2) sum=0.0;s0=0.0;s1=0.0;/**********FOUND**********/s2=0.0;/**********FOUND**********/for(k=4;k>n;k++){s=s0+s1+s2;sum+=sqrt(s);s0=s1;s1=s2;s2=s;}return sum;}main(){int n;scanf("%d",&n);printf("%lf\n",fun(n));}答案:1). double fun (int n)2). sum=1.0; 或 sum=1;3). s2=1.0; 或 s2=1;4). for(k=4;k<=n;k++) 或for(k=3;k<=n-1;k++)〖第9题〗(练习题所在文件夹:356)/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:下列程序中,函数fun的功能是:找出一个大于给定整数m的最小的素数,并作为函数值返回。
c程序改错题――有答案
c程序改错题――有答案试卷编号:10578 所属语言:C语言试卷方案:TC_150522153552 试卷总分:440分共有题型:1种一、程序改错共44题(共计440分)第1题(10.0分)题号:380 难度:中第2章 /*------------------------------------------------------ 【程序改错】--------------------------------------------------------功能:输入两个双精度数,函数返回它们的平方和的平方根值。
例如:输入:22.936 和 14.121,输出为:y = 26.934415。
------------------------------------------------------*/#include #include #include/**********FOUND**********/double fun (double *a, *b)//double fun(double *a,double *b) {double c;/**********FOUND**********/ c = sqr(a*a + b*b);//sqrt/**********FOUND**********/ return *c; }main ( ) {double a, b, y;printf ( \scanf (\ y = fun (&a, &b); printf (\}第2题(10.0分)题号:438 难度:中第2章 /*------------------------------------------------ 【程序改错】--------------------------------------------------功能:编写函数fun,求两个整数的最小公倍数,然后用主函数main()调用这个函数并输出结果,两个整数由键盘输入。
程序改错--答案版
程序改错--答案版12592 '题目:编程求一个十进制整数n的各位数字之和,设n为小于或等于5位的数。
'------------------------------------------------ Option Explicit Private Sub Form_Click()Dim N As Integer, Sum As Integer, S1 As 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 Sub12610'题目:程序功能根据输入的学习成绩,分别显示优秀(90分以上), 良好(75分以上),及格(60分以上)不及格四个等级.'------------------------------------------------ Option Explicit Private 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 Sub12616.题目:求s=1!+3!+5!+7!,阶乘的计算用Function过程fact实现.'------------------------------------------------ Option Explicit Private 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 * i Next i'**********ERROR* *********fact = iEnd Function12620题目:编程实现从左到右的滚动字幕,滚动的速度由滚动条控件来控制。
高中学业水平考试——信息技术 ——程序改错
程序改错1、陈婷植树:陈婷今年17岁,植了3棵树。
以后每年多植一棵,问她到多少岁时才能累计种到或超过100棵树? 程序改错参考答案(文本框里是正确答案)Private Sub Command1_Click()Dim Age As Integer, Tree As IntegerAge = 17DoAge = Age + 1Tree = Tree + Age - 14Loop Until Tree = 100Print "到"; Age; "岁时种到100棵树"End Sub2、累乘(1×2×3×……×9×10=?)Private Sub Command1_Click()Dim S As Integer, A As IntegerFor A = 1 To 10S = S * ANext SPrint "S="; SEnd Sub3、求解一元二次方程的程序Private Sub Command5_Click()Dim a, b, c, d As IntegerDim x1, x2 As Singlea = InputBox("请输入二次项系数:", "输入")b = InputBox("请输入一次项系数:", "输入")c = InputBox("请输入常数项:", "输入")d = b ^ 2 - 4 a cIf d >= 0 Thenx1 = (-b + Sqr(d)) / 2 * ax2 = (-b - Sqr(d)) / 2 * aPrint "X1="; x1, "X2="; x2ElsePrint "此一元二次方程无解!"End Sub4、百钱买百鸡:“今有鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,凡百钱买百鸡,问鸡翁、鸡母、鸡雏各几何。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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*本程序的功能为输入圆柱体的半径和高,计算圆柱体表面积。