请各位高手看看程序哪里错了,谢谢啦~~喵喵~~

来源:百度知道 编辑:UC知道 时间:2024/09/21 23:24:00
#include<stdio.h>
#include<string.h>
#include<conio.h>
void compare(char *name[],int n);
void print(char *name[],int n);
void main()
{
char *name[]={"follow me","c language","i love u","basic","java"};
int n=5;
clrscr();
compare(name,n);
print(name,n);
getch();
}

void compare(char *name[],int n)
{
int i,j,k;
char *temp;
for(i=0;i<=n;i++)
{
k=i;
for(j=i+1;j<=n;i++)
if(strcmp(name[k],name[j])>0)
k=j;
if(k!=i)
{
temp=name[k];name[k]=name[i];name[i]=temp;}
}
}

void print(char *name[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%s",name[i]);
}

程序可以运行,但却没有输出这几个字符串,只是出现一个待输入的光标??

这位同学,你把我害惨了,我帮你找了十几分钟了,原来就是这么一个小错误!!~~你自己听了可能都郁闷的很~
void compare(char *name[],int n)
{
int i,j,k;
char *temp;
for(i=0;i<n;i++) //应该是<n;
{
k=i;
for(j=i+1;j<n;j++) // 这个地方是j++不是i++。。。唉,复制害死人啊。。还有,循环的控制应该是<n而不是<=n;=n时就越界了。
{//这个for循环没有加括号。。
if(strcmp(name[k],name[j])>0)
k=j;
if(k!=i)
{
temp=name[k];name[k]=name[i];name[i]=temp;}
}//这是另一半括号。。
}
}
就这一个函数有问题,其他都对!

还喵喵。你猫挖。

问题是不是出在clrscr这个函数上面?
建议换成system("cls");
然后添加#include <stdlib.h>