第九周做業

第九周做業

此次做業屬於哪一個課程 C語言程序設計
此次做業要求在哪 要求
我在這個課程的目標是 學會運用字符排序
這個做業在那個具體方面幫助我實現目標 字符串的計數和排序
參考文獻 c語言教科書和大佬博客

6-1 按等級統計學生成績 (20 分)數組

本題要求實現一個根據學生成績設置其等級,並統計不及格人數的簡單函數。
函數接口定義:app

int set_grade( struct student *p, int n );

其中p是指向學生信息的結構體數組的指針,該結構體的定義爲:函數

struct student{
    int num;
    char name[20];
    int score;
    char grade;
};

n是數組元素個數。學號num、姓名name和成績score均是已經存儲好的。set_grade函數須要根據學生的成績score設置其等級grade。等級設置:85-100爲A,70-84爲B,60-69爲C,0-59爲D。同時,set_grade還須要返回不及格的人數。
裁判測試程序樣例:學習

#include <stdio.h>
#define MAXN 10

struct student{
    int num;
    char name[20];
    int score;
    char grade;
};

int set_grade( struct student *p, int n );

int main()
{   struct student stu[MAXN], *ptr;
    int n, i, count;

    ptr = stu;
    scanf("%d\n", &n);
    for(i = 0; i < n; i++){
       scanf("%d%s%d", &stu[i].num, stu[i].name, &stu[i].score);
    } 
   count = set_grade(ptr, n);
   printf("The count for failed (<60): %d\n", count);
   printf("The grades:\n"); 
   for(i = 0; i < n; i++)
       printf("%d %s %c\n", stu[i].num, stu[i].name, stu[i].grade);
    return 0;
}

/* 你的代碼將被嵌在這裏 */
輸入樣例:
10
31001 annie 85
31002 bonny 75
31003 carol 70
31004 dan 84
31005 susan 90
31006 paul 69
31007 pam 60
31008 apple 50
31009 nancy 100
31010 bob 78
輸出樣例:
The count for failed (<60): 1
The grades:
31001 annie A
31002 bonny B
31003 carol B
31004 dan B
31005 susan A
31006 paul C
31007 pam C
31008 apple D
31009 nancy A
31010 bob B

代碼

int set_grade( struct student *p, int n )
{
    int i,count=0;
    for(i=0;i<n;i++){
    if(p[i].score<60)
    count++;
    if(p[i].score>=85&&p[i].score<=100)
    p[i].grade='A';
    if(p[i].score>=70&&p[i].score<=84)
    p[i].grade='B';
    if(p[i].score>=60&&p[i].score<=69)
    p[i].grade='C';
    if(p[i].score>=0&&p[i].score<=59)
    p[i].grade='D';
    }
    return count;
}

截圖

流程圖

7-1 一幫一 (15 分)測試

「一幫一學習小組」是中小學中常見的學習組織方式,老師把學習成績靠前的學生跟學習成績靠後的學生排在一組。本題就請你編寫程序幫助老師自動完成這個分配工做,即在獲得全班學生的排名後,在當前還沒有分組的學生中,將名次最靠前的學生與名次最靠後的異性學生分爲一組。
輸入格式:
輸入第一行給出正偶數N(≤50),即全班學生的人數。此後N行,按照名次從高到低的順序給出每一個學生的性別(0表明女生,1表明男生)和姓名(不超過8個英文字母的非空字符串),其間以1個空格分隔。這裏保證本班男女比例是1:1,而且沒有並列名次。
輸出格式:
每行輸出一組兩個學生的姓名,其間以1個空格分隔。名次高的學生在前,名次低的學生在後。小組的輸出順序按照前面學生的名次從高到低排列。
輸入樣例:設計

8
0 Amy
1 Tom
1 Bill
0 Cindy
0 Maya
1 John
1 Jack
0 Linda

輸出樣例:3d

Amy Jack
Tom Linda
Bill Maya
Cindy John

代碼

#include<stdio.h>
struct student{
    int love;
    char name [50][8];
    int s;
};
int main (void)
{
    int i,j,n;
    struct student a[50];
    struct student static  b[50];   
    
    scanf("%d",&n);
    for(i=0;i<n;i++)
    scanf("%d %s",&a[i].love,&a[i].name);
    for(i=0;i<n/2;i++){
        for(j=n-1;j>=n/2;j--)
        if(a[i].love!=a[j].love&&b[j].s==0){    
        printf("%s %s\n",a[i].name,a[j].name);
        b[j].s=1; 
        break;
        } 
    }
    return 0;

截圖

流程圖

7-2 考試座位號 (15 分)指針

每一個 PAT 考生在參加考試時都會被分配兩個座位號,一個是試機座位,一個是考試座位。正常狀況下,考生在入場時先獲得試機座位號碼,入座進入試機狀態後,系統會顯示該考生的考試座位號碼,考試時考生須要換到考試座位就座。但有些考生遲到了,試機已經結束,他們只能拿着領到的試機座位號碼求助於你,從後臺查出他們的考試座位號碼。
輸入格式:
輸入第一行給出一個正整數 N(≤1000),隨後 N 行,每行給出一個考生的信息:准考證號 試機座位號 考試座位號。其中准考證號由 16 位數字組成,座位從 1 到 N 編號。輸入保證每一個人的准考證號都不一樣,而且任什麼時候候都不會把兩我的分配到同一個座位上。
考生信息以後,給出一個正整數 M(≤N),隨後一行中給出 M 個待查詢的試機座位號碼,以空格分隔。
輸出格式:
對應每一個須要查詢的試機座位號碼,在一行中輸出對應考生的准考證號和考試座位號碼,中間用 1 個空格分隔。
輸入樣例:code

4
3310120150912233 2 4
3310120150912119 4 1
3310120150912126 1 3
3310120150912002 3 2
2
3 4

輸出樣例:blog

3310120150912002 2
3310120150912119 1

代碼

此題不會

截圖

不會寫,抄了怕扣分

流程圖

學習總結

周/日期 這周所花的時間 代碼行 學到的知識點簡介 目前比較困惑的問題
3/9-3/15 3d 100 文件創建及其文件的利用
3/15-3/18 4d 150 二位數組和暴力解法 最大子數組最優的解法是什麼,如何下降時間複雜度
3/18-3/19 5d 250 選擇排序法 我沒有徹底消化選擇排序法的思路
3/25-3/29 5d 250 冒泡排序不會 指針也不會
3/29-4/5 5d 300 指針的具體用法 函數和指針的結合
4/5-4/12 6d 350 字符數組和指針的結合 綜合運用的方法
4/12-419 6d 400 指針函數和數組函數 拓展函數
4/19-4/27 6d 300 結構 結構的格式

相關文章
相關標籤/搜索