C语言指针函数求三角形,程序崩溃了,求大神看看怎么回事,感激不尽

2024-11-16 22:31:56
推荐回答(1个)
回答(1):

#include
#include
int main()
{
char *str[6],a[6][50],temp[50];
int i,j,k;
printf("输入6个字符串\n");
for(i=0;i<6;i++)
gets(a[i]);
for(i=0; i<6; i++)
str[i] = a[i];
printf("Source order is:\n");
for(i=0;i<6;i++)
puts(str[i]);
puts("");
for(i=0;i<5;i++)
{
j=i;
for(k=i+1;k<6;k++)
{
if(strcmp(str[k],str[j])<0)
j=k;
}
if(j!=i)
{
strcpy(temp,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],temp);
}
}
printf("Now, the order is:\n");
printf("%s\n%s\n%s\n%s\n%s\n%s\n",str[0],str[1],str[2],str[3],str[4],str[5]);
}

给你改过来了,strcpy(str[i],a[i]);的用法是错的。

还有,你的strcpy(temp, str[i]);那三句是没必要的,直接交换指针就可以了,不需要strcpy看我给你的代码。

#include
#include
#define N 6
#define LEN 50
int main()
{
char *str[N], a[N][LEN], *tmp;
int i, j, idx;
printf("输入%d个字符串(每个字符串不超过%d个字符)\n", N, LEN-1);
for(i=0; i {
gets(a[i]);
str[i] = a[i];
}
puts("Source order is:");
for(i=0; i puts(str[i]);
puts("");
for(i=0; i {
idx = i;
for(j=i+1; j {
if(strcmp(str[j], str[idx]) < 0)
idx = j;
}
tmp = str[i];
str[i] = str[idx];
str[idx] = tmp;
}
puts("Now, the order is:");
for(i=0; i puts(str[i]);
}