Ⅰ c语言中汉字如何进行排序
C语言中,汉字是按照字符串来处理的,一个汉字占用2个字节,汉字的排序就是按照汉字的编码进行排序(不是拼音),而是半个汉字的ASCII码进行排序的。
所以在输出汉字的时候,如果按照字节输出,而不按照字符串输出的话,就会出现乱码。
具体汉字的编码,就不是那么容易的了。编码一般以0x开头,表示是用一个十六进制数表示的。
Ⅱ c语言姓名首字母排序问题
按照C语言语法,main函数须为void类型;另外,你所编辑的程序段没有输入。就排序方式来讲你所用的是函数的址传递及字符串比较大小的函数,这点没有错误;就理解而言strcmp函数的确可以实现你所需的功能,其大小的比较式按ASCⅡ码值进行的比较,不知道你有没有意识到。
Ⅲ C语言:将输入的字符串按首字母顺序排列。
#include<stdio.h>
#include<string.h>
void sort(char *a[]);
void print(char *a[]);
int main()
{
char *a[] ={"ceo","define","basic","abc","empty"};
printf("原来的序列是: ");
print(a);
sort(a);
printf(" 排序后的序列是: ");
print(a);
printf(" ");
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]);
}
}
运行效果:
(3)c语言首字怎么排序扩展阅读:
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"
Ⅳ c语言用数组做通讯录 怎样将联系人的姓名首字母排序 并且输出 求大侠
排序部分
for(j=0;j<n-1;j++)
{
for(i=0;i<n-1-j;i++)
{
if((strcmp(wds[i],wds[i+1]))>0)//每个数组元素都是字符串
{
t=wds[i];
wds[i]=wds[i+1];
wds[i+1]=t;
}//冒泡排序
}
}
输出部分
for(k=0;i<n;k++)
{
puts(wds[i]);
}
Ⅳ c语言一个文本内所有单词按首字母排序
先将文本里的所有单词赋值给二维字符串变量string[i][j],取每个的单词的首字母例如string[i][0]进行比较排序,排序算法网上多得是,可以自己找一种做
for(i=0;i<9;i++) /* 冒泡法排序 */
for(j=0;j<10-i-1;j++)
if(a[j]>a[j+1])
{t=a[j];/* 交换a[i]和a[j] */
a[j]=a[j+1];
a[j+1]=t;
}
Ⅵ 如何用C语言实现一串中文姓名的排序(首字笔画或者字母)
数组的第一位设置成笔画数,第二位设置成首字母,排序时根据需要选择,输出时从第三位输出。
char *name="4w王";
Ⅶ c语言程序 中文按首字母排序
#include <stdio.h>
#include <string.h>
#define MAX_NAME 20 //最大名字长度
#define MAX_NUM 100 //最大学生人数
void sort_bubble(char (*pc)[MAX_NAME],int n)//排序函数
{
int i,j;
char str[MAX_NAME];
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(strcmp(pc[i],pc[j])>0)
{
strcpy(str,pc[i]);
strcpy(pc[i],pc[j]);
strcpy(pc[j],str);
}
}
}
}
void display_name(char (*pc)[MAX_NAME],int n)//显示这n个姓名
{
int i;
for(i=0;i<n;i++)
{
printf("%s\n",pc[i]);
}
}
int main()
{
int i=1,n;
char str[MAX_NUM][MAX_NAME];
printf("请输入学生总数:");
scanf("%d",&n);
while(i<=n)
{
printf("请输入第%d个学生姓名:",i);
scanf("%s",str[i++-1]);
}
printf("排序前的学生名单如下:\n");
display_name(str,n);
sort_bubble(str,n);
printf("排序后的学生名单如下:\n");
display_name(str,n);
return 0;
}
说明:
1:采用的是冒泡排序,用快速排序当然快些,但我忘了
2:已验证通过,结果正确。
3:随意输入人数和姓名,只要数组不越界就没有问题!
4:两个函数:排序和显示
5:给分+好评
Ⅷ c语言排序的方法
排序主要分为以下几种。
1.冒泡排序:通过循环比较前后数的大小进行交换。最后使得数组有序。
2.快速排序:首先将第一个数作为一个基准,然后循环,将前半部分大于该数的与后半部分小于该数的进行交换,使得以该数为分界线,前面的小于该数,后面的大于该数,然后分前后两部分继续。