c语言 程序 请高手帮忙看看错在哪里?
这是我的源程序,作用是输入字符串,然后排序。#include<stdio.h>#include<string.h>voidpaixu(char(*p)[30]){inti...
这是我的源程序,作用是输入字符串,然后排序。
#include<stdio.h>
#include<string.h>
void paixu(char(*p)[30])
{
int i,j,k;
char *q;
for(i=0;i<9;i++)
{k=i;
for(j=i+1;j<10;j++)
if(strcmp(p[k],p[j])>0)
k=j;
if(k!=i)
{
strcpy(q,p[i]);
strcpy(p[i],p[k]);
strcpy(p[k],q);
}
}
}
int main()
{
char a[3][30];
int i;
for(i=0;i<3;i++)
scanf("%s",a[i]);
paixu(a);
for(i=0;i<3;i++)
printf("%f",a[i]);
system("pause");
}
我在Dev上运行的,编译的时候不提示有错误,运行时输入三个字符串后未排序就自动关闭程序,请问这是错在哪里? 展开
#include<stdio.h>
#include<string.h>
void paixu(char(*p)[30])
{
int i,j,k;
char *q;
for(i=0;i<9;i++)
{k=i;
for(j=i+1;j<10;j++)
if(strcmp(p[k],p[j])>0)
k=j;
if(k!=i)
{
strcpy(q,p[i]);
strcpy(p[i],p[k]);
strcpy(p[k],q);
}
}
}
int main()
{
char a[3][30];
int i;
for(i=0;i<3;i++)
scanf("%s",a[i]);
paixu(a);
for(i=0;i<3;i++)
printf("%f",a[i]);
system("pause");
}
我在Dev上运行的,编译的时候不提示有错误,运行时输入三个字符串后未排序就自动关闭程序,请问这是错在哪里? 展开
2个回答
展开全部
void paixu(char(*p)[30])
{
int i,j,k;
char q[30];// 注意这里,必须有临时存储空间
for(i=0;i<3;i++) // 注意这里,数量必须和你传入的数组大小一致,你可以用参数指定
{
k=i;
for(j=i+1;j<3;j++) // 注意这里,同上
if(strcmp(p[k],p[j])>0)
k=j;
if(k!=i)
{
strcpy(q,p[i]);
strcpy(p[i],p[k]);
strcpy(p[k],q);
}
}
}
int main()
{
char a[3][30] = {0};
int i;
for(i=0;i<3;i++)
scanf("%s",a[i]);
paixu(a);
for(i=0;i<3;i++)
printf("%s\n",a[i]);//注意这里
system("pause");
}
{
int i,j,k;
char q[30];// 注意这里,必须有临时存储空间
for(i=0;i<3;i++) // 注意这里,数量必须和你传入的数组大小一致,你可以用参数指定
{
k=i;
for(j=i+1;j<3;j++) // 注意这里,同上
if(strcmp(p[k],p[j])>0)
k=j;
if(k!=i)
{
strcpy(q,p[i]);
strcpy(p[i],p[k]);
strcpy(p[k],q);
}
}
}
int main()
{
char a[3][30] = {0};
int i;
for(i=0;i<3;i++)
scanf("%s",a[i]);
paixu(a);
for(i=0;i<3;i++)
printf("%s\n",a[i]);//注意这里
system("pause");
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询