C语言编程问题

题目是图中圈出来的那道求大佬用c写一下... 题目是图中圈出来的那道求大佬用c写一下 展开
 我来答
娘化的新世界
2018-04-01
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

#include <stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct students
{
    char name[10];
    int score;
    struct students *next;
}STUS;
STUS *inputStus(STUS *sHead,STUS *sTail);//输入学生信息  传参:首节点指针 尾节点指针      返回值:尾节点指针
void stusPX(STUS *sHead);//将数据链表按照分数由大到小排序
void printfStu(STUS *sHead);//打印链表数据
int main()
{
    STUS *sHead=NULL,*sTail=NULL;
    sHead=(STUS *)malloc(sizeof(STUS));
    sHead->next=NULL;

    sTail=inputStus(sHead,sTail);//想录入几个学生就调用几次
    sTail=inputStus(sHead,sTail);
    sTail=inputStus(sHead,sTail);
    sTail=inputStus(sHead,sTail);

    stusPX(sHead);
    printfStu(sHead);

    return 0;
}
void printfStu(STUS *sHead)//打印链表数据
{
    printf("姓名      分数\n");
    while(sHead->next!=NULL)
    {
        printf("%-10s%d\n",sHead->next->name,sHead->next->score);
        sHead=sHead->next;
    }
}
void stusPX(STUS *sHead)//将数据链表按照分数由大到小排序
{
    STUS *stu1=sHead->next,*stu2=NULL;
    int scoreSave;
    char nameSave[10];
    printf("开始降序排列!\n");
    while(stu1!=NULL)//冒泡排序,依次后后面所有学生成绩比较
    {
        stu2=stu1->next;
        while(stu2!=NULL)
        {
            if(stu2->score>stu1->score)
            {
                strcpy(nameSave,stu2->name);
                memset(stu2->name,0,10);
                strcpy(stu2->name,stu1->name);
                memset(stu1->name,0,10);
                strcpy(stu1->name,nameSave);

                scoreSave=stu2->score;
                stu2->score=stu1->score;
                stu1->score=scoreSave;
            }
            stu2=stu2->next;
        }
        stu1=stu1->next;
    }
    printf("排列完成!\n");
}
STUS *inputStus(STUS *sHead,STUS *sTail)//输入学生信息  传参:首节点指针 尾节点指针      返回值:尾节点指针
{
    STUS *sNew=(STUS *)malloc(sizeof(STUS));
    printf("请输入学生姓名 和 成绩:");
    scanf("%s%d",sNew->name,&sNew->score);
    sNew->next=NULL;
    if(sHead->next==NULL)
        sHead->next=sNew;
    if(sTail==NULL)
        sTail=sNew;
    else
    {
        sTail->next=sNew;
        sTail=sNew;
    }

    return sTail;
}
microroom
2018-04-01
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
#include<stdio.h>
#include<string.h>

struct stu
{
char name[32];
int score;
}stus[150];

int main()
{
int n=0,i,j;
struct stu t;

while(1)
{
printf("请输入第%d个学生的姓名和分数(空格分隔,输入exit退出):",n+1);
scanf("%s",stus[n].name);
if(0==strcmp("exit",stus[n].name))
break;
else
scanf("%d",&stus[n].score);
n++;
}
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(stus[j].score<stus[j+1].score)
{
t=stus[j];
stus[j]=stus[j+1];
stus[j+1]=t;
}
}
}
printf("排序后:\n");
for(i=0;i<n;i++)
{
printf("%s\t\t%d\n",stus[i].name,stus[i].score);
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
丛采康0
2018-04-01
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
你这个就一个排序不就完了 如果是输入学生姓名查询他的成绩再按 分数排序就用一个模糊查询一个排序就完事
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式