当前位置: 代码迷 >> C语言 >> [求助]帮我调试一下这个小程序
  详细解决方案

[求助]帮我调试一下这个小程序

热度:176   发布时间:2007-01-12 19:04:07.0
[求助]帮我调试一下这个小程序

/* 函数fun的功能是:用冒泡法对6个字符串进行排序。
void fun(char *str[] , int n) */


#include <stdio.h>
#include <string.h>
void fun(char *st[],int n);
void main()
{
int n,i;
char *st[]; /*定义一个字符指针*/
scanf("%d",&n); /*输入n个字符进行比较*/
for(i=0;i<n;i++)
scanf("%s",st); /*输入要比较的字符*/
fun(*st[],n); /*函数的传递,我觉得我这步错了不知道字符串是如何传递的*/
}


void fun(char *st[],int n)
{
int i,j;
char *st1[];
for(i=0;i<n-1;i++) /*冒泡的外循环要比较的次数*/
for(j=n-1;j>i;j++) /*每次循环*/
if(strcmp(st[j]>st[j-1] /*做交换*/
{
st1[]=st[j];
st[j]=st[j-1];
st[j-1]=st1[];
}
printf("The result is:");
for(i=0;i<n;i++) /*输出结果*/
printf("%10s",st[i]);
}



很多错``不知道如何解决````谁有空的话帮我调试一下```
我第一次做字符串的题目有些蒙```

搜索更多相关的解决方案: 调试  

----------------解决方案--------------------------------------------------------
void main()
改为int main(void)
----------------解决方案--------------------------------------------------------
if(strcmp(st[j]>st[j-1] /*做交换*/

if(strcmp(st[j],st[j-1])>0)
----------------解决方案--------------------------------------------------------
if(strcmp(st[j],st[j-1]) ==-1)

if(strcmp(st[j]>st[j-1] )) /*做交换*/

----------------解决方案--------------------------------------------------------
st1[]=st[j];

字符串不能直接赋值,而应该用strcpy(st1,st[j]);
此后的字符串赋值均如此更改
----------------解决方案--------------------------------------------------------
谢谢``那个
void main()
为什么改成int main(void)
有谁调用main吗?`
----------------解决方案--------------------------------------------------------
VC编译器老说我定义的数组长度未知是什么意思?`
----------------解决方案--------------------------------------------------------
以下是引用frog555在2007-1-12 20:45:04的发言:
谢谢``那个
void main()
为什么改成int main(void)
有谁调用main吗?`

看看我的电子书:http://bbs.bc-cn.net/viewthread.php?tid=115667
你就会知道了


----------------解决方案--------------------------------------------------------
以下是引用frog555在2007-1-12 20:49:26的发言:
VC编译器老说我定义的数组长度未知是什么意思?`

char *st[];
是错误的,当然不对了

char **st;或

define N N的最大值
char st[N][N];


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

#include <stdio.h>
#include <string.h>
void fun(char *st[],int n);
void main(void)
{
int n,i;
char **st; /*定义一个字符指针*/
scanf("%d",&n); /*输入n个字符进行比较*/
for(i=0;i<n;i++)
scanf("%s",st); /*输入要比较的字符*/
fun(**st,n); /*函数的传递,我觉得我这步错了不知道字符串是如何传递的*/
}


void fun(char *st[],int n)
{
int i,j;
char **st1;
for(i=0;i<n-1;i++) /*冒泡的外循环要比较的次数*/
for(j=n-1;j>i;j++) /*每次循环*/
if(strcmp(st[j],st[j-1]>0)) /*做交换*/
{
strcpy(st1[],st[j]);
strcpy(st[j],st[j-1]);
strcpy(st[j-1],st1[]);
}
printf("The result is:");
for(i=0;i<n;i++) /*输出结果*/
printf("%10s",st[i]);
}

这是我改后的不过还 有几个错我改不出来```


----------------解决方案--------------------------------------------------------
  相关解决方案