用C语言将4个学生的姓名按拼音首字母从大到小排序并显示.

供稿:hz-xin.com     日期:2025-01-13
c语言输入N个姓名拼音,找出按字母顺序排在最前的拼音

调试了一下,问题在字符串操作。
最简单的办法是使用系统提供的字符串操作函数。
修改代码和注释如下:
#include#include //增加字符串操作支持#define N 5int main(){ char cs[N][20],temp[20]="0";//定义时初始化字符串数组 int i,p, maxLen; printf("input names:
"); for(i=0;i<N;i++) gets(cs[i]); printf("
"); // temp[20]="0"; //字符串操作不能直接赋值,使用strcpy函数 for(i=1;i<N;i++) { //对二维数组的行进行循环 //if (cs[i] < temp) if(strcmp(cs[i],temp)<0)//字符串比较使用strcmp函数 strcpy(temp,cs[i]); //字符串赋值,使用strcpy函数 } printf("The name is:%s
", temp); return 0;}在VC6编译通过,如下图:

供参考。

参考下面
#include
#include
void input(char (*p)[10],int n)
{
int i; //int
for(i=0;i<n;i++)
{
printf("input第%d个姓名:",i+1);
scanf("%s",&p[i]);
printf("
");
}
}
void output(char (*p)[10],int,n)
{
int i;
printf("排序之后为:");
for(i=0;i<n;i++)
{
printf("%s", p[i]);
printf("
");
}
}
void sort(char (*p)[10],int n)
{
int i,j;
char t[10];//----------------
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(p[i],p[j])>0)
{

strcpy( t,p[i] );
strcpy( p[i],p[j] );
strcpy( p[j],t);
}
}
int main()
{
char s[4][10];
input(s,4);
sort(s,4);
output(s,4);
system("pause");
return 0;
}

一个学生的这样搞:

姓名分开,成两个字符串。

分别排序,形成新的字符串,然后输出。


其他学生一样的方法。

#include <stdio.h>
#include <string.h>

#define STU_NAME_MAX_LEN 20
char stu_name[][STU_NAME_MAX_LEN] = 
{
    "iker cassilas",
    "luis suarez",
    "cristiano ronaldo",
    "lionl messi"
};

void main()
{
    int stu_count = sizeof(stu_name)/sizeof(stu_name[0]);
    int i, j, k;
    for (i=0; i<stu_count; i++)
    {
        char firstname[STU_NAME_MAX_LEN];
        char familyname[STU_NAME_MAX_LEN];
        int blankpos = 0;

        //将姓名分开
        memset(firstname, 0, STU_NAME_MAX_LEN);
        memset(familyname, 0, STU_NAME_MAX_LEN);
        for (j=0; j<sizeof(stu_name[i]); j++)
        {
            if (stu_name[i][j] == ' ')
            {
                blankpos = j;
                break;
            }
        }
        memcpy(firstname, &stu_name[i][0], blankpos);
        memcpy(familyname, &stu_name[i][blankpos+1], sizeof(stu_name[i])-blankpos-1);
        printf("old: %s %s
", firstname, familyname);

        //排序
        for (j=0; firstname[j]!='\0'; j++)
        {
            for (k=j+1; firstname[k]!='\0'; k++)
            {
                if (firstname[j] < firstname[k])
                {
                    char ctemp = firstname[j];
                    firstname[j] = firstname[k];
                    firstname[k] = ctemp;
                }
            }
        }
        for (j=0; familyname[j]!='\0'; j++)
        {
            for (k=j+1; familyname[k]!='\0'; k++)
            {
                if (familyname[j] < familyname[k])
                {
                    char ctemp = familyname[j];
                    familyname[j] = familyname[k];
                    familyname[k] = ctemp;
                }
            }
        }
        printf("new:%s %s

", firstname, familyname);
    }
}


用C语言将4个学生的姓名按拼音首字母从大到小排序并显示.
j, k; for (i=0; i<stu_count; i++) { char firstname[STU_NAME_MAX_LEN]; char familyname[STU_NAME_MAX_LEN]; int blankpos = 0; \/\/将姓名分开 memset(firstname, 0, STU_NAME_

一个C语言程序,将输入的几个姓氏拼音按首字母的顺序重新输出。为什么输 ...
include<stdio.h> include<string.h> void fsort(char cname[][6],int n){ int i,j,k;char temp[6]={0};for(k=1;k<n-1;k++)for(j=0;j<n-k-1;j++)if (cname[j][0]>cname[j+1][0]){ strcpy(temp,cname[j]);strcpy(cname[j],cname[j+1]);strcpy(cname[j+1],t...

...的字符串数组a 4 10,从键盘输入这四个学生的名字 (名字长度小于10...
char ID[20];\/\/学号 char Name[20];\/\/姓名 float math;\/\/成绩1 float chinese;\/\/成绩2 float english;\/\/成绩3 };int main(){ STU myStu[10];for(int i = 0; i < 10;i++){ printf("请输入第%d个学生的信息\\n",i+1);printf("学号:");scanf("%s",myStu[i].ID);printf("...

c语言姓名首字母排序问题
按照C语言语法,main函数须为void类型;另外,你所编辑的程序段没有输入。就排序方式来讲你所用的是函数的址传递及字符串比较大小的函数,这点没有错误;就理解而言strcmp函数的确可以实现你所需的功能,其大小的比较式按ASCⅡ码值进行的比较,不知道你有没有意识到。

c语言排序姓名首字母的流程是怎样的呢?我想做流程图
int main(){ int m,n,k,l;do{ scanf("%d%d",&n,&m);}while(m<n||m<0||n<0);k=max_coumon_divisor(n,m);l=min_coumon_multiple(n,m);printf("%d %d",k,l);return 0;} int max_coumon_divisor(int n,int m){ int k,l;k=n;while(k%m!=0) k=k+n;l=m*n\/k...

如何用C语言实现一串中文姓名的排序(首字笔画或者字母)
数组的第一位设置成笔画数,第二位设置成首字母,排序时根据需要选择,输出时从第三位输出。char *name="4w王";

编程输入3个学生的姓名,按首字母升序输出
\/\/C语言给你写的#include<stdio.h>#include<string.h>int main(){char name[3][20];char str[20];int i,j;scanf("%s %s %s",name[0],name[1],name[2]);for(i=0;i<2;i++) \/\/排序采用冒泡排序法for(j=i+1;j<3;j++)if(strcmp(name[i],name[j])>0){strcpy(str,name...

在c语言中我想对汉字字符串按拼音进行排序,可以直接利用strcmp函数来进 ...
ansi GB2312里一级汉字是按拼音排序的,其他的汉字按部首\/笔划排序。所以能按拼音排序的汉字只有3000多个,直接用strcmp()比较就可以了。但是如果用的是Unicode,由于Unicode里的汉字按笔划顺序排序,所以没有办法实现按拼音排序。代码如下:include<stdio.h>#include<string.h> int main(){ char a[5]...

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]);} ...

一个数组里有各种中文人名,怎样按拼音首字母把里面的元素分别存到另外的...
那得先知道所有姓的拼音第一个字母啊。我是很想帮你,我也会写。就是不知道这个每个字所对应的拼音啊。如果有了就好做了。用搜狗拼音的码表也可以。就是分数太少了。这里面用到的了比较多的技术,有排序,二分查找,有HASH,等等。