C语言问题!!急求大神解答
有如下二维数组chara[][8]={"_c","Language","abcde","fghij","klmno","VC++"}。写一个函数,函数声明为char*so...
有如下二维数组char a[][8]={"_c","Language","abcde","fghij","klmno","VC++"}。写一个函数,函数声明为 char *sort(char(*)[8],int n,int i,int j);n表示形参数组的行数,当i与j相等且为0的时候,表示将形参数组按行重新排序,排序规则是:先按字符串长度由大到小排序,如果长度相等则按字符串的大小从大到小排序,返回值指向第一行首地址。当i与j相等且为正数的时候,不用排序,返回指向形参数组中第一个长度为j的字串的首地址,若没有这种长度的字串输出“the string is not found!”,返回空指针。当i与j不相等且都小于n的时候,交换i+1行与j+1行,返回交换后第i+1行的首地址。若输入的i和j不符合上述条件,输出“i or j is wrong!”,返回空指针。 利用这个函数实现:1、将a排序,输出a。2、交换排序后的第2行和第3行,输出a。3、输出经过第1、2步之后长度为l的字串的最后一个字母字符,如果字串中没有字母,输出“没有字母”。(l=4)。
展开
1个回答
展开全部
您好,void
f1(int
a[],int
n)
{
int
t,i,j;
for(i=1;i<n;i++)
for(j=0;j<n-1;j++)//这里错了,应该是j=i;
if(a[j]>a[j+1])
{
t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
冒泡排序,要特别注意循环的变化;
里面的for语句每被执行了后j的值就变为了n+1,j需要从新赋值,而
每一次就排出一个值,故j=i;
即每排一次里面的循环就少循环一次。
f1(int
a[],int
n)
{
int
t,i,j;
for(i=1;i<n;i++)
for(j=0;j<n-1;j++)//这里错了,应该是j=i;
if(a[j]>a[j+1])
{
t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
冒泡排序,要特别注意循环的变化;
里面的for语句每被执行了后j的值就变为了n+1,j需要从新赋值,而
每一次就排出一个值,故j=i;
即每排一次里面的循环就少循环一次。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询