全国计算机二级C语言改错题题库
2011年9月上机改错题
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*/
ret