计算机二级C语言改错题归类
计算机等级考试(NCRE)二级c语言改错题
计算机等级考试(NCRE)二级c语言搞错题1、给定程序MODI1.C中,函数fun的功能是求矩阵(二维数组)a[N][N]中每行的最小值,结果存放到数组b中。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h>#define N 4void fun(int a[][N], int b[]){ int i, j;for (i=0; i<N; i++){/**********found**********/b[i] = a[i][0];/**********found**********/for (j=1; j<=N-1; j++)/**********found**********/if ( b[i] > a[i][j] )b[i] = a[i][j];}}main(){ int a[N][N]={{1,4,3,2},{8,6,5,7},{11,10,12,9},{13,16,14,15}},b[N]; int i;fun(a,b);for (i=0; i<N; i++) printf("%d,", b[i]);printf("\n");}2、给定程序MODI1.C中规定输入的字符串全部为字母,fun函数的功能是:统计a所指字符串中每个字母在字符串中出现的次数(统计时不区分大小写),并将出现次数最高的字母输出(如果有多个相同,输出一个即可)。
例如对于字符串:dadbcdbabdb,对应的输出应为:b或d。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include<stdio.h>#include <stdio.h>#include <string.h>void fun(char a[]){ int b[26], i, n,max;for (i=0; i<26; i++)/**********found**********/b[i] = 0;n= strlen(a);for (i=0; i<n; i++)if (a[i] >='a' && a[i]<='z')/**********found**********/b[a[i] - 'a']++;else if (a[i] >='A' && a[i]<='Z')b[a[i] -'A']++;max = 0;for (i=1; i<26; i++)/**********found**********/if (b[max] < b[i])max=i;printf("出现次数最多的字符是 : %c\n", max + 'a');}main( ){ char a[200];printf("请输入一个待统计的字符串 : "); scanf("%s", a);fun(a);}3、给定程序MODI1.C中,函数fun()的功能是统计s所指一维数组中0的个数(存在变量zero中)和1的个数(存在变量one中),并输出结果。
国家二级c语言上机考试分类程序改错
改错1#include <stdio.h>/************found************/void 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 = s + (Double)a / b;c = a; a = a + b; b = c;}return s;}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;2#include <stdio.h>int fun (char *str,char *substr){ int i,j,k,num=0;/************found************/for(i = 0, str[i], i++)for(j=i,k=0;substr[k]==str[j];k++,j++)/************found************/If(substr[k+1]=='\0'){ num++;break;}return num;}main(){char str[80],substr[80];printf("Input a string:") ;gets(str);printf("Input a substring:") ;gets(substr);printf("%d\n",fun(str,substr));}【参考答案】(1)for(i=0;str[i];i++)(2)if(substr[k+1]== ′\0′)3#include <stdio.h>int fun(int *x,int y){int t ;/**************found**************/ t = x ; x = y ;/**************found**************/ return(y) ;}main(){int a = 3, b = 8 ;printf("%d %d\n", a, b) ;b = fun(&a, b) ;printf("%d %d\n", a, b) ;}【参考答案】(1)t = *x ; *x = y ;(2)return(t) ;或return t;4#include <stdio.h>int fun(int a,int b){ int r,t;if(a<b) {/************found************/t=a; b=a; a=t;}r=a%b;while(r!=0){ a=b; b=r; r=a%b; }/************found************/return(a);}main(){ int num1, num2,a;printf("Input num1 num2: "); scanf("%d%d",&num1,&num2);printf("num1= %d num2= %d\n\n",num1,num2);a=fun(num1,num2);printf("The maximun common divisor is %d\n\n",a);}【参考答案】(1) t=a;a=b;b=t;(2) return(b);或return b;5、#include <stdio.h>void fun (long s, long *t){ int d;long sl=1;/************found************/t = 0;while ( s > 0){ d = s%10;/************found************/if (d%2 == 0){ *t = d * sl + *t;sl *= 10;}s /= 10;}}main(){ long s, t;printf("\nPlease enter s:"); scanf("%ld", &s);fun(s, &t);printf("The result is: %ld\n", t);}【参考答案】(1)*t=0;(2)if(d%2!=0)或if(d%2==1)6#include <stdio.h>long fun(int g){/**********found**********/switch(g);{ case 0: return 0;/**********found**********/case 1 ;case 2 : return 1 ;}return( fun(g-1)+fun(g-2) );}main(){ long fib; int n;printf("Input n: "); scanf("%d",&n); printf("n = %d\n",n);fib=fun(n);printf("fib = %d\n\n",fib);}【参考答案】(1) 去掉分号(2) case 1:case 2:return 1;7#include <stdio.h>void fun(char *p, char *b){ int i, k=0;while(*p){ i=1;while( i<=3 && *p ) {/**********found**********/b[k]=p;k++; p++; i++;}if(*p){/**********found**********/b[k++]=" ";}}b[k]='\0';}main(){ char a[80],b[80];printf("Enter a string: "); gets(a);printf("The original string: "); puts(a);fun(a,b);printf("\nThe string after insert space: "); puts(b); printf("\n\n"); }【参考答案】(1) b[k]=*p;(2) b[k]=′′;k++;8#include <stdio.h>#include <string.h>char* fun( char tt[] ){int i;for( i = 0; tt[i]; i++ )/**********found***********/if(( 'a' <= tt[i] )||( tt[i] <= 'z' ) )/**********found***********/tt[i] += 32;return( tt );}main( ){char tt[81];printf( "\nPlease enter a string: " );gets( tt );printf( "\nThe result string is:\n%s", fun( tt ) ); }【参考答案】(1)if(( tt[i]>=a′)&&( tt[i] <= ′z′)(2)tt[i]-=32;9#include <stdio.h>#include <string.h>#define MAXLINE 20fun ( char *pstr[6]){ int i, j ;char *p ;for (i = 0 ; i < 5 ; i++ ) {/**************found**************/for (j = i + 1, j < 6, j++){if(strcmp(*(pstr + i), *(pstr + j)) > 0){p = *(pstr + i) ;/**************found**************/*(pstr + i) = pstr + j ;*(pstr + j) = p ;}}}}main( ){ int i ;char *pstr[6], str[6][MAXLINE] ;for(i = 0; i < 6 ; i++) pstr[i] = str[i] ;printf( "\nEnter 6 string(1 string at each line): \n" ) ;for(i = 0 ; i < 6 ; i++) scanf("%s", pstr[i]) ;fun(pstr) ;printf("The strings after sorting:\n") ;for(i = 0 ; i < 6 ; i++) printf("%s\n", pstr[i]) ;}【参考答案】(1)for (j = i + 1; j < 6; j++)(2)*(pstr + i) = *(pstr + j) ;10#include <stdio.h>long fun (long num){/************found************/long k;do{ k*=num%10 ;/************found************/num\=10 ;} while(num) ;return (k) ;}main( ){ long n ;printf("\nPlease enter a number:") ; scanf("%ld",&n) ; printf("\n%ld\n",fun(n)) ;}【参考答案】(1)long k=1;(2)num /=10;11#include <stdio.h>void fun(float *a,float *b,float *c){/**********found**********/float *k;if( *a<*b ){ k=*a; *a=*b; *b=k; }/**********found**********/if( *a>*c ){ k=*c; *c=*a; *a=k; }if( *b<*c ){ k=*b; *b=*c; *c=k; }}main(){ float a,b,c;printf("Input a b c: "); scanf("%f%f%f",&a,&b,&c);printf("a = %4.1f, b = %4.1f, c = %4.1f\n\n",a,b,c);fun(&a,&b,&c);printf("a = %4.1f, b = %4.1f, c = %4.1f\n\n",a,b,c);}【参考答案】(1)float k;(2)if(*a< *c)12#include <stdio.h>long fun (int a, int n){ int j ;/**************found**************/long s = 0, t = 1 ;for ( j = 0 ; j < n ; j++)t = t * 10 + a ;s = t ;for ( j = 1 ; j < n ; j++) {/**************found**************/t = t % 10 ;s = s - t ;}return(s) ;}main( ){ int a, n ;printf( "\nPlease enter a and n:") ;scanf( "%d%d", &a, &n ) ;printf( "The value of function is: %ld\n", fun ( a, n ) ); }【参考答案】(1)long s=0, t=0;(2)t=t/10;13#include <stdio.h>long fun (int a, int n){ int j ;/**************found**************/long s = 0, t = 1 ;for ( j = 0 ; j < n ; j++)t = t * 10 + a ;s = t ;for ( j = 1 ; j < n ; j++) {/**************found**************/t = t % 10 ;s = s - t ;}return(s) ;}main( ){ int a, n ;printf( "\nPlease enter a and n:") ;scanf( "%d%d", &a, &n ) ;printf( "The value of function is: %ld\n", fun ( a, n ) ); }【参考答案】(1)long s=0, t=0;(2)t=t/10;14#include <stdio.h>int fun( int *b ){ int k,a1,a2,i=0;for(k=10; k<=55; k++) {/************found************/a2=k/1O;a1=k-a2*10;if((k%3==0 && a2==5)||(k%3==0 && a1==5)){ b[i]=k; i++; }}/************found************/return k;}main( ){ int a[100],k,m;m=fun( a );printf("The result is :\n");for(k=0; k<m; k++) printf("%4d",a[k]); printf("\n"); }【参考答案】(1)a2=k/10;(2)return i;15#include <stdio.h>/************found************/void 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)void fun(char *a)(2)printf("%c" ,*a) ;16#include <stdio.h>int fun( char *p ){ int n;/**********found**********/n= *P-'o';p++;while( *p!=0 ) {/**********found**********/n=n*8+*P-'o';p++;}return n;}main(){ char s[6]; int i; int n;printf("Enter a string (Ocatal digits): "); gets(s);if(strlen(s)>5){ printf("Error: String too longer !\n\n");exit(0); } for(i=0; s[i]; i++)if(s[i]<'0'||s[i]>'7'){ printf("Error: %c not is ocatal digits!\n\n",s[i]);exit(0); } printf("The original string: "); puts(s);n=fun(s);printf("\n%s is convered to integer number: %d\n\n",s,n);}【参考答案】(1)n= *p-′0′;(2)n=n*8+*p-′0′;17#include <stdio.h>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;}}main(){ long s, t;printf("\nPlease enter s:"); scanf("%ld", &s);fun(s, &t);printf("The result is: %ld\n", t);}【参考答案】(1)if(d%2==0)(2)s/=10;18#include <stdio.h>#include <math.h>int fun( int high ){ int sum = 0, n=0, j, yes;/************found************/while ((high >= 2) && (n < 10){ yes = 1;for (j=2; j<=high/2; j++ )if (high % j ==0 ){/************found************/yes=0; break}if (yes) { sum +=high; n++; }high--;}return sum ;}main ( ){printf("%d\n", fun (100));}【参考答案】(1)while((high>=2) && (n<10))(2)yes=0; break;19#include <stdio.h>void fun( char *s ){ int i,j;for(i=j=0; s[i]!='\0'; i++)if(s[i]!='c')/************found************/s[j]=s[i];/************found************/s[i]=0;}main(){ char s[80];printf("Enter a string: "); gets(s);printf("The original string: "); puts(s);fun(s);printf("The string after deleted : "); puts(s);printf("\n\n"); }【参考答案】(1)s[j++]=s[i];或{s[j]=s[i];j++;}(2)s[j]= ′\0′;20#include <stdio.h>/************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)s1=s1*10;21#include <stdlib.h>#include <conio.h>#include <stdio.h>#include <math.h>/*************found**************/ f(double x){if(x==0.0||x==2.0)return 0.0;else if(x<0.0)return(x-1)/(x-2);elsereturn(x+1)/(x-2);}double fun(int n){int i; double s=0.0,y;for(i=-n; i<=n;i++){ y=f(1.0*i); s+=y;}/*************found**************/ return s}void main(){ system("CLS");printf("%f\n", fun(5));}【参考答案】(1)double f(double x)(2)return s ;22#include <stdio.h>/************found************/ fun(int x, y, z ){ int j,t ,n ,m;j = 1 ;t=j%x;m=j%y ;n=j%z;while(t!=0||m!=0||n!=0){ j = j+1;t=j%x;m=j%y;n=j%z;}/************found************/return i;}main( ){ int x1,x2,x3,j ;printf("Input x1 x2 x3: "); scanf("%d%d%d",&x1,&x2,&x3);printf("x1=%d, x2=%d, x3=%d \n",x1,x2,x3);j=fun(x1,x2,x3);printf("The minimal common multiple is : %d\n",j);}【参考答案】(1)fun(int x,int y, int z)或int fun(int x,int y,int z)(2)return j;23#include <stdio.h>#include <string.h>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++;}}main(){char s[100], t1[100], t2[100], w[100];printf("\nPlease enter string S:"); scanf("%s", s); printf("\nPlease enter substring t1:"); scanf("%s", t1); printf("\nPlease enter substring t2:"); scanf("%s", t2); if ( strlen(t1)==strlen(t2) ) {fun( s, t1, t2, w);printf("\nThe result is : %s\n", w);}else printf("Error : strlen(t1) != strlen(t2)\n");}【参考答案】(1)while( *r)(2){*a=*r;a++;r++;}24#include <stdio.h>#include <string.h>#define N 5#define M 81/**********found**********/fun(char (*sq)[M]){ int i; char *sp;sp=sq[0];for(i=0;i<N;i++)if(strlen( sp)<strlen(sq[i]))sp=sq[i] ;/**********found**********/return sq;}main(){ char str[N][M], *longest; int i;printf("Enter %d lines :\n",N);for(i=0; i<N; i++) gets(str[i]);printf("\nThe N string :\n",N);for(i=0; i<N; i++) puts(str[i]);longest=fun(str);printf("\nThe longest string :\n"); puts(longest); }【参考答案】(1)char *fun(char (*sq)[M])(2)return sp;25#include <stdio.h>#define N 10/************found************/void fun(int a[], int m ){ int low=0,high=N-1,mid;while(low<=high){ mid=(low+high)/2;if(m<a[mid])high=mid-1;/************found************/else If(m > a[mid])low=mid+1;else return(mid);}return(-1);}main(){ int i,a[N]={-3,4,7,9,13,45,67,89,100,180 },k,m;printf("a数组中的数据如下:");for(i=0;i<N;i++) printf("%d ", a[i]);printf("Enter m: "); scanf("%d",&m);k=fun(a,m);if(k>=0) printf("m=%d,index=%d\n",m,k);else printf("Not be found!\n");}【参考答案】(1)int fun(int a[],int m)或fun(int a[],int m)(2)else if(m>a[mid])26#include <stdio.h>/************found************/void fun (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;}}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)while(s>0)27#include <stdio.h>#include <math.h>/**********found**********/fun(double a, dounle x0){ double x1, y;x1=(x0+ a/x0)/2.0;/**********found**********/if( fabs(x1-x0)<0.00001 )y=fun(a,x1);else y=x1;return y;}main( ){ double x;printf("Enter x: "); scanf("%lf",&x);printf("The square root of %lf is %lf\n",x,fun(x,1.0)); }【参考答案】(1)double fun(double a,double x0)(2)if(fabs(x1-x0)>=0.00001)28#include <stdio.h>#define N 20void fun(int a[], int n){ int i, j, t, p;for (j = 0 ;j < n-1 ;j++) {/************found************/p = jfor (i = j;i < n; i++)if(a[i] < a[p])/************found************/p = j;t = a[p] ; a[p] = 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");}【参考答案】(1)p=j ;(2)p=i;29#include <stdio.h>#include <math.h>#include <stdlib.h>/************found************/#define 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);/************found************/Return(Value);}main(){ float x,y,z,sum;printf("Input x y z: ");scanf("%f%f%f",&x,&y,&z);printf("x=%f,y=%f,z=%f\n",x,y,z);if (x==y||y==z){printf("Data error!\n");exit(0);} sum=fun(x,y,z);printf("The result is : %5.2f\n",sum);}【参考答案】(1)#define FU(m,n) (m)/(n)(2)return (value);30#include <stdio.h>#include <string.h>#define N 80void insert(char *aa){ int i,j,n; char ch;/**********found**********/n=strlen[ aa ];for( i=1; i<n ;i++ ) {/**********found**********/c=aa[i];j=i-1;while ((j>=0) && ( ch<aa[j] )){ aa[j+1]=aa[j];j--;}aa[j+1]=ch;}}main( ){ char a[N]="QWERTYUIOPASDFGHJKLMNBVCXZ";printf ("The original string : %s\n", a);insert(a) ;printf("The string after sorting : %s\n\n",a );}【参考答案】(1)n=strlen( aa ) ;(2)ch=aa[i];31.#include <stdlib.h>#include <conio.h>#include <stdio.h>int fun(int m){ int k=2;while (k<=m&&(m%k))/*************found**************/k++/*************found**************/if(m=k)return 1;else return 0;}void main(){ int n;system("CLS");printf("\nPlease enter n: ");scanf("%d",&n);if(fun(n)) printf("YES\n");else printf("NO!\n");}【参考答案】(1)正确:k++;(2)正确:if(m==k)32.#include <stdio.h>#include <string.h>/************found************/void fun (char s, char t){int i, d;d = strlen(s);for (i = 0; i<d; i++) t[i] = s[i];for (i = 0; i<d; i++) t[d+i] = s[d-1-i];/************found************/t[2*d-1] = '\0';}main(){char s[100], t[100];printf("\nPlease enter string S:"); scanf("%s", s);fun(s, t);printf("\nThe result is: %s\n", t);}【参考答案】(1)void fun ( char *s , char *t )(2)t[2*d]='\0';或t[d+i]='\0';或t[2*d]=0;或t[d+i]=0;33.#include <stdio.h>double fun ( int m ){ double y = 1.0 ;int i;/**************found**************/for(i = 2 ; i < m ; i++)/**************found**************/y += 1 / (i * i) ;return( y ) ;}main( ){ int n = 5 ;printf( "\nThe result is %lf\n", fun ( n ) ) ;}【参考答案】(1)for(i=2;i<=m;i++)(2)y+=1.0/(i*i);或y+=(double)1.0/(i*i)34.#include <stdlib.h>#include <conio.h>#include <stdio.h>#include <string.h>#define N 80void fun(char *s, char t[]){int i, j=0;for(i=0; i<(int)strlen(s);i++)/*************found**************/if(i%2 && s[i]%2==0)t[j++]=s[i] ;/*************found**************/t[i]='\0';}void main(){char s[N], t[N];system("CLS");printf("\nPlease enter string s :");gets(s);fun(s,t);printf("\nThe result is :%s\n",t);}【参考答案】(1)if(i%2 || s[i]%2==0) 或 if(i%2 !=0 || s[i]%2==0)(2)t[j]= ′\0′; 或 t[j]=0;35.#include <stdio.h>#define N 20int fun(int *a,int n,int x){ int p=0,i;a[n]=x;while( x!=a[p] )p=p+1;/**********found**********/if(P==n) return -1;else{ for(i=p;i<n-1;i++)/**********found**********/a[i+1]=a[i];return n-1;}}main(){ int w[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i;n=10;printf("The original data :\n");for(i=0;i<n;i++) printf("%5d",w[i]);printf("\nInput x (to delete): "); scanf("%d",&x);printf("Delete : %d\n",x);n=fun(w,n,x);if ( n==-1 ) printf("***Not be found!***\n\n");else{ printf("The data after deleted:\n");for(i=0;i<n;i++) printf("%5d",w[i]);printf("\n\n");}}【参考答案】(1)if(p==n) return -1;(2)a[i]=a[i+1];36.#include <stdlib.h>#include <conio.h>#include <string.h>#include <stdio.h>#define N 80int fun(char *s,char *t){ int n;char *p, *r;n=0;p=&s[0];/*************found**************/*r=t;while(*p){if(*r==*p){r++;if(*r=='\0'){n++;/*************found**************/【1】;}}p++;}return n;}void main(){char a[N],b[N]; int m;system("CLS");printf("\nPlease enter string a: ");gets(a);printf("\nPlease enter substring b: ");gets(b);m=fun(a,b);m=printf("\nThe result is :m=%d\n",m);}【参考答案】(1)r=t;(2)应填:r=t;或r=&t[0];37.#include <math.h>#include <stdio.h>float fun ( float num ){ int s ;float n, t, pi ;t = 1 ; pi = 0 ; n = 1 ; s = 1 ;/**************found**************/ while(t >= num){pi = pi + t ;n = n + 2 ;s = -s ;/**************found**************/ t = s % n ;}pi = pi * 4 ;return pi ;}main( ){ float n1, n2 ;printf("Enter a float number: ") ;scanf("%f", &n1) ;n2 = fun(n1) ;printf("%6.4f\n", n2) ;}【参考答案】(1)while(fabs(t)>=num)(2)t=s/n;38.#include <stdlib.h>#include <stdio.h>#include <ctype.h>#include <conio.h>void fun(char *s)/*************found**************/{ while(*s!= '@'){ if(*s>='A'&&*s<='Z'||*s>='a'&&*s<='z') {if(*s=='Z') *s='A';else if(*s=='z') *s='a';else *s+=1;}/*************found**************/(*s)++;}}void main(){ char s[80];system("CLS");printf("\n Enter a string with length<80:\n\n"); gets (s);printf("\n The string:\n\n");puts(s);fun(s);printf("\n\n The Cords :\n\n");puts(s);}【参考答案】(1)while(*s)或while(*s!='\0')(2)s++;39.#include <stdlib.h>#include <stdio.h>#include <conio.h>void fun(char *s){int i,j;for(i=0,j=0; s[i]!= '\0'; i++)if(s[i]>= '0'&&s[i]<= '9')/*************found**************/s[j]=s[i];/*************found**************/s[j]=”\0”;}void main(){char item[80];system("CLS");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)s[j++]=s[i];(2)s[j]= '\0';40.#include <stdio.h>double fun ( int x[]){/************found************/int sum = 0.0;int c=0, i=0;while (x[i] != 0){ if (x[i] > 0) {sum += x[i]; c++; }i++;}/************found************/sum \= c;return sum;}main( ){ int x[1000]; int i=0;printf( "\nPlease enter some data (end with 0): " );do{ scanf("%d", &x[i]); }while (x[i++] != 0);printf("%f\n", fun ( x ));}【参考答案】(1)double sum=0.0;(2)sum/=c;41.#include <stdio.h>#include <string.h>void fun (char *s, char *t1, char *t2 , char *w){char *p , *r, *a=s;strcpy( w, s );/************found************/while ( w ){ p = w; r = t1;while ( *r )/************found************/IF ( *r == *p ){ r++; p++; }else break;if ( *r == '\0' ) a = w;w++;}r = t2;while ( *r ){ *a = *r; a++; r++; }}main(){char s[100], t1[100], t2[100], w[100];printf("\nPlease enter string S:"); scanf("%s", s); printf("\nPlease enter substring t1:"); scanf("%s", t1); printf("\nPlease enter substring t2:"); scanf("%s", t2); if ( strlen(t1)==strlen(t2) ){ fun( s, t1, t2, w);printf("\nThe result is : %s\n", w);}else printf("\nError : strlen(t1) != strlen(t2)\n");}【参考答案】(1)while (*w)(2)if ( *r ==*p )42.#include <stdlib.h>#include <conio.h>#include <string.h>#include <stdio.h>#include <malloc.h>#define N 10typedef struct ss{ char num[10];int s;} STU;STU *fun(STU a[], int m){ STU b[N],*t;int i, j,k;/*************found**************/*t=calloc(m,sizeof(STU));for(i=0;i<N;i++) b[i]=a[i];for(k=0;k<m;k++){ for (i=j=0;i<N;i++)if(b[i].s>b[j].s) j=i;/*************found**************/t[k].num=b[j].num;t[k].s=b[j].s;b[j].s=0;}return t;}outresult(STU a[],FILE *pf){ int i;for(i=0;i<N;i++)fprintf(pf, "No=%s Mark=%d\n ",a[i].num, a[i].s);fprintf(pf, "\n\n ");}void main(){ STU a[N]={{ "A01 ",81},{ "A02 ",89},{ "A03 ",66},{ "A04 ",87},{ "A05 ",77}, { "A06 ",90},{ "A07 ",79},{ "A08 ",61},{ "A09 ",80},{ "A10 ",71}}; STU *pOrder;int i, m;system("CLS");printf("*****THE RESULT*****\n");outresult(a,stdout);printf("\nGive the number of the students who have better score: ");scanf("%d",&m);while(m>10){ printf("\nGive the number of the students who have better score: "); scanf("%d",&m);}pOrder=fun(a,m);printf("***** THE RESULT*****\n");printf("The top :\n");for(i=0;i<m;i++)printf("%s %d\n",pOrder[i].num, pOrder[i].s);free(pOrder);}【参考答案】(1)t=calloc(m,sizeof(STU));(2)t[k]=b[j];43.#include <stdio.h>#include <math.h>double funx(double x){ return(2*x*x*x-4*x*x+3*x-6); }double fun( double m, double n){/************found************/int r;r=(m+n)/2;/************found************/while(fabs(n-m)<0.001){ if(funx(r)*funx(n)<0) m=r;else n=r;r=(m+n)/2;}return r;}main( ){ double m,n, root;printf("Enter m n : \n"); scanf("%lf%lf",&m,&n);root=fun( m,n );printf("root = %6.3f\n",root);}【参考答案】(1)double r ;(2)while (fabs(n-m) >0.001)44.#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];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, s1;(2)t[i]=s[s1-i-1];45.#include <math.h>#include <stdio.h>double fun(double eps){ double s,t; int n=1;s=0.0;/************found************/t=0;while( t>eps){ s+=t;t=t * n/(2*n+1);n++;}/************found************/return(s);}main(){ double x;printf("\nPlease enter a precision: "); scanf("%lf",&x);printf("\neps=%lf, Pi=%lf\n\n",x,fun(x));}【参考答案】(1)t=1.0;(2)return(s*2);46.#include <stdio.h>#include <stdlib.h>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; }}}putarr( int n, int *z ){ int i;for ( i = 1; i <= n; i++, z++ ){ printf( "%4d", *z );if ( !( i%10 ) ) printf( "\n" );} printf("\n");}main(){ int aa[20]={9,3,0,4,1,2,5,6,8,10,7}, n=11;printf( "\n\nBefore sorting %d numbers:\n", n ); putarr( n, aa );fun( n, aa );printf( "\nAfter sorting %d numbers:\n", n ); putarr( n, aa );。
C语言计算机二级改错题
(1)错误: { if (*p<=*q)
正确:{ if (*p>=*q)
(2)错误:k++
正确:k++;
2.下列给定程序中,函数fun()的功能是根据整型形参m,计算如下公式的值。
y=1-1/(2×2)+1/(3×3)-1/(4×4)+…+(-1)(m+1)/(m×m)
例如:m中的值为5,则应输出0.838611。
(1)错误:for(k=m;k>0;k--)
正确:for(k=m-1;k>=0;k--)
(2)错误:pt=j;
正确:pt-=j;
25.下列给定程序中,函数fun()的功能是:用冒泡法对6个字符串按由大到小的顺序进行排序。
(1)错误:if(strcmp((pstr+i),(pstr+j))<0)
(1)错误:ifhigh%j==0
正确:if(high%j==0)
(2)错误:if(yes==0)
正确:if(yes
10.下列给定程序中,函数fun()的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码降序排序后输出。
例如:输入dafhc,则应输出hfdca。
(1)错误:int j=1;
正确:double j=1.0;
(2)错误:y+=1/(i * i);
正确:y+=j/(i * i);
3.下列给定程序中,函数fun的功能是按以下递归公式求函数值。
例如:当给n输入5时,函数值为240;当给n输入3时,函数值为60。
请改正程序中的错误,使它能得到正确结果。
全国计算机等级考试_二级C语言上机考试题库及答案-改错
6.2给定程序MODI1.C中函数fun的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。
例如,若字符串为abcd,则应输出:dcba.
答案:第一处fun(char a)改为fun(char*a) 第二处printf(“%c“*a)改为 printf(“%”,*a)
13.2给定程序MODI1。C中函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返回。例如:若k=10,则应输出:3628800请改正程序中的错误。
第一处:if k>0改为if(k>0)第二处:if(k=0)改为if(k==0)
14.2给定程序MODI1。C中函数fun的功能是:将m(1<=m<=10)个字符串连接起来,组成一个新串,放入pt所指存储区中。
答案:1 将t=1改为t=0 2 将t=t%10改为t=t/10
26.2给定函数功能是:用下面的公式求 的近似值,直到最后一项的绝对值小于指定的数(参数num)为止:
例如,输入0.0001,则程序输出3.1414
答案:1将(t>=num)改为((fabs(t))>=num) 2 将t=s%n改为t=s/n
28.2给定程序中,函数fun的功能是:计算并输出high以内最大的10个素数之和。high的值由主函数传给fun函数。若high的值为100,则函数的值为732
答案: 第一处:while((high>=2)&&(n<10)改为 while((high>=2)&&(n<10))
第二处:yes=0;break 改为yes=0;break;
国家计算机C语言二级考试改错题库
1 下列给定程序中,函数fun 的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。
例如,当n 为5时,函数值应为10.407143。
f(x)函数定义如下:f(x)=(1)(2)0002(1)(2)0x x x x x x x x ⎧+/->⎪==⎨⎪-/-<⎩或请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。
试题程序:#include <stdlib.h> #include <conio.h> #include <stdio.h> #include <math.h>/*************found**************/ f(double x)2 下列给定程序中,fun 函数的功能是:根据形参m,计算下列公式的值:t=1+1/2+1/3+1/4+…+1/m例如,若输入5,则应输出2.283333。
3 下列给定程序中,函数fun 的功能是:分别统计字符串中大写字母和小写字母的个数。
例如,给字符串s 输入:AaaaBBb123CCccccd,则应输出结果:upper=5,lower=9。
4 下列给定程序中函数fun 的功能是:计算正整数num 各位上的数字之积。
例如,若输入252,则输出应该是20。
若输入202,则输出应该是0。
5 下列给定程序中函数fun 的功能是:计算n!。
例如,给n 输入5,则输出120.000000。
6 下列给定的程序中,函数fun 的功能是:计算并输出k 以内最大的10个能被13或17整除的自然数之和。
k 的值由主函数传入,若k 的值为500,则函数的值为4622。
7 下列给定程序中,函数fun()的功能是:根据整型形参m 的值,计算如下公式的值:t=1-1/(22)1/(33)...1/()m m ⨯-⨯--⨯8 在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。
全国计算机二级C语言程序改错题(-100%全中必过)
目录题目一前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 (32)题目十二求和问题1 (33)题目十二求和问题2 (34)题目十二求和问题3 (35)题目十二求和问题4 (36)题目十二求和问题6 (37)题目十二求和问题7 (38)题目十二求和问题8 (39)题目十二求和问题9 (39)题目十二求和问题10 (40)题目十二求和问题11 (41)题目十二求和问题12 (42)题目十二求和问题13 (42)题目十二求和问题14 (43)题目十二求和问题15 (44)题目十二求和问题16 (44)题目十二求和问题17 (45)题目十二求和问题18 (45)题目十二求和问题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)题目二十找最长字符串 (57)题目二十一数组问题1 (58)题目二十一数组问题2 (59)题目二十一数组问题3 (60)题目二十二求平方根问题 (61)题目二十三短字符串变长字符串1 (61)题目二十三短字符串变长字符串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项之和。
国家计算机C语言二级考试改错题库
1 下列给定程序中,函数fun 的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。
例如,当n 为5时,函数值应为10.407143。
f(x)函数定义如下:f(x)=(1)(2)0002(1)(2)0x x x x x x x x ⎧+/->⎪==⎨⎪-/-<⎩或请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。
试题程序:#include <stdlib.h> #include <conio.h> #include <stdio.h> #include <math.h>/*************found**************/ f(double x)2 下列给定程序中,fun 函数的功能是:根据形参m,计算下列公式的值:t=1+1/2+1/3+1/4+…+1/m例如,若输入5,则应输出2.283333。
3 下列给定程序中,函数fun 的功能是:分别统计字符串中大写字母和小写字母的个数。
例如,给字符串s 输入:AaaaBBb123CCccccd,则应输出结果:upper=5,lower=9。
4 下列给定程序中函数fun 的功能是:计算正整数num 各位上的数字之积。
例如,若输入252,则输出应该是20。
若输入202,则输出应该是0。
5 下列给定程序中函数fun 的功能是:计算n!。
例如,给n 输入5,则输出120.000000。
6 下列给定的程序中,函数fun 的功能是:计算并输出k 以内最大的10个能被13或17整除的自然数之和。
k 的值由主函数传入,若k 的值为500,则函数的值为4622。
7 下列给定程序中,函数fun()的功能是:根据整型形参m 的值,计算如下公式的值:t=1-1/(22)1/(33)...1/()m m ⨯-⨯--⨯8 在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。
@所有人,二级C语言上机考试改错题总结!
@所有人,二级C语言上机考试改错题总结!1、if或while语句若错误行是if或者while语句,则要注意以下点:(1)首先判断是否正确书写if或while关键字;(2)然后看有没有用小括号把整个表达式括起来,若没有则加上小括号;(3)若条件表达式中有指针变量而且没有指针运算符时,则加上指针运算符;(4)若if条件表达式中只有一个等于号即数学等号(=),则要改写成两个等于号即逻辑等号(= =)。
2.for语句若错误行是for语句,则要注意以下几点:(1)首先判断for有没有书写正确;(2)然后看for中的表达式是不是用分号(;)隔开,若不是则改为分号。
记住是分号(;),不是逗号(,)!(3)再者,分析for中的三个表达式,是否符合题意。
3. return语句若错误行为return语句,则要注意以下几点:(1)首先看是不是正确书写return关键字;(2)然后看是不是缺少分号,若是则加上分号即可;(3)再者判断return后的变量或表达式是否正确;这种错误需要根据题意来分析,分析返回变量或表达式的值和类型。
4. 赋值语句若错误行是赋值语句,则要看赋值是否正确,然后看赋值运算符是否写正确。
5. 定义语句若错误行是定义语句,则要注意:(1)首先分析变量类型名是否写对;(2)然后分析给变量赋初值是否正确;(3)若以上均不是,则看是不是少定义了某个变量或少了花括号。
6. 表达式错误问题若错误行中有整数1除以某个表达式或变量时,必须把整数1改为1.0;若变量或表达式是整型时,则只能进行强制类型转换。
7. 字符串类问题若错误行中有字符串结束符,则特别要要注意结束符有没有写错。
但是要区分清楚字符‘o’和数字’0’。
以及字符串结束标记‘\0’。
8. 指针类问题若错误行中有指针变量,并且该变量名之前没有指针运算符,则一般都是加上指针运算符。
9. 函数首部类问题若错误行是函数首部,则要注意:(1)首先看该行最后有没有分号,若有则删掉分号;若中间有分号则要改为逗号;(2)形参和实参类型不一致问题:① 若实参是个地址或数组名或指针变量名,则对应的形参肯定是指针或数组;②若实参是二维数组名,则对应的形参应该是指针数组或是二维数组;③若后面用到某形参的时候有指针运算符,则该形参比为指针类型;④若形参是二维数组或指向M 个元素的指针变量,则该二维的长度必须与main中对于数组的第二维的长度相同。
计算机等级考试二级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()没有返回值。
计算机二级C语言改错题归类
则函数值为NULL。
t1和t2所指字符串的长度相同。
数值返回。
为函数值返回。
11.求k!(k<13),所求阶乘的值作为函数值返回。
方根之和sum。
n的值通过形参传入。
为7,若给num1和num2分别输入27和81,则输出的最大公约数为27。
返回3,若能构成等腰三角形函数返回2,若能构成三角形函数返回1,若不能构成三角形函数返回0。
29.找出一个大于给定整数m且紧随m的素数,并作为函数值返回。
1.将n1.根据形参m,计算如下公式的值。
2.根据整型形参m,计算如下公式的值。
3.根据整型形参m的值,计算如下公式的值。
4.根据整型形参m,计算如下公式的值。
5.传入一个整数m,计算如下公式的值。
8.根据整型形参n,计算如下公式的值。
9.求s的值。
11.应用递归算法求某数a的平方根。
求平方根的迭代公式如下:(x+1)/(x-2) x>0f(x)= 0 x=0或x=2(x-1)/(x-2) x<010 (n=1)fun(n)=fun(n-1)+2 (n>1)16.求出以下分数序列的前n项之和,和值通过函数值返回main函数。
17.求出以下分数序列的前n项之和,和值通过函数值返回main()函数。
所指的数组中。
若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。
为函数值返回。
规定,函数中a1放个位数,a2放十位数。
区中,此存储区的首地址作为函数值返回。
1.给—维数组a输入任意4个整数,并按如下的规律输出。
例如输入1,2,3,4,程序运行后将输出以下方阵:2.根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示的数据,由main()函数输出。
1.并用随机函数为各结点赋值。
将单向链表结点(不包括头结点,并且作为函数值返回。
并且作为函数值返回。
福建省计算机二级考试C语言上机题库改错填空编程
二、改错题Cmody191.c修改程序,用以计算1~100之间所有的偶数之和。
#include <stdio.h>#include <math.h>void main( ){int i=1;/**/ int sum=2 /**/;while(i++,i<=100){ if(/**/ i==(i/2)*2 /**/)continue;sum+=i;}printf("Sum is %d\n",sum);getch();}Cmody192.c修改程序,将二维数组表示的方阵左下半三角(不含对角线)各元素加4,右上半三角(含对角线)各元素乘2。
#include <stdio.h>#define N 5void main(){int a[N][N],i,j;for(i=0;i<N;i++)for(j=0;j<N;j++)a[i][j]=i*5+j+11;printf("\nArray a is:\n");for(i=0;i<N;i++){for(j=0;j<N;j++) printf("%3d ",a[i][j]);printf("\n");}for(i=0;i<N;i++)/**/ for(j=0;j<=i;j++)/**/a[i][j]+=4;for(i=0;i<N;i++)/**/ for(j=i+1 ;j<N;j++) /**/a[i][j]*=2;printf("\nArray a is turned:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%3d ",a[i][j]);printf("\n");}getch();}Cmody201.c修改程序,计算满足以下条件的整数n的最大值。
全国计算机二级C语言程序改错题( 100%全中必过)
void main()
{int a,b;
system("CLS");
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;
题目四最大公约数问题
2.下列给定程序中函数fun的功能是:求两个非零正整数的最大公约数,并作为函数值返回。
例如,若num1和num2分别为49和21,则输出的最大公约数为7;若num1和num2分别为27和81,则输出的最大公约数为27。
#include <stdio.h>
int fun(int a,int b)
(1)t=a;a=b;b=t;
(2)return(b);或return b;
题目五 长数变短数1
2.下列给定程序中函数fun的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为87653142时,t中的数为7531。
#include <stdio.h>
b = fun(&a, b) ;
printf("%d %d\n", a, b) ;
(1)t=*x ; *x=y;
(2)return(t);或return t;
题目三变量互换问题2
1.下列给定程序中,函数fun的功能是:实现两个整数的交换。例如,给a和b分别输入60和65,输出为:a=65 b=60。
计算机二级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语句后面加上分号也是错误的。
全国计算机二级C语言上机(2改错题)
全国计算机二级C语言上机(2改错题)1、请编写函数fun,函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。
例如,字符串中原有的内容为:ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是:DEFGHIJKABC。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include#include#defineN80voidfun1(char某w)/某本函数的功能是将字符串中字符循环左移一个位置某/{inti;chart;t=w[0];for(i=0;ivoidfun(char某w,intm)/某可调用fun1函数左移字符某/{}main(){chara[N]=\intm;printf(\printf(\fun(a,m);printf(\printf(\NONO();}NONO(){/某请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。
FILE某rf,某wf;chara[N];intm,i;rf=fopen(\wf=fopen(\for(i=0;i<10;i++){ fcanf(rf,\fun(a,m);fprintf(wf,\}fcloe(rf);fcloe(wf);某/}2、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
例如,输入的分数是6069,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。
主函数中将把60放在low中,把69放在heigh中。
注意:部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
全国计算机二级考试C语言(最全复习资料)——填空、改错题重点题型归类分析
全国计算机等级考试题型复习资料一、程序填空题【解析】该类型主要考察学员对一个C程序的整体把握能力。
首先须通读整个源程序,了解程序的功能后试着边填空边调试,分析输出结果,以找到正确答案。
因此,不像程序修改题那么简单。
【程序填空题的特点和注意事项】(1)程序填空的试题中通常包含三个空需要填写。
(2)试题中用"******found******/"来提示在下一行或下二行注明填空的位置及编号,如___1___。
(3)程序填空考核对程序的整体把握,出题点可能是:for循环语句的初始化或条件判断、函数返回值、if语句的条件判断、链表中指针如何移动、文件操作相关函数的参数等。
(4)特别要注意的是:只能在填空的位置填写语句或表达式,不要增行或删行,不要改动程序行的顺序,更不要改动程序的结构。
【建议答题步骤】(1)首先仔细审题,了解试题的要求,看清题目给出的输入和输出例示,以便检验程序运行的结果是否正确。
(2)审视"/******found******/"所在函数,根据题义理解程序所采用的基本算法,做到心里有数。
(3)填好空后对测试程序进行检查是否有语法错误。
当编译提示有语法错时,可参考编译提示来查找并改正错误。
(4)当不再出现语法错时,执行程序,按照试题的示例给出的数据进行试算,若试算的结果与给出的输出结果相同时,该题就做对了;若试算的结果与给出的输出结果不同,就应进一步检查程序中的逻辑错误。
(5)修改完成,得到正确结果后,一定不要忘记把修改后的程序存盘。
二、程序修改题【解析】该类型主要考察学员对C程序部分结构或算法的分析和理解能力。
因此,对学员的知识把握能力要求不高,通常可以借助计算机帮我们改错(仅限语法错误)。
若非语法错误,则需对程序边调试边找错,分析输出结果,找出错误所在并改正。
【程序填空题的特点和注意事项】(1)改错的试题中通常包含两个(或三个)错误需要修改。
(2)试题中用"******found******/"来提示在下一行(或下面第二行)有错。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
则函数值为NULL。
23.将s,所形成的新串放在w所指的数组中。
在此处,要求
数值返回。
为函数值返回。
11.求k!(k<13),所求阶乘的值作为函数值返回。
方根之和sum。
n的值通过形参传入。
为7,若给num1和num2分别输入27和81,则输出的最大公约数为27。
返回3,若能构成等腰三角形函数返回2,若能构成三角形函数返回1,若不能构成三角形函数返回0。
29.找出一个大于给定整数m且紧随m的素数,并作为函数值返回。
1.根据形参m,计算如下公式的值。
2.根据整型形参m,计算如下公式的值。
3.根据整型形参m的值,计算如下公式的值。
4.根据整型形参m,计算如下公式的值。
5.传入一个整数m,计算如下公式的值。
8.根据整型形参n,计算如下公式的值。
9.求s的值。
11.应用递归算法求某数a的平方根。
求平方根的迭代公式如下:
(x+1)/(x-2) x>0
f(x)= 0 x=0或x=2
(x-1)/(x-2) x<0
10 (n=1)
fun(n)=
fun(n-1)+2 (n>1)
16.求出以下分数序列的前n项之和,和值通过函数值返回main函数。
17.求出以下分数序列的前n项之和,和值通过函数值返回main()函数。
所指的数组中。
若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。
为函数值返回。
规定,函数中a1放个位数,a2放十位数。
区中,此存储区的首地址作为函数值返回。
1.给—维数组a输入任意4个整数,并按如下的规律输出。
例如输入1,2,3,4,程序运行后将输出以下方阵:
2.根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示的数据,由main()函数输出。
1.并用随机函数为各结点赋值。
将单向链表结点(不包括头结点,并且作为函数值返回。
并且作为函数值返回。