#include "stdio.h"
#include "string.h"
main()
{int p,n,i,j,k,a[100],l,num;
char m,s1[100][100],s[100][100];
scanf("%d",&n);
p=1;
do{for(i=0;s1[i][0]!='\0';i++)
{scanf("%s",s1[i]);
}
l=str1en(s1[0]);
if(l==1)
num=s1[0][0]-48;
if(l==2)
num=(s1[0][0]-48)*10+s1[0][1]-48;
if(l==3)
num=(s1[0][0]-48)*100+(s1[0][0]-48)*10+s1[0][1]-48;
for(i=1,j=0;i<=num+1;i++,j++)
{s[j]=s1[i];
a[i]=j;
}
for(i=0;i<=num;i++)
{k=i;
for(j=i+1;j<num;j++)
if(strcmp(s[a[k]],s[a[j]])<0)
k=j;
if(k!=i)
{m=a[k];
a[k]=a[i];
a[i]=m;
}
}
for(i=n-1;i>=0;i--)
printf("%s",s[a[i]]);
for(i=0;i<l;i++)
s[i][0]='\0';
p++;
}while(p<n);
}
----------------解决方案--------------------------------------------------------
甚么错误....
----------------解决方案--------------------------------------------------------
亟待高手解决
----------------解决方案--------------------------------------------------------
啊 我明白了 19行的赋值要用到库函数中的strcpy不能直接用等号的哈
----------------解决方案--------------------------------------------------------
scanf("%s",s1[i]);
是不是要加&,这题目意思说一下
----------------解决方案--------------------------------------------------------
s1[][]是个二维数组,scanf("%s",s1[i])可以通过,我以前就用win-tc弄过
s1[i]表示s1[i][0]的地址,s1[i]+1表示s1[i][1]的地址
----------------解决方案--------------------------------------------------------
#include "stdio.h"
#include "string.h"
main()
{int p,n,i,j,k,a[100],l,num;
char m,s1[100][100],s[100][100];
scanf("%d",&n);
p=1;
do{for(i=0;s1[i][0]!='\0';i++)
{scanf("%s",s1[i]);
}
...
for()循环中
执行的时侯,当i=0时,判断条件s1[i][0]!='\0'就是判断s1[0][0]!='\0',
而s1[0][0]根本就是一个不可预知的数据,怎么能进行判断呢?
----------------解决方案--------------------------------------------------------