C语言:将输入的字符串按首字母顺序排列。
例如:输入:
jdgf
ieur
duhf
end
输出: dhuf
ieur
jdgf
注:多用几种方法;最好比较易懂的!!! 展开
#include<stdio.h>
#include<string.h>
void sort(char *a[]);
void print(char *a[]);
int main()
{
char *a[] ={"ceo","define","basic","abc","empty"};
printf("原来的序列是:\n");
print(a);
sort(a);
printf("\n排序后的序列是:\n");
print(a);
printf("\n");
return 0;
}
void sort(char *a[])
{
int i,j;
char *temp;
for(i=0;i<4;i++)//注意是i<4
{
for(j=0;j<4;j++)//注意是j<4,因为下面要+1和后面的那个字符串比较
{
if(strcmp(a[j],a[j+1])>0)//字符串比较:>0表示前面的字符串比后面的大则交换
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
void print(char *a[])
{
int i;
for(i=0;i<5;i++)
{
printf("%s ",a[i]);
}
}
运行效果:
扩展资料:
return 0的用法:
return的作用是结束正在运行的函数,并返回函数值。return后面可以跟一个常量,变量,或是表达式。
函数的定义一般是这样的,例如:
inta(inti)//第一个int是函数的返回值的类型,也就是return后面跟的值的类型,a是函数的名称,括号里的是传递给函数的参数,int是参数的类型,i是参数的名字
{
...//省略函数体内容
returnb;//b必须与函数头的返回值一致(此处为int型)
}
简单函数举例:
intaddOne(intb)
{
returnb+1;
}
该函数的作用是取得一个数,将这个数加上1,再将结果返回
调用时这样:
intresult=addOne(2);//此时result的值为3
函数括号里的参数也可以为变量或能算出值的表达式
以上就是一个基本的函数,一般的函数都有返回值,也就是return后面跟的值,返回值可以为各种数据类型,如:int,float,double,char,a[](数组),*a(指针),结构或类(c++)
但不是所有函数都有返回值,如果某个函数无返回值,那么返回值的位置则为“void”关键字,此时函数体中无返回值,即无return的值。但是函数中也可出现return,即一个空的return句子,其作用是使函数立即结束,如voidprint()//括号中为空表示无传递参数、
{
printf("a");
printf("b");
return;//函数执行到此处结束
printf("c");
}//该函数只执行到return语句处,即屏幕上输出的为"ab"
#include <stdio.h>
#include <string.h>
#include <process.h>
void main()
{
char re[21][100];
int i=0;
while(i<21&&strcmp(re[i-1],"end")!=0)
{
printf("please input the %d strings\n",i+1);
gets(re[i++]);
}
for (int j=0;j<i-2;j++)
for (int k=j+1;k<i-1;k++)
if (strcmp(re[j],re[k])>0)
{
char temp[100];
strcpy(temp,re[k]);
strcpy(re[k],re[j]);
strcpy(re[j],temp);
}
printf("\nafter ordered!\n");
for (j=0;j<i-1;j++)
{
printf("%s\n",re[j]);
}
system("pause");
}
#include<stdio.h>
void main()
{
char c[10];
int i;
int j;
int temp;
gets(c);
for(i = 0;i<9;i++)
for(j = 0;j<9;j++)
if(c[j]>c[j+1])
{
temp = c[j];
c[j] = c[j+1];
c[j+1] = temp;
}
puts(c);
}
#include <stdio.h>
#include <string.h>
#include <process.h>
void main()
{
char re[21][100];
int i=0;
while(i<21&&strcmp(re[i-1],"end")!=0)
{
printf("please input the %d strings\n",i+1);
gets(re[i++]);
}
for (int j=0;j<i-2;j++)
for (int k=j+1;k<i-1;k++)
if (strcmp(re[j],re[k])>0)
{
char temp[100];
strcpy(temp,re[k]);
strcpy(re[k],re[j]);
strcpy(re[j],temp);
}
printf("\nafter ordered!\n");
for (j=0;j<i-1;j++)
{
printf("%s\n",re[j]);
}
system("pause");
}
jdgf
ieur
duhf
end
输出: dhuf