第13周

1學(xué)生成績(jī)管理系統(tǒng)V4.0

抄的

#include <stdio.h>
#include <string.h>
#define   MAX_LEN  10                       /* 字符串最大長(zhǎng)度 */
#define   STU_NUM 30                       /* 最多的學(xué)生人數(shù) */
#define   COURSE_NUM 6                     /* 最多的考試科目數(shù) */
int   Menu(void);
void  ReadScore(long num[], char name[][MAX_LEN], float score[][COURSE_NUM], int n, int m);
void AverSumofEveryCourse(float score[][COURSE_NUM], int n, int m);
void AverSumofEveryStudent(float score[][COURSE_NUM], int n, int m, float  sum[STU_NUM], float aver[STU_NUM]);
int   Descending(float a, float b);
int   Ascending(float a, float b);
void  SwapFloat(float* x, float* y);
void  SwapLong(long* x, long* y);
void  SwapChar(char x[], char y[]);
void  SortbyScore(long num[], char name[][MAX_LEN], float score[][COURSE_NUM], float  sum[], float aver[], int n, int m, int (*compare)(float a, float b));
void  AsSortbyNum(long num[], char name[][MAX_LEN], float score[][COURSE_NUM], float  sum[], float aver[], int n, int m);
void  SortbyName(long num[], char name[][MAX_LEN], float score[][COURSE_NUM], float  sum[], float aver[], int n, int m);
void  SearchbyNum(long num[], char name[][MAX_LEN], float score[][COURSE_NUM], float  sum[], float aver[], int n, int m);
void  SearchbyName(long num[], char name[][MAX_LEN], float score[][COURSE_NUM], float  sum[], float aver[], int n, int m);
void  StatisticAnalysis(float score[][COURSE_NUM], int n, int m);
void  PrintScore(long num[], char name[][MAX_LEN], float score[][COURSE_NUM], float  sum[], float aver[], int n, int m);
int main()
{
    int n, p, m;
    long num[STU_NUM];
    char name[STU_NUM][MAX_LEN];
    float score[STU_NUM][COURSE_NUM], sum[STU_NUM], aver[STU_NUM];
    printf("Input student number(n<30):\n");
    scanf("%d", &n);
    Menu();
    while (scanf("%d", &p) != EOF && p != 0)
    {
        switch (p)
        {
        case 1:printf("Input course number(m<=%d):\n", n);
            scanf("%d", &m);
            printf("Input student's ID, name and score:\n");
            ReadScore(num, name, score, n, m);
            break;
        case 2:AverSumofEveryCourse(score, n, m);
            break;
        case 3:AverSumofEveryStudent(score, n, m, sum, aver);
            break;
        case 4:printf("Sort in descending order by score:\n");
            SortbyScore(num, name, score, sum, aver, n, m, Descending);
            break;
        case 5:printf("Sort in ascending order by score:\n");
            SortbyScore(num, name, score, sum, aver, n, m, Ascending);
            break;
        case 6:printf("Sort in ascending order by number:\n");
            AsSortbyNum(num, name, score, sum, aver, n, m);
            break;
        case 7:printf("Sort in dictionary order by name:\n");
            SortbyName(num, name, score, sum, aver, n, m);
            break;
        case 8:printf("Input the number you want to search:\n");
            SearchbyNum(num, name, score, sum, aver, n, m);
            break;
        case 9:printf("Input the name you want to search:\n");
            SearchbyName(num, name, score, sum, aver, n, m);
            break;
        case 10:StatisticAnalysis(score, n, m);
            break;
        case 11:PrintScore(num, name, score, sum, aver, n, m);
            break;
        default:printf("Input error!\n");
        }
        Menu();
    }
    printf("End of program!");
    return 0;
}
int   Menu(void)
{
    printf("Management for Students' scores\n"
        "1.Input record\n"
        "2.Caculate total and average score of every course\n"
        "3.Caculate total and average score of every student\n"
        "4.Sort in descending order by score\n"
        "5.Sort in ascending order by score\n"
        "6.Sort in ascending order by number\n"
        "7.Sort in dictionary order by name\n"
        "8.Search by number\n"
        "9.Search by name\n"
        "10.Statistic analysis\n"
        "11.List record\n"
        "0.Exit\n"
        "Please Input your choice:\n");
    return 0;
}
void  ReadScore(long num[], char name[][MAX_LEN], float score[][COURSE_NUM], int n, int m)
{
    int i, r;
    for (i = 0; i < n; i++)
    {
        scanf("%ld%s", &num[i], name[i]);
        for (r = 0; r < m; r++)
        {
            scanf("%f", &score[i][r]);
        }
    }
    return;
}
void AverSumofEveryCourse(float score[][COURSE_NUM], int n, int m)
{
    int i, r;
    float sum = 0;
    for (i = 0; i < m; i++)
    {
        sum = 0;
        for (r = 0; r < n; r++)
        {
            sum = sum + score[r][i];
        }
        printf("course %d:sum=%.0f,aver=%.0f\n", i + 1, sum, sum / (float)n);
    }
    return;
}
void AverSumofEveryStudent(float score[][COURSE_NUM], int n, int m, float  sum[STU_NUM], float aver[STU_NUM])
{
    int i, r;
    memset(sum, 0, sizeof(float) * STU_NUM);
    for (i = 0; i < n; i++)
    {
        for (r = 0; r < m; r++)
        {
            sum[i] = sum[i] + score[i][r];
        }
        aver[i] = sum[i] / (float)m;
    }
    for (i = 0; i < n; i++)
    {
        printf("student %d:sum=%.0f,aver=%.0f\n", i + 1, sum[i], aver[i]);
    }
    return;
}
void  SwapFloat(float* x, float* y)
{
    float term;
    term = *x;
    *x = *y;
    *y = term;
    return;
}
void  SwapLong(long* x, long* y)
{
    long term;
    term = *x;
    *x = *y;
    *y = term;
    return;
}
void  SwapChar(char x[], char y[])
{
    char c[MAX_LEN];
    strcpy(c, x);
    strcpy(x, y);
    strcpy(y, c);
    return;
}
int   Descending(float a, float b)
{
    if (a < b)
        return 1;
    return 0;
}
int   Ascending(float a, float b)
{
    if (a > b)
        return 1;
    return 0;
}
void  SortbyScore(long num[], char name[][MAX_LEN], float score[][COURSE_NUM], float  sum[], float aver[], int n, int m, int (*compare)(float a, float b))
{
    int i, r, t;
    for (i = 0; i < n; i++)
    {
        for (r = 0; r < n - 1; r++)
        {
            if ((*compare)(sum[r], sum[r + 1]))
            {
                SwapLong(&num[r], &num[r + 1]);
                SwapChar(name[r], name[r + 1]);
                for (t = 0; t < m; t++)
                {
                    SwapFloat(&score[r][t], &score[r + 1][t]);
                }
                SwapFloat(&sum[r], &sum[r + 1]);
                SwapFloat(&aver[r], &aver[r + 1]);
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        printf("%ld\t%s\t", num[i], name[i]);
        for (r = 0; r < m; r++)
        {
            printf("%.0f\t", score[i][r]);
        }
        printf("%.0f\t%.0f\n", sum[i], aver[i]);
    }
    return;
}
void  AsSortbyNum(long num[], char name[][MAX_LEN], float score[][COURSE_NUM], float  sum[], float aver[], int n, int m)
{
    int i, r, t;
    for (i = 0; i < n; i++)
    {
        for (r = 0; r < n - 1; r++)
        {
            if (num[r] > num[r + 1])
            {
                SwapLong(&num[r], &num[r + 1]);
                SwapChar(name[r], name[r + 1]);
                for (t = 0; t < m; t++)
                {
                    SwapFloat(&score[r][t], &score[r + 1][t]);
                }
                SwapFloat(&sum[r], &sum[r + 1]);
                SwapFloat(&aver[r], &aver[r + 1]);
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        printf("%ld\t%s\t", num[i], name[i]);
        for (r = 0; r < m; r++)
        {
            printf("%.0f\t", score[i][r]);
        }
        printf("%.0f\t%.0f\n", sum[i], aver[i]);
    }
    return;
}
void  SortbyName(long num[], char name[][MAX_LEN], float score[][COURSE_NUM], float  sum[], float aver[], int n, int m)
{
    int i, r, t;
    for (i = 0; i < n; i++)
    {
        for (r = 0; r < n - 1; r++)
        {
            if (strcmp(name[r], name[r + 1]) > 0)
            {
                SwapLong(&num[r], &num[r + 1]);
                SwapChar(name[r], name[r + 1]);
                for (t = 0; t < m; t++)
                {
                    SwapFloat(&score[r][t], &score[r + 1][t]);
                }
                SwapFloat(&sum[r], &sum[r + 1]);
                SwapFloat(&aver[r], &aver[r + 1]);
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        printf("%ld\t%s\t", num[i], name[i]);
        for (r = 0; r < m; r++)
        {
            printf("%.0f\t", score[i][r]);
        }
        printf("%.0f\t%.0f\n", sum[i], aver[i]);
    }
    return;
}
void  SearchbyNum(long num[], char name[][MAX_LEN], float score[][COURSE_NUM], float  sum[], float aver[], int n, int m)
{
    int i, r;
    long number;
    scanf("%ld", &number);
    for (i = 0; i < n; i++)
    {
        if (number % 1000 == num[i] % 1000)
        {
            printf("%ld\t%s\t", num[i], name[i]);
            for (r = 0; r < m; r++)
            {
                printf("%.0f\t", score[i][r]);
            }
            printf("%.0f\t%.0f\n", sum[i], aver[i]);
            return;
        }
    }
    printf("Not found!\n");
    return;
}
void  SearchbyName(long num[], char name[][MAX_LEN], float score[][COURSE_NUM], float  sum[], float aver[], int n, int m)
{
    int i, r;
    char ch[MAX_LEN];
    scanf("%s", ch);
    for (i = 0; i < n; i++)
    {
        if (strcmp(ch, name[i]) == 0)
        {
            printf("%ld\t%s\t", num[i], name[i]);
            for (r = 0; r < m; r++)
            {
                printf("%.0f\t", score[i][r]);
            }
            printf("%.0f\t%.0f\n", sum[i], aver[i]);
            return;
        }
    }
    printf("Not found!\n");
    return;
}
void  StatisticAnalysis(float score[][COURSE_NUM], int n, int m)
{
    int i, r;
    int x[COURSE_NUM][6];
    memset(x, 0, sizeof(x));
    for (i = 0; i < n; i++)
    {
        for (r = 0; r < m; r++)
        {
            if (score[i][r] < 60)
            {
                x[r][0]++;
            }
            else if (score[i][r] < 70)
            {
                x[r][1]++;
            }
            else if (score[i][r] < 80)
            {
                x[r][2]++;
            }
            else if (score[i][r] < 90)
            {
                x[r][3]++;
            }
            else if (score[i][r] < 100)
            {
                x[r][4]++;
            }
            else
            {
                x[r][5]++;
            }
        }
    }
    for (r = 0; r < m; r++)
    {
        printf("For course %d:\n", r + 1);
        printf("<60\t%d\t%.2f%%\n", x[r][0], (float)x[r][0] * 100 / (float)n);
        printf("%d-%d\t%d\t%.2f%%\n", 60, 69, x[r][1], (float)x[r][1] * 100 / (float)n);
        printf("%d-%d\t%d\t%.2f%%\n", 70, 79, x[r][2], (float)x[r][2] * 100 / (float)n);
        printf("%d-%d\t%d\t%.2f%%\n", 80, 89, x[r][3], (float)x[r][3] * 100 / (float)n);
        printf("%d-%d\t%d\t%.2f%%\n", 90, 99, x[r][4], (float)x[r][4] * 100 / (float)n);
        printf("%d\t%d\t%.2f%%\n", 100, x[r][5], (float)x[r][5] * 100 / (float)n);
    }
    return;
}
void  PrintScore(long num[], char name[][MAX_LEN], float score[][COURSE_NUM], float  sum[], float aver[], int n, int m)
{
    int i, r, t;
    for (i = 0; i < n; i++)
    {
        for (r = 0; r < n - 1; r++)
        {
            if (strcmp(name[r], name[r + 1]) > 0)
            {
                SwapLong(&num[r], &num[r + 1]);
                SwapChar(name[r], name[r + 1]);
                for (t = 0; t < m; t++)
                {
                    SwapFloat(&score[r][t], &score[r + 1][t]);
                }
                SwapFloat(&sum[r], &sum[r + 1]);
                SwapFloat(&aver[r], &aver[r + 1]);
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        printf("%ld\t%s\t", num[i], name[i]);
        for (r = 0; r < m; r++)
        {
            printf("%.0f\t", score[i][r]);
        }
        printf("%.0f\t%.0f\n", sum[i], aver[i]);
    }
    return;
}

2尋找最高分成績(jī)的學(xué)生

#include  <stdio.h>
#include  <stdlib.h>
void InputScore(int* p, int m, int n);
int  FindMax(int* p, int m, int n, int* pRow, int* pCol);
int main()
{
    int* pScore, m, n, maxScore, row, col;
    printf("Input array size m,n:\n");
    scanf("%d,%d", &m, &n);
    pScore = (int *)malloc(m*n*sizeof(int)); /* 申請(qǐng)動(dòng)態(tài)內(nèi)存 */

    if (pScore == NULL)
    {
        printf("No enough memory!\n");
        exit(0);
    }
    InputScore(pScore, m, n);
    maxScore = FindMax(pScore, m, n, &row, &col);

    printf("maxScore = %d, class = %d, number = %d\n", maxScore, row + 1, col + 1);
    free(pScore);                                      /* 釋放動(dòng)態(tài)內(nèi)存 */
    return 0;
}

/* 函數(shù)功能:輸入m行n列二維數(shù)組的值 */
void InputScore(int *pScore, int m, int n)
{
    int i, j;
    printf("Input %d*%d array:\n", m, n);
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            scanf("%d", &pScore[i * n + j]);
        }
    }
}
/*  函數(shù)功能:計(jì)算任意m行n列二維數(shù)組中元素的最大值,并指出其所在行列下標(biāo)值 */
int  FindMax(int* p, int m, int n, int* pRow, int* pCol)
{
    int  i, j, max = p[0];
    *pRow = 0;

    *pCol = 0;

    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            if (p[i * n + j] > max)
            {
                max = p[i * n + j];
                *pRow = i;       /*記錄行下標(biāo)*/
                *pCol = j;             /*記錄列下標(biāo)*/
            }
        }
    }
    return max;
}

3程序改錯(cuò)

#include  <stdio.h>
#define STUD   30      /* 最多可能的學(xué)生人數(shù) */
#define COURSE 5       /* 最多可能的考試科目數(shù) */
void  Total(int* pScore, int sum[], float aver[], int m, int n);
void  Print(int* pScore, int sum[], float aver[], int m, int n);
int main()
{
    int     i, j, m, n, score[STUD][COURSE], sum[STUD];
    float   aver[STUD];
    printf("How many students?\n");
    scanf("%d", &m);
    printf("How many courses?\n");
    scanf("%d", &n);
    printf("Input scores:\n");

    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            scanf("%d", &score[i][j]);
        }
    }

    Total(score, sum, aver, m, n);
    Print(score, sum, aver, m, n);
    return 0;
}
void  Total(int* pScore, int sum[], float aver[], int m, int n)
{
    int  i, j;
    for (i = 0; i < m; i++)
    {
        sum[i] = 0;
        for (j = 0; j < n; j++)
        {
            sum[i] +=  pScore[i * COURSE + j];
        }
        aver[i] = (float)sum[i] / n;
    }
}
void  Print(int* pScore, int sum[], float aver[], int m, int n)
{
    int  i, j;
    printf("Result:\n");
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            printf("%4d", pScore[i * COURSE + j]);
        }
        printf("%5d%6.1f\n", sum[i], aver[i]);
    }
}

4矩陣轉(zhuǎn)置

#include <stdio.h>
#define M 10
#define N 10
void Transpose(int* a, int* at, int m, int n);
void InputMatrix(int* a, int m, int n);
void PrintMatrix(int* at, int n, int m);
int main()
{
    int s[M][N], st[N][M], m, n;
    printf("Input m, n:\n");
    scanf("%d,%d", &m, &n);
    InputMatrix(s, m, n);
    Transpose(s, st, m, n);
    printf("The transposed matrix is:\n");
    PrintMatrix(*st, n, m);
    return 0;
}
/* 函數(shù)功能:計(jì)算m*n矩陣a的轉(zhuǎn)置矩陣at */
void Transpose(int* a, int* at, int m, int n)
{
    int i, j;
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            *(at+j*M+i) = *(a+i*N+j);
        }
    }
}
/* 函數(shù)功能:輸入m*n矩陣a的值 */
void InputMatrix(int* a, int m, int n)
{
    int i, j;
    printf("Input %d*%d matrix:\n", m, n);
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            scanf("%d", a+i*N+j);
        }
    }
}
/* 函數(shù)功能:輸出n*m矩陣at的值 */
void PrintMatrix(int* at, int n, int m)
{
    int i, j;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
        {
            printf("%-5d", *(at+i*M+j));
        }
        printf("\n");
    }
}

5在升序排序的數(shù)組中插入一個(gè)元素

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

int main()
{
    int n;
    int insert;
    int* p;
    printf("Input array size:\n");
    scanf("%d", &n);
    p = (int*)malloc((n+1) * sizeof(int));
    if (p != NULL)
    {
        printf("Input array:\n");
        for (int i = 0; i < n; i++)
            scanf("%d", p + i);
    }
    else
        return 0;
    printf("Input x:\n");
    scanf("%d", &insert);
    for (int i = n-1; i >= 0; i--)
    {
        if (*(p + i) > insert)
            *(p + i + 1) = *(p + i);
        else
        {
            *(p + i + 1) = insert;
            break;
        }   
    }
    printf("After insert %d:\n", insert);
    for (int i = 0; i < n + 1; i++)
        printf("%4d", *(p+i));
    free(p);
    return 0;
}

6計(jì)算平均數(shù)、中位數(shù)和眾數(shù)

#include<stdio.h>

int main()
{
    int datas[40];
    int temp, sum=0;
    int maxmode = 1;
    int count=0;
    int mode_i;
    printf("Input the feedbacks of 40 students:\n");
    for (int i = 0; i < 40; i++)
    {
        scanf("%d", datas + i);
    }
    for (int i = 0; i < 39; i++)
    {
        for (int j = 0; j < 39 - i; j++)
        {
            if (datas[j] > datas[j + 1])
            {
                temp = datas[j]; datas[j] = datas[j + 1]; datas[j + 1] = temp;
            }
        }
    }
    sum = datas[0];
    for (int i = 1; i < 40; i++)
    {
        sum += datas[i];
        if (datas[i] == datas[i - 1])
        {
            count++;
            if (count > maxmode)
            {
                mode_i = i;
                maxmode = count;
            }
        }
        else
            count = 0;
    }
    printf("Mean value=%d\n", sum / 40);
    printf("Median value=%d\n", (datas[19] + datas[20]) / 2);
    printf("Mode value=%d\n", datas[mode_i]);

    return 0;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 媽媽:今天怎么那么晚才打電話過(guò)來(lái)呢?講講你這一周的學(xué)習(xí)情況吧! 穗幫:剛才在抄單,上周英語(yǔ)學(xué)習(xí)目標(biāo)沒(méi)有完成,自己定...
    理財(cái)是一種思維閱讀 225評(píng)論 0 0
  • ? 作者:托馬斯·戈登 ? 本書講了教師如何處理與學(xué)生之間的關(guān)系。其中包括兩個(gè)大的部分,一是當(dāng)學(xué)生自身?yè)碛袉?wèn)題時(shí)該...
    FrankCoach閱讀 2,673評(píng)論 0 2
  • 如果你持續(xù)尋找更好的辦法來(lái)改變目前的境況,就有機(jī)會(huì)找到解決方法。如果你停止尋找,那么你就肯定一無(wú)所獲。 這里有4個(gè)...
    北極光之美閱讀 177評(píng)論 0 0
  • 6.1(6月第一次打卡) 兜: 背古詩(shī)一首,讀竇摘6.1,新概念三課一遍,小散文一單元,神奇校車四頁(yè) 馭: 三字經(jīng)...
    江小米米閱讀 167評(píng)論 0 0
  • 1、通常,擁塞避免和慢啟動(dòng)配合使用。 慢啟動(dòng):cwnd=1,設(shè)置ss,cwnd增長(zhǎng)為指數(shù)模式;當(dāng)cwnd達(dá)到ss時(shí)...
    ArionBlog閱讀 575評(píng)論 0 0

友情鏈接更多精彩內(nèi)容