C语言程序改错及填空题C语言程序改错及填空题.doc
文本预览下载声明
gc23.c下列程序是建立一个包含学生有关数据的单向链表。但该程序有2个错误,错误出现在
每个注释行附近,请调试改正。调试改正中,不得改变程序结构,也不得增删语句。
#define NULL 0
struct stud
{
long num;
char name[10];
float score;
struct stud *next;
};
/* …………… comment …………… */
int n;
struct stud create() ////////struct stud *create(void)
{
struct stud *head,*p1,*p2;
n=0;
p1=p2=(struct stud *)malloc(sizeof(struct stud));
scanf(%ld,%s,%f,p1-num,p1-name,p1-score);
/* ……………comment …………… */
head=NULL;
while(p1!=0) //////////while(p1-num!=0)
{
n=n+1;
if(n==1) head=p1;
else p2-next=p1;
p1=(struct stud *)malloc(size(struct stud));
scanf(%ld,%s,%f,p1-num,p1-name,p1-score);
}
p2-next=NULL;
return(head);
}
gc57.c的功能是互换给定数组中的最大数和最小数。如将下面8个数:
5,3,1,4,2,8,9,6
变成:
5,3,9,4,2,8,1,6
程序中,最大数与最小数的互换操作通过函数调用来实现,让指针max和min分别指向最大数和最小数。程序有二处错误,请改正。注意:不得增行和删行,也不得修改程序的结构。
main()
{
int i;
static int a[8]={5,3,1,4,2,8,9,6};
void jhmaxmin();
printf( Original array: \n);
for(i=0; i8; i++)
printf(%5d,a[i]);
printf(\n);
jhmaxmin(a,8);
printf( Array after swaping max and min: \n);
for(i=0; i8; i++)
printf(%5d,a[i]);
printf(\n);
}
//注意:void jhmaxmin(p,n)
int p, n; 这是一种老的函数形式,现在一般这样写void jhmaxmin(int p,int n)
void jhmaxmin(p,n)
int p, n; //////// int *p,n;
{
int t, *max, *min, *end, *q;
end=p+n;
max=min=p;
for(q=p+1; qend; q++)
{ if(*q*max) max=q;
if(*qmax) min=q; ////////*q*min
}
t=*max; *max=*min; *min=t;
}
gc101.c的功能为:输入8个整数,使用指针以选择法对其进行排序(从小到大).程序中有两处错误代码,请改正.注意,不得改变程序结构。
#include stdio.h
main()
{
int a[8],*p=a;
int i,j;
int tempmin,tempcode;
printf(\n input the numbers:\n);
for (i=0;i8;i++)
scanf(%d,p+i);
tempmin=*p;
for (i=0;i7;i++)
{
for (j=i;j8;j++)
if (j==i||*(p+j)tempmin)
{ tempmin=*(p+i); //////////tempmin=*(p+j);
tempcode=j;
};
if (tempcode!=i)
{ *(p+tempcode)=*(p+i);
*(p+j)=tempc
显示全部