首页
社区
课程
招聘
小弟又回来了,又要烦请大神了
发表于: 2013-9-13 21:35 8617

小弟又回来了,又要烦请大神了

2013-9-13 21:35
8617
#include<stdio.h>
#include<string.h>
void main()
{
        void f (char *p[],int n);
        void print (char *p[],int n);
        char *p[]={"I","love","you"};
        int n=3;
        f (p,n);
        print (p,n);
}
void f (char *p[],int n)
{
        char *temp;
        int i,j,k;
        for(i=0;i<n-1;i++)
        {
                i=k;
                for(j=i+1;j<n;j++)
                {
                        if(strcmp(p[i],p[j])>0)k=j;
                        if(k!=i)
                        {
                                temp=p[i];
                                p[i]=p[k];
                                p[k]=temp;
                        }
                }
        }
}
void print (char *p[],int n)
{
        int i;
        for(i=0;i<n;i++)
                printf("%s\n",p[i]);
}
该程序编译链接均能通过,但运行时有问题,显示无法read,求大师解惑啊

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
ps:我也是菜鸟,不知达到你的目的木有?
#include<stdio.h>
#include<string.h>
void main()
{
	void f (char *p[],int n);
	void print (char *p[],int n);
	char *p[]={"LOVE","I","YOU"};
	int n=3;
	f (p,n); 
	print (p,n);
}
void f (char *p[],int n)
{
	char *temp;
	int i,j,k;
	for(i=0;i<n-1;i++)
	{
		//k = i;
		for(j=i+1;j<n;j++)
		{
			if(strcmp(p[i],p[j])>0) // 这里修改了下
			{
				temp=p[i];
				p[i]=p[j];
				p[j]=temp;
			}
		}
	}
}
void print (char *p[],int n)
{
	int i;
	for(i=0;i<n;i++)
		printf("%s\n",p[i]);
}
2013-9-13 22:09
0
雪    币: 959
活跃值: (66)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
2013-9-13 23:22
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
首先你的i=k是不对的,k没有初始化,应该是k=i,再后面的k!=i只要执行一次k=j以后,条件永远成立,也是不对的,应该在调换完以后对k重新复制k=i,正确代码见2楼,冒泡排序
2013-9-14 07:39
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感觉四楼是对的,i=k;好像K是0还是不确定了,忘了,还有 K=j,而 j=i+1 好像始终 k!=i 吧
2013-9-14 09:04
0
雪    币: 807
活跃值: (2228)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
for(i=0;i<n-1;i++)
{
i=k;


      i 是循环变量,k 未初始化,i=k 有严重的原则问题。即便是 k 已经初始化,强行修改 for 循环变量也是编程的大忌。
2013-9-14 09:43
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
i=k; 》》  k=i;
2013-9-14 11:49
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
LZ以后写代码最好还是注释一下,这是个好习惯
2013-9-14 11:51
0
雪    币: 264
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
谢谢指点,已经改好了,忘记回复了,不好意思
   我们一起学习交流,一起进步
2013-9-22 21:15
0
游客
登录 | 注册 方可回帖
返回
//