• 集美大学 - 2840 - 实验9


    实验9-1-结构 计算职工工资

    给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写程序顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。

    输入格式:
    输入在一行中给出正整数N。随后N行,每行给出一位职员的信息,格式为“姓名 基本工资 浮动工资 支出”,中间以空格分隔。其中“姓名”为长度小于10的不包含空白字符的非空字符串,其他输入、输出保证在单精度范围内。

    输出格式:
    按照输入顺序,每行输出一位职员的姓名和实发工资,间隔一个空格,工资保留2位小数。

    输入样例:

    3
    zhao 240 400 75
    qian 360 120 50
    zhou 560 150 80
    
    • 1
    • 2
    • 3
    • 4

    输出样例:

    zhao 565.00
    qian 430.00
    zhou 630.00
    
    • 1
    • 2
    • 3
    #include
    
    struct message {
        char name[11];
        double a;
        double b;
        double c;
    };
    
    int main() {
        int n;
        scanf("%d", &n);
        int i;
        struct message x[1000];
        for (i = 0; i < n; i++) {
            scanf("%s %lf %lf %lf", &x[i].name, &x[i].a, &x[i].b, &x[i].c);
            printf("%s %.2f\n", x[i].name, x[i].a + x[i].b - x[i].c);
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    实验9-2-结构 时间换算

    本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时)。

    输入格式:
    输入在第一行中以hh:mm:ss的格式给出起始时间,第二行给出整秒数n(<60)。

    输出格式:
    输出在一行中给出hh:mm:ss格式的结果时间。

    输入样例:

    11:59:40
    30
    
    • 1
    • 2

    输出样例:

    12:00:10
    
    • 1
    #include
    
    int main() {
        int hh, mm, ss, n;
        scanf("%d:%d:%d", &hh, &mm, &ss);
        scanf("%d", &n);
        if (ss + n >= 60) {
            ss = ss + n - 60;
            mm = mm + 1;
            if (mm >= 60) {
                mm = mm - 60;
                hh = hh + 1;
                if (hh >= 24) {
                    hh = hh - 24;
                }
            }
        } else {
            ss = ss + n;
        }
        printf("%0.2d:%0.2d:%0.2d", hh, mm, ss);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    实验9-3-结构 计算平均成绩

    给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和成绩([0,100]区间内的整数),要求计算他们的平均成绩,并顺序输出平均线以下的学生名单。

    输入格式:
    输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩”,中间以空格分隔。

    输出格式:
    首先在一行中输出平均成绩,保留2位小数。然后按照输入顺序,每行输出一位平均线以下的学生的姓名和学号,间隔一个空格。

    输入样例:

    5
    00001 zhang 70
    00002 wang 80
    00003 qian 90
    10001 li 100
    21987 chen 60
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    输出样例:

    80.00
    zhang 00001
    chen 21987
    
    • 1
    • 2
    • 3
    #include
    
    struct message {
        int number;
        char name[11];
        int grade;
    };
    
    int main() {
        struct message x[11];
        int n, i;
        scanf("%d", &n);
        for (i = 0; i < n; i++) {
            scanf("%d %s %d", &x[i].number, &x[i].name, &x[i].grade);
        }
        int sum = 0;
        for (i = 0; i < n; i++) {
            sum = sum + x[i].grade;
        }
        double average = sum / n;
        printf("%.2f\n", (double) average);
        for (i = 0; i < n; i++) {
            if ((double) x[i].grade < average) printf("%s %0.5d\n", x[i].name, x[i].number);
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    实验9-5-结构 查找书籍

    给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。

    输入格式:
    输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。

    输出格式:
    在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。

    输入样例:

    3
    Programming in C
    21.5
    Programming in VB
    18.5
    Programming in Delphi
    25.0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    输出样例:

    25.00, Programming in Delphi
    18.50, Programming in VB
    
    • 1
    • 2
    #include
    
    struct book {
        char name[31];
        double price;
    };
    
    int main() {
        int n;
        scanf("%d", &n);
        int i;
        struct book x[11];
        for (int i = 0; i < n; i++) {
            scanf("\n");
            gets(x[i].name);
            scanf("%lf", &x[i].price);
        }
        double max = -1, min = 1000000;
        for (i = 0; i < n; i++) {
            if (x[i].price >= max) {
                max = x[i].price;
            }
            if (x[i].price <= min) {
                min = x[i].price;
            }
        }
        for (i = 0; i < n; i++) {
            if (x[i].price == max) {
                printf("%.2f, %s\n", max, x[i].name);
            }
        }
        for (i = 0; i < n; i++) {
            if (x[i].price == min) {
                printf("%.2f, %s\n", min, x[i].name);
            }
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    实验9-7-结构 找出总分最高的学生

    给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。

    输入格式:
    输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩1 成绩2 成绩3”,中间以空格分隔。

    输出格式:
    在一行中输出总分最高学生的姓名、学号和总分,间隔一个空格。题目保证这样的学生是唯一的。

    输入样例:

    5
    00001 huanglan 78 83 75
    00002 wanghai 76 80 77
    00003 shenqiang 87 83 76
    10001 zhangfeng 92 88 78
    21987 zhangmeng 80 82 75
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    输出样例:

    zhangfeng 10001 258
    
    • 1
    #include
    
    struct message {
        int xuehao;
        char name[11];
        int a;
        int b;
        int c;
        int sum;
    };
    
    int main() {
        struct message x[10];
        int i;
        int n;
        scanf("%d", &n);
        for (i = 0; i < n; i++) {
            scanf("%d %s %d %d %d", &x[i].xuehao, &x[i].name, &x[i].a, &x[i].b, &x[i].c);
        }
        for (i = 0; i < n; i++) {
            x[i].sum = x[i].a + x[i].b + x[i].c;
        }
        int max = 0;
        for (i = 0; i < n; i++) {
            if (x[i].sum >= max) max = x[i].sum;
        }
        for (i = 0; i < n; i++) {
            if (x[i].sum == max) {
                printf("%s %0.5d %d", x[i].name, x[i].xuehao, x[i].sum);
            }
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    实验9-8-结构 通讯录排序

    输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。

    输入格式:
    输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+、-组成的字符串。

    输出格式:
    按照年龄从大到小输出朋友的信息,格式同输出。

    输入样例:

    3
    zhang 19850403 13912345678
    wang 19821020 +86-0571-88018448
    qian 19840619 13609876543
    
    • 1
    • 2
    • 3
    • 4

    输出样例:

    wang 19821020 +86-0571-88018448
    qian 19840619 13609876543
    zhang 19850403 13912345678
    
    • 1
    • 2
    • 3
    #include
    #include
    
    struct xingxi {
        char name[11];
        int shengri;
        char telephone[18];
    };
    
    int main() {
        int i, j, n, temp;
        scanf("%d", &n);
        char ex[11], tel[18];
        struct xingxi x[10];
        for (i = 0; i < n; i++) {
            scanf("%s %d %s", &x[i].name, &x[i].shengri, &x[i].telephone);
        }
        for (i = 0; i < n; i++) {
            for (j = 1; j < n - i; j++) {
                if (x[j - 1].shengri >= x[j].shengri) {
                    temp = x[j - 1].shengri;
                    x[j - 1].shengri = x[j].shengri;
                    x[j].shengri = temp;
                    strcpy(ex, x[j - 1].name);
                    strcpy(x[j - 1].name, x[j].name);
                    strcpy(x[j].name, ex);
                    strcpy(tel, x[j - 1].telephone);
                    strcpy(x[j - 1].telephone, x[j].telephone);
                    strcpy(x[j].telephone, tel);
                }
            }
        }
        for (i = 0; i < n; i++) printf("%s %d %s\n", x[i].name, x[i].shengri, x[i].telephone);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    结构 通讯录的录入与显示

    通讯录中的一条记录包含下述基本信息:朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。
    本题要求编写程序,录入N条记录,并且根据要求显示任意某条记录。

    输入格式:
    输入在第一行给出正整数N(≤10);随后N行,每行按照格式姓名 生日 性别 固话 手机给出一条记录。其中姓名是不超过10个字符、不包含空格的非空字符串;生日按yyyy/mm/dd的格式给出年月日;性别用M表示“男”、F表示“女”;固话和手机均为不超过15位的连续数字,前面有可能出现+。

    在通讯录记录输入完成后,最后一行给出正整数K,并且随后给出K个整数,表示要查询的记录编号(从0到N−1顺序编号)。数字间以空格分隔。

    输出格式:
    对每一条要查询的记录编号,在一行中按照姓名 固话 手机 性别 生日的格式输出该记录。若要查询的记录不存在,则输出Not Found。

    输入样例:

    3
    Chris 1984/03/10 F +86181779452 13707010007
    LaoLao 1967/11/30 F 057187951100 +8618618623333
    QiaoLin 1980/01/01 M 84172333 10086
    2 1 7
    
    • 1
    • 2
    • 3
    • 4
    • 5

    输出样例:

    LaoLao 057187951100 +8618618623333 F 1967/11/30
    Not Found
    
    • 1
    • 2
    #include
    
    struct message {
        char name[11];
        char born[11];
        char sex;
        char guhua[17];
        char shouji[17];
    };
    
    int main() {
        int i, n;
        scanf("%d", &n);
    
        struct message x[11];
        for (i = 0; i < n; i++) {
            scanf("%s %s %c %s %s", &x[i].name, &x[i].born, &x[i].sex, &x[i].guhua, &x[i].shouji);
        }
    
        int y, a[10];
        scanf("%d", &y);
        for (i = 0; i < y; i++) scanf("%d", &a[i]);
    
        for (i = 0; i < y; i++) {
            if (a[i] >= 0 && a[i] < n) {
                printf("%s %s %s %c %s\n", x[a[i]].name, x[a[i]].guhua, x[a[i]].shouji, x[a[i]].sex, x[a[i]].born);
            } else {
                printf("Not Found\n");
            }
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    实验9-9-结构 有理数比较

    本题要求编写程序,比较两个有理数的大小。

    输入格式:
    输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。

    输出格式:
    在一行中按照“a1/b1 关系符 a2/b2”的格式输出两个有理数的关系。其中“>”表示“大于”,“<”表示“小于”,“=”表示“等于”。

    输入样例1:

    1/2 3/4
    
    • 1

    输出样例1:

    1/2 < 3/4
    
    • 1

    输入样例2:

    6/8 3/4
    
    • 1

    输出样例2:

    6/8 = 3/4
    
    • 1
    #include
    
    struct shuzi {
        int a;
        int b;
    };
    
    int main() {
        struct shuzi x[2];
        int i;
        for (i = 0; i < 2; i++) {
            scanf("%d/%d", &x[i].a, &x[i].b);
        }
        if ((double) x[0].a / x[0].b == (double) x[1].a / x[1].b) printf("%d/%d = %d/%d", x[0].a, x[0].b, x[1].a, x[1].b);
        else if ((double) x[0].a / x[0].b > (double) x[1].a / x[1].b)
            printf("%d/%d > %d/%d", x[0].a, x[0].b, x[1].a, x[1].b);
        else if ((double) x[0].a / x[0].b < (double) x[1].a / x[1].b)
            printf("%d/%d < %d/%d", x[0].a, x[0].b, x[1].a, x[1].b);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    结构 有理数加法

    本题要求编写程序,计算两个有理数的和。

    输入格式:
    输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。

    输出格式:
    在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。

    输入样例1:

    1/3 1/6
    
    • 1

    输出样例1:

    1/2
    
    • 1

    输入样例2:

    4/3 2/3
    
    • 1

    输出样例2:

    2
    
    • 1
    #include
    
    struct shuzi {
        int a;
        int b;
    };
    
    int main() {
        struct shuzi x[2];
        int i;
        for (i = 0; i < 2; i++) {
            scanf("%d/%d", &x[i].a, &x[i].b);
        }
        int m, n;
        m = x[0].a * x[1].b + x[1].a * x[0].b;
        n = x[0].b * x[1].b;
        for (i = 2; i < 10; i++) {
            while (m % i == 0 && n % i == 0) {
                m /= i;
                n /= i;
            }
        }
        if (m % n != 0) printf("%d/%d", m, n);
        else printf("%d", m / n);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    结构 有理数均值

    本题要求编写程序,计算N个有理数的平均值。

    输入格式:
    输入第一行给出正整数N(≤100);第二行中按照a1/b1 a2/b2 …的格式给出N个分数形式的有理数,其中分子和分母全是整形范围内的整数;如果是负数,则负号一定出现在最前面。

    输出格式:
    在一行中按照a/b的格式输出N个有理数的平均值。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。

    输入样例1:

    4
    1/2 1/6 3/6 -5/10
    
    • 1
    • 2

    输出样例1:

    1/6
    
    • 1

    输入样例2:

    2
    4/3 2/3
    
    • 1
    • 2

    输出样例2:

    1
    
    • 1
    #include
    
    #define N 100
    struct Rational {
        int n;    /* 分子 */
        int d;    /* 分母 */
    };
    
    int gcd(int num1, int num2) {
        return num2 == 0 ? num1 : gcd(num2, num1 % num2);
    }
    
    int main(void) {
        struct Rational ra[N], r;
        int i, n, g;
        scanf("%d", &n);
        for (i = 0; i < n; ++i)
            scanf("%d/%d", &ra[i].n, &ra[i].d);
        r.n = 0;
        r.d = 1;
        for (i = 0; i < n; ++i) {
            r.n = r.n * ra[i].d + r.d * ra[i].n;
            r.d = r.d * ra[i].d;
        }
        r.d *= n;    /*平均值 */
        g = gcd(r.n, r.d);
        if (g != 0) {
            r.n /= g;
            r.d /= g;
        }
        if (r.n == 0 || r.d == 1)
            printf("%d", r.n);
        else
            printf("%d/%d\n", r.n, r.d);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    实验9-10-结构 平面向量加法

    本题要求编写程序,计算两个二维平面向量的和向量。

    输入格式:
    输入在一行中按照“ x 1 x_1 x1 y 1 y_1 y1 x 2 x_2 x2 y 2 y_2 y2”的格式给出两个二维平面向量 v 1 = ( x 1 , y 1 ) v_1=(x_1,y_1) v1=(x1,y1) v 2 = ( x 2 , y 2 ) v_2=(x_2,y_2) v2=(x2,y2)的分量。

    输出格式:
    在一行中按照(x, y)的格式输出和向量,坐标输出小数点后一位(注意不能输出−0.0)。

    输入样例:

    3.5 -2.7 -13.9 8.7
    
    • 1

    输出样例:

    (-10.4, 6.0)
    
    • 1
    #include
    
    struct shuzi {
        double a;
        double b;
    };
    
    int main() {
        struct shuzi x[2];
        int i;
        for (i = 0; i < 2; i++) {
            scanf("%lf %lf", &x[i].a, &x[i].b);
        }
        double m, n;
        m = x[0].a + x[1].a;
        n = x[0].b + x[1].b;
        if (m > -0.05 && m <= 0 && n != 0) printf("(0.0, %.1f)", n);
        else if (m != 0 && n > -0.05 && n <= 0) printf("(%.1f, 0.0)", m);
        else if (m > -0.05 && m <= 0 && n > -0.05 && n <= 0) printf("(0.0, 0.0)");
        else if (m != 0 && n != 0) printf("(%.1f, %.1f)", m, n);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
  • 相关阅读:
    图像操作编程:实现图像的旋转、缩放和灰度化
    论文阅读:Point-to-Voxel Knowledge Distillation for LiDAR Semantic Segmentation
    web前端期末大作业 html+css学生心理 7页主题网页设计
    能进大厂?阿里云ACE认证到底有多香!
    一次spark任务提交参数的优化
    外包做了3个月,技术退步明显。。。。。
    学习Kotlin看哪些书?【赠书活动|第八期《深入实践Kotlin元编程》】
    华为OD机试真题-任务最优调度-2023年OD统一考试(B卷)
    初识VisionPro应用开发
    《动手学深度学习 Pytorch版》 9.5 机器翻译与数据集
  • 原文地址:https://blog.csdn.net/im34v/article/details/126557018