《二级C语言改错及解答》由会员分享,可在线阅读,更多相关《二级C语言改错及解答(21页珍藏版)》请在金锄头文库上搜索。
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(int (*a)10,int m) int j, k ;