当前位置: 代码迷 >> C语言 >> [求助]程序错误出在哪?
  详细解决方案

[求助]程序错误出在哪?

热度:92   发布时间:2006-10-26 22:40:05.0
[求助]程序错误出在哪?
#include "stdio.h"
#include "string.h"
void ff(char *p[5])
{
int i,j;
char *q;
for(i=0;i<4;i++)
{
for(j=1;j<=4-i;j++)
{
if(strcmp(p[j-1],p[j])>0)
{
strcpy(q,p[j-1]);
strcpy(p[j-1],p[j]);
strcpy(p[j],q);
}
}
}
}
main()
{
char a[5][20];
int i;
printf("请输入5个国家的名称\n");
for(i=0;i<5;i++);
gets(a[i]);
ff(a[5]);
for(i=0;i<5;i++)
printf("%10s",a[5]);
}


到底错在哪?
请大家指出来.
谢谢~
搜索更多相关的解决方案: 程序错误  

----------------解决方案--------------------------------------------------------
以下是引用gioxiao在2006-10-26 22:40:05的发言:
#include "stdio.h"
#include "string.h"
void ff(char *p[5])
{
int i,j;
char *q=NULL;
for(i=0;i<4;i++)
{
for(j=1;j<=4-i;j++)
{
if(strcmp(p[j-1],p[j])>0)
{
strcpy(q,p[j-1]);
strcpy(p[j-1],p[j]);
strcpy(p[j],q);
}
}
}
}
main()
{
char a[5][20];
int i;
printf("请输入5个国家的名称\n");
for(i=0;i<5;i++);
gets(a[i]);
ff(a);
for(i=0;i<5;i++)
printf("%10s",a[5]);
}


到底错在哪?
请大家指出来.
谢谢~

不知道你的程序是做什么的,所以结果我不知道是否正确.


----------------解决方案--------------------------------------------------------

先谢谢你了.
然后我按你的改动了下,但是还是出错..
原题目是
用指针数组编写一个函数,用于将5个预定仪的国家名排序.在MAIN函数中调用该函数完成排序,并输出排序前后的信息.


----------------解决方案--------------------------------------------------------

哈哈.这题我做过...
#include <stdio.h>
#include <string.h>
void hs(char *name[5]);
void main()
{
char *name[]={"beijin","shanghai","tokey","london","washington"};
hs(name);
}
void hs(char *name[5])
{
int i,j;
char *p;
for(i=0;i<4;i++)
{
for(j=0;j<4-i;j++)
if(strcmp(name[j],name[j+1])>0)
{
p=name[j];
name[j]=name[j+1];
name[j+1]=p;
}
}
printf("排序后:");
for(i=0;i<5;i++)
puts(name[i]);
}
楼主貌似函数没返回值.....


----------------解决方案--------------------------------------------------------
我想应该是可以不要返回值的?
因为这个函数已经发生了地址的传送.
实参已经发生改变...

小贝贝,谢谢了,你的程序可以完成.
我的在输入字符的时候就会结束任务..
纳闷啊~~~

----------------解决方案--------------------------------------------------------
用结构体接受输入也行..刚做的...
#include <stdio.h>
#include <string.h>
struct guojia
{
char guoming[20];
}a[5];
void ff(struct guojia a[5])
{
int i,j;
char q[20];
for(i=0;i<4;i++)
{
for(j=1;j<=4-i;j++)
{
if(strcmp(a[j-1].guoming,a[j].guoming)>0)
{
strcpy(q,a[j-1].guoming);
strcpy(a[j-1].guoming,a[j].guoming);
strcpy(a[j].guoming,q);
}
}
}
for(i=0;i<5;i++)
printf("%s",a[i].guoming);
}
void main()
{
int i;
printf("请输入5个国家的名称\n");
for(i=0;i<5;i++)
gets(a[i].guoming);
ff(a);
}
----------------解决方案--------------------------------------------------------
#include "stdio.h"
#include "string.h"
void ff(char *p[5])
{
int i,j;
char *q=NULL;
for(i=0;i<4;i++)
{
for(j=1;j<=4-i;j++)
{
if(strcmp(p[j-1],p[j])>0)
{
strcpy(q,p[j-1]); <---指针能用这方法??
strcpy(p[j-1],p[j]);
strcpy(p[j],q);
}
}
}
}
main()
{
char a[5][20];
int i;
printf("请输入5个国家的名称\n");
for(i=0;i<5;i++); <-----多";"
gets(a[i]); <------这里的a还是二维字符数组?
ff(a);
for(i=0;i<5;i++)
printf("%10s",a[5]); <-----%s中间+个10是什么意思??
}
主要问题是C语言中没有字符串类型(如JAVA中的String等),貌似只有用我上面的结构才能输入.....我也不知道怎么说清楚......请高手指教把还是.......
----------------解决方案--------------------------------------------------------
  相关解决方案