第14周

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

繼續(xù)抄

#include  <stdio.h>
#include  <stdlib.h>
#include  <string.h>
#define   MAX_LEN  10                      /* 字符串最大長(zhǎng)度 */
#define   STU_NUM 30                       /* 最多的學(xué)生人數(shù) */
#define   COURSE_NUM 6                     /* 最多的考試科目數(shù) */
typedef struct student
{
    long num;                       /* 每個(gè)學(xué)生的學(xué)號(hào) */
    char name[MAX_LEN];             /* 每個(gè)學(xué)生的姓名 */
    float score[COURSE_NUM];        /* 每個(gè)學(xué)生COURSE_NUM門功課的成績(jī) */
    float sum;                      /* 每個(gè)學(xué)生的總成績(jī) */
    float aver;                     /* 每個(gè)學(xué)生的平均成績(jī) */
}STU;
int   Menu(void);
void  ReadScore(STU stu[], int n, int m);
void  AverSumofEveryStudent(STU stu[], int n, int m);
void  AverSumofEveryCourse(STU stu[], int n, int m);
void  SortbyScore(STU stu[], int n, int m, int (*compare)(float a, float b));
int   Ascending(float a, float b);
int   Descending(float a, float b);
void  SwapFloat(float* x, float* y);
void  SwapLong(long* x, long* y);
void  SwapChar(char x[], char y[]);
void  AsSortbyNum(STU stu[], int n, int m);
void  SortbyName(STU stu[], int n, int m);
void  SearchbyNum(STU stu[], int n, int m);
void  SearchbyName(STU stu[], int n, int m);
void  StatisticAnalysis(STU stu[], int n, int m);
void  PrintScore(STU stu[], int n, int m);
int main()
{
    int  ch;
    int   n = 0, m = 0;  /* 學(xué)生人數(shù)為n,課程門數(shù)為m */
    STU   stu[STU_NUM];
    printf("Input student number(n<=30):\n", STU_NUM);
    scanf("%d", &n);
    while (1)
    {
        ch = Menu();      /* 顯示菜單,并讀取用戶輸入 */
        switch (ch)
        {
        case 1:
            printf("Input course number(m<=%d):\n", COURSE_NUM);
            scanf("%d", &m);
            printf("Input student's ID, name and score:\n");
            ReadScore(stu, n, m);
            break;
        case 2:
            AverSumofEveryCourse(stu, n, m);
            break;
        case 3:
            AverSumofEveryStudent(stu, n, m);
            break;
        case 4:
            SortbyScore(stu, n, m, Descending);
            printf("Sort in descending order by score:\n");
            PrintScore(stu, n, m);
            break;
        case 5:
            SortbyScore(stu, n, m, Ascending);
            printf("Sort in ascending order by score:\n");
            PrintScore(stu, n, m);
            break;
        case 6:
            AsSortbyNum(stu, n, m);
            printf("Sort in ascending order by number:\n");
            PrintScore(stu, n, m);
            break;
        case 7:
            SortbyName(stu, n, m);
            printf("Sort in dictionary order by name:\n");
            PrintScore(stu, n, m);
            break;
        case 8:
            SearchbyNum(stu, n, m);
            break;
        case 9:
            SearchbyName(stu, n, m);
            break;
        case 10:
            StatisticAnalysis(stu, n, m);
            break;
        case 11:
            PrintScore(stu, n, m);
            break;
        case 0:
            printf("End of program!");
            exit(0);
        default: printf("Input error!\n");
        }

    }

    return 0;

}



/*  函數(shù)功能:顯示菜單并獲得用戶鍵盤輸入的選項(xiàng) */

int Menu(void)
{
    int ret;
    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");
    scanf("%d", &ret);
    return ret;
}



/* 函數(shù)功能:輸入n個(gè)學(xué)生的m門課成績(jī) */

void ReadScore(STU stu[], int n, int m)

{
    int i, r;
    for (i = 0; i < n; i++)
    {
        scanf("%ld%s", &stu[i].num, stu[i].name);
        for (r = 0; r < m; r++)
        {
            scanf("%f", &stu[i].score[r]);
        }
    }
    return;
}



/* 函數(shù)功能:計(jì)算每個(gè)學(xué)生各門課程的總分和平均分 */

void AverSumofEveryStudent(STU stu[], int n, int m)

{
    int i, r;
    for (i = 0; i < n; i++)
    {
        stu[i].sum = 0;
        for (r = 0; r < m; r++)
        {
            stu[i].sum = stu[i].sum + stu[i].score[r];
        }
        stu[i].aver = stu[i].sum / m;
        printf("student %d: sum=%.0f,aver=%.0f\n", i + 1, stu[i].sum, stu[i].aver);
    }
    return;
}



/* 函數(shù)功能:計(jì)算每門課程的總分和平均分 */

void AverSumofEveryCourse(STU stu[], int n, int m)

{
    int i, r;
    float sum;
    for (i = 0; i < m; i++)
    {
        sum = 0;
        for (r = 0; r < n; r++)
        {
            sum = sum + stu[r].score[i];
        }
        printf("course %d:sum=%.0f,aver=%.0f\n", i + 1, sum, sum / n);
    }
    return;
}

/* 函數(shù)功能:按選擇法將數(shù)組sum的元素值排序 */

void SortbyScore(STU stu[], 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)(stu[r].sum, stu[r + 1].sum))
            {
                SwapLong(&stu[r].num, &stu[r + 1].num);
                SwapChar(stu[r].name, stu[r + 1].name);
                for (t = 0; t < m; t++)
                {
                    SwapFloat(&stu[r].score[t], &stu[r + 1].score[t]);
                }
                SwapFloat(&stu[r].sum, &stu[r + 1].sum);
                SwapFloat(&stu[r].aver, &stu[r + 1].aver);
            }
        }
    }
    return;
}



/* 使數(shù)據(jù)按升序排序 */

int Ascending(float a, float b)

{
    if (a > b)
        return 1;
    return 0;
}



/* 使數(shù)據(jù)按降序排序 */

int Descending(float a, float b)

{
    if (a < b)
        return 1;
    return 0;
}



/* 交換兩個(gè)單精度浮點(diǎn)型數(shù)據(jù) */

void  SwapFloat(float* x, float* y)

{
    float term;
    term = *x;
    *x = *y;
    *y = term;
    return;
}



/* 交換兩個(gè)長(zhǎng)整型數(shù)據(jù) */

void  SwapLong(long* x, long* y)

{
    long term;
    term = *x;
    *x = *y;
    *y = term;
    return;
}



/* 交換兩個(gè)字符串 */

void  SwapChar(char x[], char y[])

{
    char term[MAX_LEN];
    strcpy(term, x);
    strcpy(x, y);
    strcpy(y, term);
    return;
}



/* 函數(shù)功能:按選擇法將數(shù)組num的元素值按從低到高排序 */

void AsSortbyNum(STU stu[], int n, int m)

{
    int i, r, t;
    for (i = 0; i < n; i++)
    {
        for (r = 0; r < n - 1; r++)
        {
            if (stu[r].num > stu[r + 1].num)
            {
                SwapLong(&stu[r].num, &stu[r + 1].num);
                SwapChar(stu[r].name, stu[r + 1].name);
                for (t = 0; t < m; t++)
                {
                    SwapFloat(&stu[r].score[t], &stu[r + 1].score[t]);
                }
                SwapFloat(&stu[r].sum, &stu[r + 1].sum);
                SwapFloat(&stu[r].aver, &stu[r + 1].aver);
            }
        }
    }
    return;
}



/* 函數(shù)功能:交換法實(shí)現(xiàn)字符串按字典順序排序 */

void SortbyName(STU stu[], int n, int m)

{
    int i, r, t;
    for (i = 0; i < n; i++)
    {
        for (r = 0; r < n - 1; r++)
        {
            if (strcmp(stu[r].name, stu[r + 1].name) > 0)
            {
                SwapLong(&stu[r].num, &stu[r + 1].num);
                SwapChar(stu[r].name, stu[r + 1].name);
                for (t = 0; t < m; t++)
                {
                    SwapFloat(&stu[r].score[t], &stu[r + 1].score[t]);
                }
                SwapFloat(&stu[r].sum, &stu[r + 1].sum);
                SwapFloat(&stu[r].aver, &stu[r + 1].aver);
            }
        }
    }
    return;
}



/* 函數(shù)功能:按學(xué)號(hào)查找學(xué)生成績(jī)并顯示查找結(jié)果 */

void SearchbyNum(STU stu[], int n, int m)

{
    long term;
    int i, r;
    printf("Input the number you want to search:\n");
    scanf("%ld", &term);
    for (i = 0; i < n; i++)
    {
        if (term % 1000 == stu[i].num % 1000)
        {
            printf("%ld\t%s\t", stu[i].num, stu[i].name);
            for (r = 0; r < m; r++)
            {
                printf("%.0f\t", stu[i].score[r]);
            }
            printf("%.0f\t%.0f\n", stu[i].sum, stu[i].aver);
            return;
        }
    }
    printf("Not found!\n");
    return;
}



/* 函數(shù)功能:按姓名查找學(xué)生成績(jī)并顯示查找結(jié)果 */

void SearchbyName(STU stu[], int n, int m)

{
    int i, r;
    char ch[MAX_LEN];
    printf("Input the name you want to search:\n");
    scanf("%s", ch);
    for (i = 0; i < n; i++)
    {
        if (strcmp(ch, stu[i].name) == 0)
        {
            printf("%ld\t%s\t", stu[i].num, stu[i].name);
            for (r = 0; r < m; r++)
            {
                printf("%.0f\t", stu[i].score[r]);
            }
            printf("%.0f\t%.0f\n", stu[i].sum, stu[i].aver);
            return;
        }
    }
    printf("Not found!\n");
    return;
}

/* 函數(shù)功能:統(tǒng)計(jì)各分?jǐn)?shù)段的學(xué)生人數(shù)及所占的百分比 */

void StatisticAnalysis(STU stu[], int n, int m)

{
    int i, r;
    int x[COURSE_NUM][COURSE_NUM];
    memset(x, 0, sizeof(int) * COURSE_NUM * COURSE_NUM);
    for (i = 0; i < m; i++)
    {
        for (r = 0; r < n; r++)
        {
            if (stu[r].score[i] < 60)
            {
                x[i][0]++;
            }
            else if (stu[r].score[i] < 70)
            {
                x[i][1]++;
            }
            else if (stu[r].score[i] < 80)
            {
                x[i][2]++;
            }
            else if (stu[r].score[i] < 90)
            {
                x[i][3]++;
            }
            else if (stu[r].score[i] < 100)
            {
                x[i][4]++;
            }
            else
            {
                x[i][5]++;
            }
        }
    }
    for (i = 0; i < m; i++)
    {
        printf("For course %d:\n", i + 1);
        printf("<60\t%d\t%.2f%%\n", x[i][0], (float)x[i][0] * 100 / n);
        printf("%d-%d\t%d\t%.2f%%\n", 60, 69, x[i][1], (float)x[i][1] * 100 / n);
        printf("%d-%d\t%d\t%.2f%%\n", 70, 79, x[i][2], (float)x[i][2] * 100 / n);
        printf("%d-%d\t%d\t%.2f%%\n", 80, 89, x[i][3], (float)x[i][3] * 100 / n);
        printf("%d-%d\t%d\t%.2f%%\n", 90, 99, x[i][4], (float)x[i][4] * 100 / n);
        printf("%d\t%d\t%.2f%%\n", 100, x[i][5], (float)x[i][5] * 100 / n);
    }
    return;
}



/* 函數(shù)功能: 打印學(xué)生成績(jī) */

void PrintScore(STU stu[], int n, int m)

{
    int i, r;
    for (i = 0; i < n; i++)
    {
        printf("%ld\t%s\t", stu[i].num, stu[i].name);
        for (r = 0; r < m; r++)
        {
            printf("%.0f\t", stu[i].score[r]);
        }
        printf("%.0f\t%.0f\n", stu[i].sum, stu[i].aver);
    }
    return;
}

2字符串中的字符排序

#include<stdio.h>
#include<string.h>

int main()
{
    char a[20];
    char temp;
    printf("Input a string:\n");
    gets(a);
    for (int i=0; i<strlen(a)-1; i++)
        for (int j = 0; j < strlen(a) - 1 - i; j++)
        {
            if (strncmp(a + j, a + 1 + j, 1) > 0)
            {
                temp = a[j]; a[j] = a[j+1]; a[j+1] = temp;
            }
        }
    puts(a);
    return 0;
}

3純數(shù)字字符串檢驗(yàn)

#include<stdio.h>
#include<string.h>

int main()
{
    char a[20];
    char temp;
    printf("Please input a string:\n");
    gets(a);
    for (int i=0; i<strlen(a); i++)
        if (a[i] < '0' || a[i]>'9')
        {
            printf("The string is not digit string.\n");
            return 0;
        }
    printf("The string is digit string.\n");
    return 0;
}

4孿生素?cái)?shù)

#include<stdio.h>
#include<string.h>
#include<math.h>

int Isprime(int a);

int main()
{
    int c, d;
    int count = 0;
    printf("please input c,d(c>2):\n");
    scanf("%d,%d", &c, &d);
    for (int i=c; i<=d; i++)
        if (IsPrime(i) && IsPrime(i + 2))
        {
            printf("(%d,%d)\n", i, i + 2);
            count++;
        }
    printf("total=%d\n", count);
    return 0;
}

int IsPrime(int a)
{
    if (a < 2)
        return 0;
    for (int i = 2; i <= sqrt(a); i++)
        if (a % i == 0)
            return 0;
    return 1;
}

5求解不等式

#include<stdio.h>
#include<string.h>
#include<math.h>



int main()
{
    double s=0;
    double n;
    int i;
    printf("Input n:\n");
    scanf("%lf", &n);
    for (i = 1; s < n; i++)
    {
        s = 0;
        for (int j = i; j <= 2 * i; j++)
            s += sqrt(j);
    }
    printf("Result:m>=%d\ns=%.2lf\n", i-1, s);

    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)容

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