C++笔记:使用字符数组和实型数组分别存储学生姓名和成绩,并使用冒泡排序法排序

文章目录

  • 升序输出
  • 降序输出

升序输出

/*
使用"字符数组"和"实型数组"分别存储学生姓名和成绩,并通过对学生成绩的排序(由小到大),按照名次输出字符数组中对应的学生姓名
*/
#include
using namespace std;
#include
#include
int main(){
     
 SetConsoleOutputCP(65001);
 char name[10][10];//存储十个学生的姓名,每个学生姓名不超过10个字符
 strcpy(name[0],"Mary");//strcpy函数实质上是用字符数组2中的字符串覆盖字符数组1中内容,此处用于初始化
 strcpy(name[1],"Jam");
 strcpy(name[2],"Jack");
 strcpy(name[3],"Jose");
 strcpy(name[4],"Hery");
 strcpy(name[5],"Mark");
 strcpy(name[6],"Dobbs");
 strcpy(name[7],"Steven");
 strcpy(name[8],"Stanly");
 strcpy(name[9],"John");
 cout<<"开始输入每个学生的分数:"<<endl;
 int score[10][2];//存储十个学生的分数
 for(int i=0;i<10;i++){
     
  score[i][0]=i;//第一列为编号
  cout<<name[i]<<endl;
  cin>>score[i][1];//第二列为用户输入的分数
 }
 for(int i=1;i<10;i++){
     //冒泡排序循环(由小到大),难点
  for(int j=9;j>=i;j--){
     //循环第一次,确定最小的数;循环第二次,确定第二小的数;......
   if(score[j][1]<score[j-1][1]){
     //从score二维数组最后一个下标开始,如果二维数组score分数列的前一个元素大于后一个元素,则交换
    int scoretmp=score[j-1][1];//存放score二维数组分数列(较大的)
    int idtmp=score[j-1][0];//存放score二维数组编号列(较大的)
    score[j-1][1]=score[j][1];//将较小的分数列赋值给前一个数组元素
    score[j-1][0]=score[j][0];//将较小的编号列赋值给前一个数组元素
    score[j][1]=scoretmp;
    score[j][0]=idtmp;
   }
  }
 }
 for(int j=0;j<10;j++){
     //输出循环
  cout<<name[score[j][0]];
  cout << ": "<<score[j][1] << endl;
 }
 return 0;
}

输出:
C++笔记:使用字符数组和实型数组分别存储学生姓名和成绩,并使用冒泡排序法排序_第1张图片

降序输出

/*
使用"字符数组"和"实型数组"分别存储学生姓名和成绩,并通过对学生成绩的排序(由大到小),按照名次输出字符数组中对应的学生姓名
*/
#include
using namespace std;
#include
#include
int main(){
     
 SetConsoleOutputCP(65001);
 char name[10][10];//存储十个学生的姓名,每个学生姓名不超过10个字符
 strcpy(name[0],"Mary");//strcpy函数实质上是用字符数组2中的字符串覆盖字符数组1中内容
 strcpy(name[1],"Jam");
 strcpy(name[2],"Jack");
 strcpy(name[3],"Jose");
 strcpy(name[4],"Hery");
 strcpy(name[5],"Mark");
 strcpy(name[6],"Dobbs");
 strcpy(name[7],"Steven");
 strcpy(name[8],"Stanly");
 strcpy(name[9],"John");
 cout<<"开始输入每个学生的分数:"<<endl;
 int score[10][2];//存储十个学生的分数
 for(int i=0;i<10;i++){
     
  score[i][0]=i;//第一列为编号
  cout<<name[i]<<endl;
  cin>>score[i][1];//第二列为用户输入的分数
 }
 for(int i=1;i<10;i++){
     //冒泡排序循环(由大到小),难点
  for(int j=9;j>=i;j--){
     //循环从数组地址最后开始,循环第一次,确定最小的数;循环第二次,确定第二小的数;......
   if(score[j][1]>score[j-1][1]){
     //从score二维数组最后一个下标开始,如果二维数组score分数列的后一个元素大于前一个元素,则交换
    int scoretmp=score[j][1];//存放score二维数组分数列(较大的)
    int idtmp=score[j][0];//存放score二维数组编号列(较大的)
    score[j][1]=score[j-1][1];//将较小的分数列赋值给后一个数组元素
    score[j][0]=score[j-1][0];//将较小的编号列赋值给后一个数组元素
    score[j-1][1]=scoretmp;//将较大的分数列赋值给前一个数组元素
    score[j-1][0]=idtmp;将较大的编号列赋值给前一个数组元素
   }
  }
 }
 for(int j=0;j<10;j++){
     //输出循环
  cout<<name[score[j][0]];
  cout<<": "<<score[j][1]<<endl;
 }
 return 0;
}

输出:
C++笔记:使用字符数组和实型数组分别存储学生姓名和成绩,并使用冒泡排序法排序_第2张图片

你可能感兴趣的:(C++,C++)