c语言二级改错题答案

  • 格式:doc
  • 大小:1.66 MB
  • 文档页数:75

改错题 1、 #include #include typedef struct aa { int data; struct aa *next; } NODE; int fun ( NODE *h ) { int max=-1; NODE *p; /***********found**********/ p=h ; p=h->next; /*h指向的是头节点,题目要求不要头节点,那么我们从第2个结点开始*/ while(p) { if(p->data>max ) max=p->data; /***********found**********/ p=h->next ; p=p->next; /*链表中的指针后移*/ } return max; } outresult(int s, FILE *pf) { fprintf(pf,"\nThe max in link : %d\n",s);}

NODE *creatlink(int n, int m) { NODE *h, *p, *s; int i; h=p=(NODE *)malloc(sizeof(NODE));h->data=9999; for(i=1; i<=n; i++) { s=(NODE *)malloc(sizeof(NODE)); s->data=rand()%m; s->next=p->next; p->next=s; p=p->next; } p->next=NULL; return h; } outlink(NODE *h, FILE *pf) { NODE *p; p=h->next; fprintf(pf,"\nTHE LIST :\n\n HEAD "); while(p) { fprintf(pf,"->%d ",p->data); p=p->next; } fprintf(pf,"\n"); } main() { NODE *head; int m; head=creatlink(12, 100); outlink(head , stdout); m=fun(head); printf("\nTHE RESULT :\n"); outresult(m, stdout); }

2、

#include double fun ( int m ) { double y = 1.0 ; int i ; /**************found**************/ for(i = 2 ; i < m ; i++) for(i = 2 ; i < =m ; i++) /*根据题意循环条件是i<=m*/ /**************found**************/ y -= 1 /(i * i) ; y -= 1.0 /(i * i) ; /*i 是整型 等号右边都是整型,得到结果也是整型,我们想要的是实型所以,要求 1改成 1.0*/ return( y ) ; }

main( ) { int n = 5 ;

printf( "\nThe result is %lf\n", fun ( n ) ) ; }

3

#include #include char* fun( char tt[] ) { int i; for( i = 0; tt[i]; i++ ) /**********found***********/ if(( 'a' <= tt[i] )||( tt[i] <= 'z' ) ) if(( 'a' <= tt[i] )&&( tt[i] <= 'z' ) ) /*很明显,这个地方是并且,用 &&*/ /**********found***********/ tt[i] += 32; tt[i] -= 32; /*小写变大写是减去32*/ return( tt ); }

main( ) { char tt[81]; printf( "\nPlease enter a string: " ); gets( tt ); printf( "\nThe result string is:\n%s", fun( tt ) ); }

4 #include #include

float fun ( float num ) { int s ; float n, t, pi ;

t = 1 ; pi = 0 ; n = 1 ; s = 1 ; /**************found**************/ while(t >= num) while(fabs(t) >= num) /*这里的t可能会是负数,所以要取绝对值 用函数 fabs() 来实现*/ { pi = pi + t ; n = n + 2 ; s = -s ; /**************found**************/ t = s % n ; 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) ; }

5 #include int fun(int *x,int y) { int t ; /**************found**************/ t = x ; x = y ; t=*x; *x=y; /*这里的x是指针变量,可以通过 间址运算符 * 来运算 , *x 就是 变量 a */ /**************found**************/ return(y) ; return t; /*返回的值给变量 b ,应是原来 a 的内容 ,也就是 *x 的内容*/ }

main() { int a = 3, b = 8 ;

printf("%d %d\n", a, b) ; b = fun(&a, b) ; printf("%d %d\n", a, b) ; }

6

#include void fun (long s, long *t) { int d; long sl=1; /************found************/ t = 0; *t=0; /* t 是指针变量 */ while ( s > 0) { d = s%10; /************found************/ if (d%2 == 0) 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); }

7

#include int fun(int a,int b) { int r,t; if(a/************found************/ t=a; b=a; a=t; } r=a%b; while(r!=0) { a=b; b=r; r=a%b; } /************found************/ return(a); return (b); /*这里b 存放的最大公约数*/ } 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); }

8

#include /**************found**************/ fun (int n ) double fun (int n ) /*根据函数被使用的类型,或者返回值得到 函数类型是 double */

{ int a = 2, b = 1, c, k ; double s=0.0 ; for ( k = 1; k <= n; k++ ) { s = s + 1.0 * a / b ; /**************found**************/ c = a; a += b; b += c; c = a; a += b; b = c; /*根据题目要求来,看出来b =c*/ } return(s) ; }

main( ) { int n = 5 ; printf( "\nThe value of function is: %lf\n", fun ( n ) ) ; }

9