结构题在函数中的引用
我写了一个程序,是直接插入排序的算法,我用了结构体.为了简单,我省掉了结构体中的其他的东西,就只有一个key
#include<stdio.h>
struct sqlist
{ int key;
};
void InsertSort( sqlist s[ ],int n)
int n;
{ int i,j;
for(i = 2;i<=n;i++)
if(s[i].key<s[i-1].key)
{ s[0] = s[i];
j = i-1;
do { s[j+1] = s[j];
j--;
} while(s[0].key<s[j].key)
s[j+1] = s[0];
}
}
main()
{ int i,n;
struct sqlist R[100];
printf("Input key:\n");
for(i = 1;i<100;i++)
{ scanf("%d",&R[i].key);
if(R[i].key==0) break;
}
n = i;
InsertSort(R,n);
printf("Output:\n");
for(i = 1;i<=n;i++)
printf("%4d",R[i].key);
}
但是编译的时候无法通过,希望高手能给予解决:)谢谢
问题点数:20、回复次数:4Top
1 楼xiaott(我能睡觉吗)回复于 2002-10-06 17:51:47 得分 8
#include<stdio.h>
struct sqlist
{ int key;
};
void InsertSort( sqlist s[ ],int n)
int n;//重复定义,将此行去掉
{ int i,j;
for(i = 2;i<=n;i++)
if(s[i].key<s[i-1].key)
{ s[0] = s[i];//要加.key
j = i-1;
do { s[j+1] = s[j];//同上
j--;
} while(s[0].key<s[j].key)//缺分号加一个;
s[j+1] = s[0];//加.key
}
}
main()
{ int i,n;
struct sqlist R[100];
printf("Input key:\n");
for(i = 1;i<100;i++)
{ scanf("%d",&R[i].key);
if(R[i].key==0) break;
}
n = i;
InsertSort(R,n);
printf("Output:\n");
for(i = 1;i<=n;i++)
printf("%4d",R[i].key);
}
Top
2 楼highwjf(阿飞,一只会飞的菜鸟)回复于 2002-10-06 18:01:07 得分 6
#include<stdio.h>
struct sqlist
{ int key;
};
void InsertSort( sqlist s[ ],int n)
{ int i,j;
for(i = 2;i<=n;i++)
if(s[i].key<s[i-1].key)
{ s[0] = s[i];
j = i-1;
do { s[j+1] = s[j];
j--;
} while(s[0].key<s[j].key);
s[j+1] = s[0];
}
}
main()
{ int i,n;
struct sqlist R[100];
printf("Input key:\n");
for(i = 1;i<100;i++)
{ scanf("%d",&R[i].key);
if(R[i].key==0) break;
}
n = i;
InsertSort(R,n);
printf("Output:\n");
for(i = 1;i<=n;i++)
printf("%4d",R[i].key);
}
我改了一下
不知道你的算法是否有错
我没时间看
我用bc 3.0
Top
3 楼GGYY123(Break all the rules)回复于 2002-10-06 18:04:59 得分 6
#include<stdio.h>
struct sqlist
{ int key;
};
typedef struct sqlist link;
void InsertSort( link s[],int n)
{ int i,j;
for(i = 2;i<=n;i++)
if(s[i].key<s[i-1].key)
{ s[0].key = s[i].key;
j = i-1;
do { s[j+1] = s[j];
j--;
} while(s[0].key<s[j].key);
s[j+1] = s[0];
}
}
main()
{ int i,n;
struct sqlist R[100];
printf("Input key:\n");
for(i = 1;i<100;i++)
{ scanf("%d",&R[i].key);
if(R[i].key==0) break;
}
n = i;
InsertSort(R,n);
printf("Output:\n");
for(i = 1;i<=n;i++)
printf("%4d",R[i].key);
}
Top
4 楼GGYY123(Break all the rules)回复于 2002-10-06 18:06:07 得分 0
我的在Tc2.0上调试通过.Top




