gc23.c下列程序是建立一个包含学生有关数据的单向链表。但该程序有2个错误,错误出现在 每个注释行附近,请调试改正。调试改正中,不得改变程序结构,也不得增删语句。
#defineNULL0 structstud { longnum; charname[10]; floatscore; structstud*next; };
/*……………comment……………*/ intn;
structstudcreate()////////structstud*create(void) {
structstud*head,*p1,*p2; n=0;
p1=p2=(structstud*)malloc(sizeof(structstud));
scanf(\head=NULL;
/*……………comment……………*/ while(p1!=0)//////////while(p1->num!=0) { }
p2->next=NULL; return(head);
} n=n+1;
if(n==1)head=p1; elsep2->next=p1;
p1=(structstud*)malloc(size(structstud));
scanf(\
gc57.c的功能是互换给定数组中的最大数和最小数。如将下面8个数: 5,3,1,4,2,8,9,6 变成:
5,3,9,4,2,8,1,6
程序中,最大数与最小数的互换操作通过函数调用来实现,让指针max和min分别指向最大数和最小数。程序有二处错误,请改正。注意:不得增行和删行,也不得修改程序的结构。
main() { inti;
staticinta[8]={5,3,1,4,2,8,9,6}; voidjhmaxmin();
printf(\for(i=0;i<8;i++)
printf(\printf(\jhmaxmin(a,8);
printf(\for(i=0;i<8;i++) printf(\printf(\}
//注意:voidjhmaxmin(p,n)
intp,n;这是一种老的函数形式,现在一般这样写voidjhmaxmin(intp,intn)
voidjhmaxmin(p,n) intp,n;////////int*p,n; {
intt,*max,*min,*end,*q; end=p+n; max=min=p;
for(q=p+1;q
if(*q
t=*max;*max=*min;*min=t; }
gc101.c的功能为:输入8个整数,使用指针以选择法对其进行排序(从小到大).程序中有两处错误代码,请改正.注意,不得改变程序结构。
#include
inta[8],*p=a; inti,j;
inttempmin,tempcode;
printf(\for(i=0;i<8;i++) scanf(\tempmin=*p; for(i=0;i<7;i++) {
for(j=i;j<8;j++) if(j==i||*(p+j)
{tempmin=*(p+i);//////////tempmin=*(p+j); tempcode=j; };
if(tempcode!=i) {*(p+tempcode)=*(p+i); } } </