原程序中的问题:
1.用原来的scanf()格式控制符不能读取以逗号分隔的多个字符串,请用回车分隔各个字符串,如果坚持要用逗号分隔,就请用下面的修改程序的格式控制符。
2.排序程序有问题,具体修改请参考下面的修改后程序:
原程序修改如下:
//---------------------------------------------------------------------------
#include
#include
#include
int main()
{
char a[4][20],b[2][20];
int i,j;
for(i=0; i<4; i++)
scanf("%[^,\n]%*c",a[i]); //注意这里
for (j=0; j<3; j++) //注意这里
{
for(i=0; i<3-j; i++) //注意这里
{
if(strcmp(a[i],a[i+1])>0)
{
strcpy(b[1],a[i+1]); //注意这里
strcpy(a[i+1],a[i]); //注意这里
strcpy(a[i],b[1]); //注意这里
}
}
}
for(i=0; i<4; i++)
printf("%s ",a[i]);
return 0;
}
//---------------------------------------------------------------------------
#include
#include
#include
int main()
{
char cTmp[20];
char a[4][20];//b[2][20];
int i,j;
for(i=0; i<4; i++)
scanf("%s",a[i]);
for (j=0; j<4; j++)
{
for(i=0; i<4-j; i++)
{
if(strcmp(a[i],a[i+1])>0)
{
strcpy(cTmp, a[i]);
strcpy(a[i],a[i+1]);
strcpy(a[i+ 1],cTmp);
}
}
}
for(i=0; i<4; i++)
printf("%s ",a[i]);
return 0;
}
里面的for语句有点问题。帮你改了一下,可以运行了。
改成下面的代码就行了
#include
#include
#include
int main()
{
char a[4][20],b[20];
int i,j;
for(i = 0; i < 4; i++)
{
memset(a[i], 0, 20);
scanf("%s",a[i]);
}
for (j = 0; j < 4; j++)
{
for(i = 0; i < 3-j; i++)
{
if( strcmp(a[i],a[i+1]) > 0 )
{
memset(b, 0, 20);
strcpy(b,a[i]);
strcpy(a[i],a[i+1]);
strcpy(a[i+1],b);
}
}
}
for(i=0; i < 4; i++)
printf("%s ",a[i]);
system("PAUSE");
return 0;
}
#include
#include
#include
int main()
{
char a[4][20],b[2][20];
int i,j;
for(i=0; i<4; i++)
scanf("%s",a[i]);
for (j=0; j<4-1; j++)
{
for(i=0; i<4-j; i++)
{
if(strcmp(a[i],a[i+1])>0)
{
strcpy(b[1],a[i]);
strcpy(a[i],a[i+1]);
strcpy(a[i+1],b[1]);
}
}
}
for(i=0; i<4; i++)
printf("%s ",a[i]);
printf("\n");
return 0;
}
冒泡排序顺序弄反了
strcpy(a[i+1],b[1]);
strcpy(a[i],a[i+1]);
strcpy(b[1],a[i]);
应为:
strcpy(b[1],a[i]);
strcpy(a[i],a[i+1]);
strcpy(a[i+1],b[1]);
改过来就行了
主函数怎么定义成int型啦?