程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 第14周項目2-帶姓名的成績單

第14周項目2-帶姓名的成績單

編輯:C++入門知識

第14周項目2-帶姓名的成績單


/*   
* Copyright (c) 2014, 煙台大學計算機學院   
* All rights reserved.   
* 文件名稱:test.cpp   
* 作    者:劉暢   
* 完成日期:2014 年 11  月  26  日   
* 版 本 號:v1.0   
*   
* 問題描述:設score[8]數組中存儲8名同學的C++成績,增加一個數組string name[8]並賦初值,表示同學們的姓名。這兩個數組中,每名同學的姓名與成績的下標要始終保持一致;
* 輸入描述:等待運行;   
* 程序輸出:輸出按成績排序後的同學的名單和按同學姓名排序後的成績單。

(1)

#include 
#include 
using namespace std;
const int num = 8;
int main()
{
    int i, j, t;
    string temp;
    string name[num] =
    { "zhao", "qian", "sun", "li", "zhou", "wu", "zheng", "wang" };
    double score[num] = { 79, 84, 65, 89, 60, 92, 78, 56 };
    cout << "按成績排序並輸出結果:" << endl;
    for (j = 1; j < num; ++j)
        for (i = 0; i < num-j; ++i)
        {
            if (score[i] < score[i + 1])
            {
                t = score[i];
                score[i] = score[i + 1];
                score[i + 1] = t;
                temp = name[i];
                name[i] = name[i + 1];
                name[i + 1] = temp;
            }
        }
    for (i=0; iname[i+1])
            {
                temp = name[i];
                name[i] = name[i + 1];
                name[i + 1] = temp;
                t = score[i];
                score[i] = score[i + 1];
                score[i + 1] = t;
            }
        }
    for (i=0; i

(2)

#include 
#include 
using namespace std;
const int num = 8;
int main()
{
    int i, j, t;
    char temp[20];
    char name[num][20] = { "zhao", "qian", "sun", "li", "zhou", "wu", "zheng", "wang" };
    double score[num] = { 79, 84, 65, 89, 60, 92, 78, 56 };
    cout << "按成績排序並輸出結果:" << endl;
    for (j = 1; j < num; ++j)
        for (i = 0; i < num-j; ++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);
            }
        }
    for (i=0; i0)
            {
                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;
            }
        }
    for (i=0; i

運行結果:


知識點總結:

注意冒泡排序的用法,還有運用string的條件。

學習心得:

越來越受打擊了,上午寫出來後,就是開始運行後接著就停止運行。一直以為是temp那裡的問題,發到群裡一問,大神親自跑寢室來給我解決,原來是冒泡排序for語句中i的范圍沒處理好;感謝童宇童鞋!!! 後來我又在博客下面的推薦看到一位學長做的類似的題目,於是有了第二種,當時居然沒想到,今天剛學過使用字符串處理函數對字符串進行操作。。。淚奔啊 不過可能是編譯器不同吧,codeblocks運用這種方法的時候需要把頭文件string改為string.h,又學到了很多啊,得收收心好好加油了。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved