《C语言及程序设计》实践参考——带姓名的成绩单-阿里云开发者社区

开发者社区> 开发与运维> 正文

《C语言及程序设计》实践参考——带姓名的成绩单

简介: 返回:贺老师课程教学链接 【项目1-带姓名的成绩单】设score数组中存储8名同学的C语言成绩,字符串数组name中存储同学们的姓名。这两个数组中,每名同学的姓名与成绩的下标要始终保持一致(例如name[i]和score[i]表示同一位同学(下标为i)的姓名和C语言成绩,否则会张冠李戴)。(1)输出按成绩排序后的同学的名单;(2)输出按同学姓名排序后的成绩单(排序对象是字符串)。#inclu

返回:贺老师课程教学链接


【项目1-带姓名的成绩单】
设score数组中存储8名同学的C语言成绩,字符串数组name中存储同学们的姓名。这两个数组中,每名同学的姓名与成绩的下标要始终保持一致(例如name[i]和score[i]表示同一位同学(下标为i)的姓名和C语言成绩,否则会张冠李戴)。
(1)输出按成绩排序后的同学的名单;
(2)输出按同学姓名排序后的成绩单(排序对象是字符串)。
#include<stdio.h>
#include<string.h>
#define num 8
int main()
{
    int i,j,t;
    char name[num][10]= {"zhao","qian","sun","li","zhou","wu","zheng","wang"};
    double score[num]= {79,84,65,89,60,92,78,56};
    //(1)按成绩排序并输出结果


    //(2)按姓名排序并输出结果


}
    提示:排序中交换score中的元素时,只要同时也交换name中的相应元素,就可以实现姓名和成绩的同步(如果交换成绩而不交换姓名,两者的对应关系就被破坏了。)

[参考解答]
#include<stdio.h>
#include<string.h>
#define num 8
int main()
{
    int i,j;
    double t;
    char temp[10];  //用于交换姓名字符串时作为中间变量
    char name[num][10]= {"zhao","qian","sun","li","zhou","wu","zheng","wang"};
    double score[num]= {79,84,65,89,60,92,78,56};
    //(1)按成绩排序
    for(j=0; j<num-1; j++)
        for(i=0; i<num-j-1; i++)
        {
            if(score[i]<score[i+1])
            {
                t=score[i];
                score[i]=score[i+1];
                score[i+1]=t;
                strcpy(temp, name[i]);
                strcpy(name[i], name[i+1]);
                strcpy(name[i+1], temp);
            }
        }

    printf("按成绩排序后的结果是:\n");
    for(i=0; i<num; i++)
        printf("%s\t%.1f\n", name[i], score[i]);

    //(2)按姓名排序
    for(j=0; j<num-1; j++)
        for(i=0; i<num-j-1; i++)
        {
            if(strcmp(name[i],name[i+1])>0)
            {
                strcpy(temp, name[i]);
                strcpy(name[i], name[i+1]);
                strcpy(name[i+1], temp);
                t=score[i];
                score[i]=score[i+1];
                score[i+1]=t;
            }
        }
    printf("按同学姓名排序后有结果是:\n");
    for(i=0; i<num; i++)
        printf("%s\t%.1f\n", name[i], score[i]);
    return 0;
}


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章