二级C语言改错及解答_第1页
二级C语言改错及解答_第2页
二级C语言改错及解答_第3页
二级C语言改错及解答_第4页
二级C语言改错及解答_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序改错题1. 给定程序modi1.c中函数的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、。例如:若给n输入7,该项的斐波拉契数值为13。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。long fun(int g)/*found*/ switch(g); /去掉; case 0: return 0;/*found*/ case 1 ;case 2 : return 1 ; /case 1: return( fun(g-1)+fun(g-2) );main() long

2、 fib; int n; printf(input n: ); scanf(%d,&n); printf(n = %dn,n); fib=fun(n); printf(fib = %dnn,fib);2. 给定程序modi1.c中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求复制三个字符之后插入一个空格。void fun(char *p, char *b) int i, k=0; while(*p) i=1; while( i=3 & *p ) /*found*/ bk=p; /bk=*p k+; p+; i+; if(*p) /*found*/ bk+= ; /bk+=; b

3、k=0;main() char a80,b80; printf(enter a string: ); gets(a); printf(the original string: ); puts(a); fun(a,b); printf(nthe string after insert space: ); puts(b); printf(nn);3. .给定程序modi1.c中函数fun的功能是:找出一个大于形参m且紧随m的素数,并作为函数值返回。int fun(int m) int i, k ; for (i = m + 1 ; ; i+) for (k = 2 ; k i ; k+)/*fou

4、nd*/ if (i % k != 0) /if(i%k=0) break ;/*found*/ if (ksl) return t; else return s;main() char a80,b80,*p,*q; int i; printf(nenter a string : ); gets(a); printf(nenter a string again : ); gets(b); printf(the longer is :n%sn,fun(a,b);6. .给定程序moid1.c中的函数creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。typedef

5、 struct aa int data; struct aa *next; node;node *creatlink(int n, int m) node *h=null, *p, *s; int i;/*found*/p=(node )malloc(sizeof(node); /(node *) h=p; p-next=null; for(i=1; idata=rand()%m; s-next=p-next; p-next=s; p=p-next; /*found*/ return p; /return houtlink(node *h) node *p; p=h-next; printf(

6、nnthe list :nn head ); while(p) printf(-%d ,p-data); p=p-next; printf(n);main() node *head; head=creatlink(8,22); outlink(head);7. .给定程序modi1.c中函数fun的功能是:利用插入排序对字符串的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序。然后把第三个字符插入到前两字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中,。待排序的字符串已在主函数中赋予。#define n 80void insert(char

7、*aa) int i,j,n; char ch;/*found*/ n=strlen aa ; /n=strlen(aa) for( i=1; i=0) & ( chaaj ) aaj+1=aaj; j-; aaj+1=ch; main( )char an=qwertyuiopasdfghjklmnbvcxz; int i ; printf (the original string : %sn, a); insert(a) ; printf(the string after sorting : %snn,a );8. 给定程序moid1.c中函数fun的功能是:求出两个非零整数的最大公改为re

8、turn h约数,并作为函数值返回。例如,若给num1和num2分别输入49和21,则输出的最大公约数为7;若给num1和num2分别输入27和81,则输出的最大公约数为27.#include int fun(int a,int b) int r,t; if(ab) /*found*/ t=a; b=a; a=t; /t=a;a=b;b=t r=a%b; while(r!=0) a=b; b=r; r=a%b; /*found*/ return(a); /return (b);main() int num1, num2,a;printf(input num1 num2:); scanf(%d%

9、d,&num1,&num2);printf(num1= %d num2= %dnn,num1,num2); a=fun(num1,num2);printf(the max common divisor is %dnn,a);9. 给定程序modi1.c中函数fun的功能是:根据形参m的值(2m9),在m行m列的二维数组中存放如下所示规律的数据,由main函数输出。例如,若输入2 则输出1 22 4若输入4 则输出:1 2 3 42 4 6 83 6 9 124 8 12 16#define m 10int amm = 0 ;/*found*/fun(int *a, int m) / / fun

10、(int (*a)10,int m) int j, k ; for (j = 0 ; j m ; j+ ) for (k = 0 ; k m ; k+ )/*found*/ ajk = k * j ; / ajk=(k+1)*(j+1)main ( ) int i, j, n ; printf ( enter n : ) ; scanf (%d, &n ) ; fun ( a, n ) ; for ( i = 0 ; i n ; i+) for (j = 0 ; j 0且x2f(x)= 0 x=0或x=2(x-1)/(x-2) x0/*found*/f( double x) / double

11、f(double x) if (x = 0.0 | x = 2.0) return 0.0; else if (x 0.0) return (x -1)/(x-2); else return (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 /return s;main ( ) printf(%fn, fun(5) );11. 给定程序moid1.c中函数fun的功能是:找出100至n(不大于1000)之间三位数字

12、相等的所有整数,把这些整数放在s所指数组中,个数作为函数值返回。#include #define n 100int fun(int *s, int n) int i,j,k,a,b,c; j=0; for(i=100; in; i+) /*found*/ k=n; /k=i; a=k%10; k/=10; b=k%10; k/=10;/*found*/ c=k%10 /c=k%10; if( a=b & a=c ) sj+=i; return j;main() int an, n, num=0, i; do printf(nenter n( 1000); num = fun( a,n ); p

13、rintf(nnthe result :n); for(i=0; inum; i+)printf(%5d,ai); printf(nn);12. 给定程序modi1.c中函数fun的功能是:交换主函数中两个变量的值。例如:若变量a中的值原为8,b中的值为3。程序运行后a中的值为3,b中的值为8。/*found*/int fun(int x,int y) /int fun(int *x,int *y) int t;/*found*/ t=x;x=y;y=t; /t=*x;*x=*y;*y=t main() int a,b; a=8;b=3; fun(&a,&b); printf(%d, %dn,

14、a,b);13.(45,50) 给定程序modi1.c中函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:7654321,t中的数为:642。#include /*found*/void fun (long s, long t) / 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,

15、 t; printf(nplease enter s:);scanf(%ld, &s); fun(s, &t);printf(the result is: %ldn, t);14. 给定程序modi1.c是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来并且作为函数值返回。#include #include typedef struct aa int data; struct aa *next; node;int fun(node *h) int sum = 0 ; node *p;/*found*/ p=h; /p

16、=h-next ; while(p) if(p-data%2=0) sum +=p-data;/*found*/ p=h-next; /p=p-next return sum;node *creatlink(int n) node *h, *p, *s, *q; int i, x; h=p=(node *)malloc(sizeof(node); for(i=1; idata=rand()%16; s-next=p-next; p-next=s; p=p-next; p-next=null; return h;outlink(node *h, file *pf) node *p; p = h-

17、next; fprintf(pf ,nnthe list :nn head ); while(p) fprintf(pf ,-%d ,p-data ); p=p-next; fprintf (pf,n);outresult(int s, file *pf) fprintf(pf,nthe sum of even numbers : %dn,s);main() node *head; int even; clrscr(); head=creatlink(12); head-data=9000; outlink(head , stdout); even=fun(head);printf(nthe

18、result :n); outresult(even, stdout);15. 给定程序modi1.c中函数fun的功能是:求k!(k 0 /if(k0) return (k*fun(k-1);/*found*/ else if ( k=0 ) / else if( k=0) return 1l;main() int k = 10 ; clrscr() ; printf(%d!=%ldn, k, fun ( k ) ;16. 给定程序modi1.c中fun函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写。(这里的”单词”是指由空格隔开的字符串)。例如,若输入”i am a stud

19、ent to take the examination.”,则应输出”i am a student to take the examination.”#include #include #include void fun( char *p ) int k = 0; for( ; *p; p+ ) if( k ) /*found*/ if( p = )/*改为if(*p= ) */ k = 0;/*found*/ * (p-1) = toupper( *( p - 1 ) ) /* 改为 添加; */ else k = 1;main() char chrstr64; int d ; clrscr

20、(); printf( nplease enter an english sentence within 63 letters: ); gets(chrstr);d=strlen(chrstr) ; chrstrd = ; chrstrd+1 = 0 ; printf(nnbefore changing:n %s, chrstr); fun(chrstr); printf(nafter changing:n %s, chrstr); 17. 给定程序modi1.c中函数fun的功能是:求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未

21、找到,则函数值为null。例如:当字符串中的内容为:”abcdabfabcdx”,t中的内容为:”ab”时,输出结果应是:abcdx。当字符中内容为:”abcdabfabcdx”,t中的内容为:”abd”时,则程序输出未找到信息:not be found!。char * fun (char *s, char *t ) char *p , *r, *a;/*found*/ a = null; /a=null while ( *s ) p = s; r = t; while ( *r )/*found*/ if ( r = p ) r+; p+; / /if(*r=*p) r+;p+; else

22、break; if ( *r = 0 ) a = s; s+; return a ;main() char s100, t100, *p; clrscr();printf(nplease enter string s :);scanf(%s, s );printf(nplease enter substring t :);scanf(%s, t ); p = fun( s, t );if ( p ) printf(nthe result is : %sn, p);else printf(nnot found !n );18. 给定程序modi1.c中函数fun的功能是:求整数x的y次方的低3位

23、值。例如:整数5的6次方为12625,此值的低3位值为625。#include long fun(int x,int y,long *p ) int i; long t=1;/*found*/ for(i=1; iy; i+) / for(i=1;i=y; i+) t=t*x; *p=t;/*found*/ t=t/1000; /t=t%1000; return t;main() long t,r; int x,y; printf(ninput x and y: ); scanf(%ld%ld,&x,&y); t=fun(x,y,&r);printf(nnx=%d, y=%d, r=%ld,

24、last=%ldnn,x, y,r,t );19. 给定程序modi1.c中函数fun的功能是:由形参给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实数的个数。例如,n=8时,输入:193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763所得平均值为:195.838745,在平均值以上的实数个数应为:5int fun(float x, int n)/*found*/ int j, c=0; float xa=0.0; / for (j=0; jn; j+ ) xa += xj/n; printf(ave =%fn

25、,xa); for (j=0; j xa) /if(xj=xa) c+; return c;main ( ) float x100 = 193.199, 195.673, 195.757, 196.051, 196.092, 196.596, 196.579, 196.763; clrscr( ); printf(%dn, fun (x, 8);20. 给定程序modi1.c中函数fun的功能是:将tt所指字符串的小写字母都改为对应的大写字母,其它字符不变。#include #include char* fun( char tt ) int i; for( i = 0; tti; i+ )/*

26、found*/if( a = tti )|( tti = z ) ) /if( a = tti )&( tti = z ) ) /*found*/ tti += 32; /ti-=32; return( tt ); main( ) int i; char tt81; clrscr(); printf( nplease enter a string: ); gets( tt );printf( the result string is:n%s, fun( tt ) );21. 给定程序modi1.c中函数fun的功能是:将s所指字符串中位于奇数位置的字符或ascii码为偶数的字符放入t所指数组中

27、(规定第一个字符放在第0位上)。#define n 80void fun(char *s, char t) int i, j=0; for(i=0; istrlen(s); i+)/*found*/ if(i%2 & si%2=0) /if(i%2|si%2=0) tj+=si;/*found*/ ti=0; /tj=0;main() char sn, tn; clrscr(); printf(nplease enter string s : ); gets(s); fun(s, t); printf(nthe result is : %sn,t);22. 给定程序modi1.c中函数fun和

28、funx的功能是:用二分法求方程的一个根,并要求绝对误差不超0.001。例如,若给m输入-100,给n输入90,则函数求得一个根值为2.000。double funx(double x) return(2*x*x*x-4*x*x+3*x-6); double fun( double m, double n)/*found*/ int r; / double 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, ro

29、ot; printf(enter m n :n); scanf(%lf%lf,&m,&n); root=fun( m,n ); printf(root = %6.3fn,root);23. 给定程序modi1.c中函数fun的功能是:从s所指字符串中删除所有小写字母c。void fun( char *s ) int i,j; for(i=j=0; si!=0; i+) if(si!=c)/*found*/ sj=si; /sj+=si;/*found*/ si=0; / sj=0;main() char s80; printf(enter a string: ); gets(s); print

30、f(the original string: ); puts(s); fun(s); printf(the string after deleted : ); puts(s);printf(nn);24. 给定程序modi1.c中函数fun的功能是:计算n的5次方的值(规定n的值大于2、小于8),通过形参指针传回主函数;并计算该值的个位、十位、百位上数字之和作为函数值返回。例如,7的5次方是16807,其低3位数的和值是15。#include #include int fun( int n ,int *value ) int d,s,i;/*found*/ d=0; s=0; / d=1 ;

31、for(i=1; i=5; i+) d=d*n; *value=d; for(i=1; i=3; i+) s=s+d%10;/*found*/ d=d10; /d=d/10; return s;main() int n, sum, v; do printf(nenter n( 2n8): );scanf(%d,&n); while(n=8); sum=fun( n,&v ); printf(the result:n value=%d sum=%dn,v,sum);25. 给定程序modi1.c中函数fun 的功能是:从整数1到55之间,选出能被3整除、且有一位上的数是5的那些数,并把这些数放在

32、b所指数组中,这些数的个数作为函数值返回。规定,函数中a1放个位数,a2放十位数。fun( int *b ) int k,a1,a2,i=0; for(k=10; k=55; k+)/*found*/ a2=k/1o; / a2=k/10; a1=k-a2*10; if(k%3=0 & a2=5)|(k%3=0 & a1=5) bi=k; i+; /*found*/ return k; / return i ;main( ) int a100,k,m; m=fun( a ); printf(the result is :n); for(k=0; km; k+) printf(%4d,ak);

33、printf(n);26. 给定程序modi1.c中fun函数的功能是:将n个无序整数从小到大排序fun ( int n, int *a ) int i, j, p, t; for ( j = 0; jn-1 ; j+ ) p = j;/*found*/for ( i=j+1; in-1 ; i+ ) / for(i=j+1;iai )/*found*/ t=i; / p=i; if ( p!=j ) t = aj; aj = ap; ap = t; putarr( int n, int *z ) int i; for ( i = 1; i 1)例如,当给n输入5时,函数值为18;当给n输入3

34、时,函数值为14。#include /*found*/fun ( n ) / int fun( int n) int c;/*found*/ if(n=1) / if(n=1) c = 10 ; else c= fun(n-1)+2; return(c);main() int n; printf(enter n : ); scanf(%d,&n); printf(the result : %dnn, fun(n);28. 给定程序modi1.c中函数fun的功能是:给一维数组a输入任意4个整数,并按下例的规律输出。例如输入1、2、3、4,程序运行后将输出以下方阵。4 1 2 33 4 1 22

35、 3 4 11 2 3 4#include #define m 4/*found*/void fun(int a) / void fun(int am)或 void fun(int *a) int i,j,k,m; printf(enter 4 number : ); for(i=0; i0;i-) k=am-1; for(j=m-1;j0;j-)/*found*/ aaj=aj-1; /aj=aj-1; a0=k; for(m=0; mm; m+) printf(%d ,am); printf(n); main() int am; fun(a); printf(nn);29. 给定程序mod

36、i1.c中函数fun的功能是:根据输入的三个边长(整型值),判断能否构成三角形;构成的是等边三角形,还是等腰三角形。若能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。#include /*found*/void fun(int a, int b, int c)/ int fun(int a,int b,int c) if(a+bc & b+ca & a+cb) if(a=b & b=c) return 3; else if(a=b|b=c|a=c) return 2;/*found*/ else retrun 1 /else

37、return 1; else return 0;main() int a,b,c,shape;printf(ninputa,b,c:); scanf(%d%d%d,&a,&b,&c); printf(na=%d, b=%d, c=%dn,a,b,c); shape =fun(a,b,c); printf(nnthe shape : %dn,shape);30. 给定程序modi1.c中函数fun的功能是:读入一个字符串(长度20),将该字符串中的所有字符按ascii码升序排序后输出。例如,若输入:edcba,则输出:abcde。void fun( char t ) char c; int i, j;/*found*/ for( i = strlen( t ); i; i- ) /for(i=strlen(t)-1;i;i-) for( j = 0; j i; j+ )/*found

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论