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

合集下载

程序改错

程序改错

1、*【程序改错】*题目:从键盘上输入任意一串字符,判断是否回文。

例如:MUM、456654,MADAM。

SET TALK OFFACCEPT "A=" TO AL=LEN(A)FLAG=1I=1**********FOUND**********DO WHILE FLAG=1 AND I<=INT(L/2)**********FOUND**********IF SUBS(A,I,1)<>SUBS(A,L-I,1)FLAG=0ENDIFI=I+1ENDDO**********FOUND**********IF FLAG=0? "是回文"ELSE? "不是回文"ENDIFCANCEL『错误答案』:1 DO WHILE FLAG=1 AND I<=INT(L/2) 或DO WHILE FLAG=1 .AND. I<=INT(L/2)2 IF SUBS(A,I,1)<>SUBS(A,L-I+1,1) 或IF SUBS(A,I,1)<>SUBS(A,L+1-I,1) 或IF SUBSTR(A,I,1)<>SUBSTR(A,L-I+1,1)3 IF FLAG=12、【程序改错】*题目:程序输入两个任意整数,求最小公倍数,并显示输出。

SET TALK OFFINPUT " X=" TO XINPUT " Y=" TO YMAX=XIF Y>XMAX=Y**********FOUND**********ENDFORA=MAXDO WHILE A<=X*YIF INT(A/X)=A/X AND INT(A/Y)=A/Y**********FOUND**********LOOPENDIFA=A+MAXENDDO**********FOUND**********? " 最小公倍数为", XCANCEL『错误答案』:1 ENDIF 或ENDI2 EXIT3 ? "最小公倍数为", A3、题目:输入两个任意整数,求最大公约数,并显示输出最大公约数。

程序改错完整版---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个字符,以相反顺序打印出来。

程序改错

程序改错

/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:求100~200之间所有的素数。

------------------------------------------------------*///#include <iostream.h>void main(){int n;int i;/**********ERROR**********/for(n=100;n<200;n++){/**********ERROR**********/for(i=2;i<=n;i++)/**********ERROR**********/if(n%i==0) continue;if(n==i)cout<<n<<endl;}}//答案【改错1】错误【学生答案】for(n=100;n<200;n++)【参考答案】for(n=100;n<=200;n++)============================================================【改错2】错误【学生答案】for(i=2;i<=n;i++)【参考答案】for(i=2;i<=n-1;i++)for(i=2;i<n;i++)============================================================【改错3】错误【学生答案】if(n%i==0) continue;【参考答案】if(n%i==0) break;/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:求水仙花数。

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.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)。

程序改错

程序改错

五、程序改错1./*--------------------------------------------------------【程序改错】--------------------------------------------------------功能:依次取出字符串中所有数字字符, 形成新的字符串, 并取代原字符串。

例如:输入ab12c3d,则输出123。

注意:不得增行或删行,也不得更改程序的结构!------------------------------------------------------*/#include "stdio.h"/**********ERROR**********/void fun(char s){int i,j;for(i=0,j=0; s[i]!='\0'; i++)if(s[i]>='0'&&s[i]<='9')/**********ERROR**********/s[j]=s[i];/**********ERROR**********/s[j]="\0";}main(){char item[80];printf("\nEnter a string: ");gets(item);printf("\n\nThe string is: \"%s\"\n",item);fun(item);printf("\n\nThe string of changing is: \"%s\"\n",item);}【改错1】【学生答案】void fun(char s)【参考答案】void fun(char *s)void fun(char s[])void fun(char s[80])============================================================【改错2】【学生答案】s[j]=s[i];【参考答案】s[j++]=s[i];{ s[j]=s[i]; j++; }============================================================【改错3】【学生答案】s[j]="\0";【参考答案】s[j]='\0';============================================================/*------------------------------------------------------ 【程序改错】--------------------------------------------------------功能:读入一个整数m( 5≤m≤20 ),函数rnd获得m个随机整数,函数sortpb将这m个随机整数从小到大排序。

程序改错复习题答案

程序改错复习题答案

程序改错复习题答案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。

VFP程序改错答案

VFP程序改错答案

程序改错1、下列中有8大题,081班做前4题,082班做后四题。

2、程序改错题的要求是:原有语句不变,将正确语句用红色字体写在错误语句的右侧,在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。

3、交作业时,文件名类似为“公事管08212*** ”,发到相应的班级文件夹下的题号文件夹下。

1、程序改错( 5 分) 下列程序的功能是计算分数数列2/1,3/2,5/3,,, ,m/n,m+n/m 的前20 项之和。

要求:①项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。

nSum=0m=2 &&数列中第一项的分子n=1 &&数列中第一项的分母FOR x=1 TO 20 nSum=nSum+m/n y=m m=m+n n=yENDD(O endfor )WAIT WINDOWS前20 项之和为’+STR(nSum,10,2)2、程序改错( 5 分) 下列程序的功能是统计所有的“水仙花数”的个数,“水仙花数”是指一个三位数,其各位数333字立方和等于该数本身,例如:153=13+53+33)。

要求:①项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。

nCount=0FOR n=100 TO 999 &&n1=VAL(SUBS(STR(n,3),3,1))n2=VAL(SUBS(STR(n,3),2,1))n3=VAL(SUBS(STR(n,3),1,1))IF n=n 1A3+n2T+n3TnCount=nCount+1ENDIFENDFORWAIT WINDOWS “' 水仙花数”的个数为' ,nCount3、程序改错( 5 分)下列程序的功能是统计一个字符串中包括多少个汉字(假设这些汉字均属于GB2312 字符集),其基本算法是从字符串中依次取一个字符,如果其ASCII 码值大于127,则为一个汉字内码的第一个字节。

c程序改错题――有答案

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()调用这个函数并输出结果,两个整数由键盘输入。

大学C语言期末考试练习题程序改错(带详解答案)

大学C语言期末考试练习题程序改错(带详解答案)
辑地址下标。因此输出的时候只能从 a[1]开始输出,无法输出 a[0].因此应将 j 赋初值 0, 相应的循环条件改为 j<5 或者 j<=4 用于控制循环执行 5 次
scanf(“%d”,a); //若 scanf 语句有错误,常见考点有两个:(1)格式声明符号要 与后面欲赋值的变量的类型一致,此题%d 与 a 的类型 int 一致(详见 p69-78);(2)变量 的前面要有地址符号&
{ sum=sum*i; // 若不为 sum 赋初值,则此处无法计算 sum*i。 i++;
} printf("sum=%d",sum); //若 printf 语句有错误,常见考点有 1 个:格式声明符号 要与后面欲输出的变量的类型一致,此题%d 与 sum 的类型 long int 不一致,应改为%ld (详见 p69-78);
第三处改为:if(n%3==0)
第四处改为:sum=sum+n;
8. 求表达式 c ab 的值
#include <stdio.h>
#include <math.h>
int fun(int x, int y);
main()
{ int a,b; float f; scanf(“%d,%d”,a,b); //与改错第 1 题中的 scanf 错误相同 if(ab>0){ // C 语言中乘号不能省略,且用*表示乘法运算 fun(a,b); // 调用带有返回值的函数,应将函数的返回值保存在变量里
略 { if(n%3=0) // = 是赋值符号,用于将右边的值赋给左边的变量;== 是
关系符号,用来判断两个值是否相等 。改错中 if 后面表达式中的赋值符号是常见的 考点。

程序改错--答案版

程序改错--答案版

程序改错--答案版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题目:编程实现从左到右的滚动字幕,滚动的速度由滚动条控件来控制。

(完整word版)C语言程序改错总结

(完整word版)C语言程序改错总结

难度11、程序D1.c的功能是从键盘读入一个数并在屏幕上显示。

int main(void){int xy2;/*********Found************/scanf("%s", &xy2); //改为:scanf("%d”,&xy2);/*********Found************/printf("xy2=%5d\n", &xy2); //改为:printf("xy2=%5d\n”,xy2);return 0;}2、程序D2.c的功能是调用函数,显示两个实数间最大的一个。

#include<stdio。

h>float fmax(float x, float y);int main(void){/*********Found************/float l,1; //il = 3。

0;i = 5.6f;/*********Found************/printf("fmax(%5.2f,%5.2f)=%5.2f\n”, i, l, fMax(i,l)); // fmaxreturn 0;}/*********Found************/int fmax(float x, float y) //改:float{if (x < y)return y;else return x;}3、程序D4.c的功能是计算半径为2+3的圆的面积。

#include<stdio.h〉#define PI 3。

14/*********Found************/#define S(bj)PI*bj*bj //改:PI*(bj)*(bj) int main(void){/*********Found************/int mianJi;//改为:doublemianJi = S(2+3);printf(”mian ji=%5。

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

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 题目 :编程实现从左到右的滚动字幕,滚动的速度由滚动条控件来控制。

'------------------------------------------------Option ExplicitPrivate Sub HScroll1_Scroll()'**********ERROR**********Timer1.Interval = HScroll1.Min - HScroll1.ValueEnd SubPrivate Sub Timer1_Timer()'**********ERROR**********If Label1.Left <= Form1.Width Then'**********ERROR**********Label1.Left = Label1.WidthElseLabel1.Left = Label1.Left + 100 End IfEnd Sub答案 1 ) . Timer1.Interval =HScroll1.Value- HScroll1.Min2). If Label1.Left >= Form1.WidthThen3). Label1.Left = 012624.目:程序功能:求 1+2+3⋯⋯,直到其和超出 3000 止,并入果。

'------------------------------------------------Option ExplicitPrivate Sub Form_Click()ClsDim i As IntegerDim s As Singlei = 1'**********ERROR**********s = 0Do'**********ERROR**********i = i + 2s = s + i'**********ERROR**********Loop s > 3000Print " 从 1 到 :"; i; " 的和是 "; sEnd Sub答案: s = 1i = i +1Loop Until s > 3000 12629.目:下面的程序段用于以下功能:建立一序文件,存放10 名同学的学号和三功成,示文件内所有,并同示其分和平均分。

'------------------------------------------------Option ExplicitPrivate Sub Form_Click()Dim no%, c1%, c2%, c3%, i As Integer'**********ERROR**********Open "c:\2.txt" For Input As #1For i = 1 To 10no = InputBox(" 入学号 ")c1 = InputBox(" 入数学成")c2 = InputBox(" 入文成")c3 = InputBox(" 入外 ")Write #1, no, c1, c2, c2Next iClose #1'**********ERROR**********Open "c:\2.txt" For Output As #1For i = 1 To 10'**********ERROR**********Print #1, no, c1, c2, c3Print no, c1, c2, c3, c1 + c2 + c3, (c1 + c2+ c3) / 3Next iClose #1End Sub答案:1) Open "c:\2.txt"For Output As #12)Open "c:\2.txt" For Input As #13 ) Input #1, no, c1, c2, c3 12677.目:求s=72+102+132+⋯⋯832的。

'------------------------------------------------Option ExplicitPrivate Sub Form_Click()ClsDim s As LongDim i As Integer'**********ERROR**********s = 1'**********ERROR**********For i = 7 To 832s = s + i'**********ERROR**********loop 30Print sEnd Sub答案: s=0For i = 7 to 832 step 30Loop until 3012683.目:生30个小于100的成绩随机数,并统计出优、良、中等、及格、不及格数的个数,并计算出成绩属于优秀段的成绩平均分。

'------------------------------------------------Option ExplicitPrivate Sub Form_Click()Dim k%, a%, bjg%, jg%, zd%, lh%, yx As IntegerDim pjf As IntegerRandomizepjf = 0For k = 1 To 30'**********ERROR**********a = Int(Rnd())Select Case aCase 0 To 59bjg = bjg + 1 ' 不及格Case 60 To 69jg = jg + 1 ' 及格Case 70 To 79zd = zd + 1 '中等Case 80 To 89lh = lh + 1 ' 良好Case 90 To 100yx = yx + 1 ' 优秀'**********ERROR**********pjf = pjf + 1End SelectNext k'**********ERROR**********If yx > 0 Then pjf = pjf / 30Debug.Print " 不及格 " + Str$(bjg) + " 人,及格 " + Str$(jg) + " 人,中等 " + Str$(zd) + "人";Debug.Print "良好 " + Str$(lh) + "优秀 " + Str$(yx) + " 人"Debug.Print " 优秀分数段成绩平均分" &pjfEnd Sub答案: a = Int (Rnd() * 100)pjf = pjf + aIf yx > 0 Then pjf =pjf / yx12687.'题目 :使用顺序文件读写方式编写一个简单的记事本应用程序,'基本逻辑是:假设在考生目录中有一个名为 exam.txt 的文本文件。

相关文档
最新文档