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

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

【项目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;
}
时间: 2024-10-24 03:44:14

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

2014秋C++第14周项目2参考-带姓名的成绩单

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  [项目2-带姓名的成绩单]设score[8]数组中存储8名同学的C++成绩,增加一个数组string name[8]并赋初值,表示同学们的姓名.这两个数组中,每名同学的姓名与成绩的下标要始终保持一致(例如name[i]和score[i]表示同一位同学(下标为i)的姓名和C++成绩,否则会张冠

C++第15周项目3——带姓名的成绩单

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目3-带姓名的成绩单]设score数组中存储同学们的C++成绩,增加一个数组string name[20]并赋初值,表示同学们的姓名.这两个数组中,同学的姓名与成绩的下标保持一致(例如name[1]和score[1]表示同一位同学的姓名和C++成绩).请(1)输出按成绩排序后的同学的名单:(2)输出按同学姓名排序后的成绩单(排序对象是字符串).提示:排序中交换scor

C++第16周项目2——带姓名的成绩单(字符数组版)

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目2-带姓名的成绩单(字符数组版)](参考15周项目3)设score数组中存储同学们的C++成绩,增加一个数组char name[][20]并赋初值,表示同学们的姓名(注意:本周不使用更方便的string类).这两个数组中,同学的姓名与成绩的下标保持一致(例如name[1]和score[1]表示同一位同学的姓名和C++成绩).请(1)输出按成绩排序后的同学的名单:(2

《C语言及程序设计》实践参考——带行号显示文件

返回:贺老师课程教学链接 [项目2 - 带行号显示文件](1)设计一个程序,读取命令行中给出的文件,将其内容在屏幕上显示出来,并在其行首显示行号(行号从1开始): [参考解答] #include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { FILE *in; char line[81]; int row; if (argc<2) //对于命令行中参数个数有要求的程序,常用argc检查参数是否够

《C++语言基础》实践参考—— 链表类

返回:贺老师课程教学链接  项目要求 [项目 - 链表类]动态链表也是程序设计中的一种非常有用的数据结构.可以说,是否能够理解有关操作的原理,决定了你是否有资格称为"科班"出身.在后续的专业基础课中,相关的内容还会从不同的角度,反复地认识,反复地实践.不过,在现阶段多些体验,也是很有必要的了.(1)阅读下面的程序,回顾一下动态链表,阅读程序过程中,请用笔画一画形成链表的过程中指针值的变化. #include <iostream> using namespace std; s

《C++语言基础》实践参考——三角形类的构造函数

返回:贺老师课程教学链接 [项目1-三角形类的构造函数] 设计三角形类,通过增加构造函数,使对象在定义时能够进行初始化,可以由下面的类声明开始,需要自己实现相关的成员函数,以及增加要求的构造函数 class Triangle { public: double perimeter();//计算三角形的周长 double area();//计算并返回三角形的面积 void showMessage(); private: double a,b,c; //三边为私有成员数据 }; void Triang

《C++语言基础》实践参考——考了语文数学的学生

返回:贺老师课程教学链接 [项目4 - 考了语文数学的学生]下面提供了类Stu的数据成员定义,和用于测试的main函数,参考如图的运行结果,完成类的定义,并用多文件形式组织程序 #include<iostream> using namespace std; class Stu { private: string name; //学生姓名 float chinese; //语文成绩 float math; //数学成绩 //接下去写 }; int main() { Stu s1,s2; s1.s

《C++语言基础》实践参考——旱冰场造价

返回:贺老师课程教学链接 [项目1 - 旱冰场造价] 有一个圆形的旱冰场地,场地内抹水泥,造价为每平方米M元,围栏用木条围成,每米造价N元,输入旱冰场半径,用程序计算出其造价. 一级提示: 先定义类,确定其数据成员和成员函数.在这里要定义的旱冰场类,实际我们只关心其面积和周长,根据面积计算场地内抹水泥的造价,根据周长计算围栏的造价.有了类的定义,在main函数中定义该类对象,调用成员函数即可以完成求解.二级提示: 实际上,对于旱冰场,我们只关心它就是一个圆.这就是设计中抓住了本质.于是,设计一个

《C++语言基础》实践参考——指向学生类的指针

返回:贺老师课程教学链接 [项目4-指向学生类的指针] 设计一个学生类Student,数据成员包括学号(num)和成绩(score),成员函数根据需要自行设计(建议配备需要的set.get函数,以及必要的输入或输出,给出的代码中也可以找到需要成员函数的线索).在main函数中,要做到: 建立一个对象数组,通过初始化,设置5个学生的数据,要求: 用指针指向数组首元素,输出第1.3.5个学生的信息: 设计一个函数int max(Student *arr);,用指向对象的指针作函数参数,在max函数中