能力值:
( 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]);
}
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
首先你的i=k是不对的,k没有初始化,应该是k=i,再后面的k!=i只要执行一次k=j以后,条件永远成立,也是不对的,应该在调换完以后对k重新复制k=i,正确代码见2楼,冒泡排序
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
感觉四楼是对的,i=k;好像K是0还是不确定了,忘了,还有 K=j,而 j=i+1 好像始终 k!=i 吧
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
for(i=0;i<n-1;i++) { i=k;
i 是循环变量,k 未初始化,i=k 有严重的原则问题。即便是 k 已经初始化,强行修改 for 循环变量也是编程的大忌。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
i=k; 》》 k=i;
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
LZ以后写代码最好还是注释一下,这是个好习惯
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
谢谢指点,已经改好了,忘记回复了,不好意思
我们一起学习交流,一起进步
|
|
|