/*******************总结*******************
while()语句参数为0或1和-1,当为0时,则结束;当为1/-1时,则继续循环。
strcmp()返回的值为0,-1,1;当为0时,则相等,当为1时,第一个大于第二个,当为-1时,第一个小于第二个。
*******************结束*******************/
#include<stdio.h>
#include<string.h>
#define num 10 //输入的字符串个数
void strsort(char str[][20],int n)
{
int i,j;
char temp[20];
/*冒泡排序
for(i=n-2;i>=0;i--)
for(j=n-1;j>=n-i-1;j--)
{
if(strcmp(str[j],str[j-1])<0)
{
strcpy(temp,str[j]);
strcpy(str[j],str[j-1]);
strcpy(str[j-1],temp);
}
}
*/
//顺序排序
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(strcmp(str[j],str[i])<0)
{
strcpy(temp,str[j]);
strcpy(str[j],str[i]);
strcpy(str[i],temp);
}
}
printf("/n/n排序后的字符串<升序>");
for(i=0;i<n;i++)
{
printf("/n字符串%d:%s",i+1,str[i]);
}
for(i=n-2;i>=0;i--)
{
for(j=n-1;j>=n-1-i;j--)
{
if(strcmp(str[j],str[j-1])>0)
{
strcpy(temp,str[j]);
strcpy(str[j],str[j-1]);
strcpy(str[j-1],temp);
}
}
}
printf("/n/n排序后的字符串<降序>");
for(i=0;i<n;i++)
{
printf("/n字符串%d:%s",i+1,str[i]);
}
printf("/n");
}
void main()
{
char str[num][20];
int n=0;
printf("请输入字符串,输入(!)结束/n");
do
{
printf("字符串%d:",n+1);
scanf("%s",str[n]);
n++;
}while(strcmp(str[n-1],"!") && n<num);
//while语句中为0,则结束;1则为继续循环。如果str[n-1](也就是!)等于!,则为0,其余则为1。
n--; //除去我们输入的(!)
strsort(str,n);
}
博客总结了while()语句和strcmp()函数的返回值规则,while参数为0时结束循环,为1或 -1 时继续;strcmp返回0、-1、1分别表示相等、第一个小于第二个、第一个大于第二个。还给出了字符串排序的代码示例,包含升序和降序排序。
1462

被折叠的 条评论
为什么被折叠?



