一、改错题
含有错误的源程序如下:
#include
#include
struct T
{char name [20],num[20];
};
void sort(struct T items[],int low,int high)
{struct T temp;
int k,j;
for(k=low;k for(j=low;j if(items[j].name>items[j+1].name) ② {temp=items[j];items[j]=items[j+1];items[j+1]=temp;} } void main(void) {struct T stu[4]={"Wang","6723","Cai","2106","Zhang", ③ "5129","Chang","4512","An","6868"}; int k; sort(stu,0,4); printf("The Sorted Array:\n"); for(k=0;k<5;k++) printf("name:%s,num:%s\n",stu[k]->name,stu[k]->num); ④ } 【知识点】冒泡排序、结构体数组、程序的调试 【解析】程序中的错误一般可以分为两类,一类是语法错误,即程序中有拼写错误,书写不符合C语言的规定等,此类错误可通过调试(按F9键),根据提示进行改正。另一类是逻辑错误,程序调试已通过(报success),但运行结果不正确,此类错误的修改必须要理解程序后方能改正。 本题使用起泡法完成排序,①处j 【答案】加下划线的部分改为: ①j ②if(strcmp(items[j].name, items[j+1].name)>0) ③stu[5] ④stu[k].name, stu[k].num