【PTA-C语言】编程练习6 - 结构体与共用体 - 函数题

发布时间:2024年01月02日

7-1 查找书籍(分数 20)

作者 C课程组
单位 浙江大学

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

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

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

输入样例:

3
Programming in C
21.5
Programming in VB
18.5
Programming in Delphi
25.0

输出样例:

25.00, Programming in Delphi
18.50, Programming in VB

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

参考代码

#include<stdio.h>
int main()    
{
    struct STU {
        char name[31];
        double p;
    };
    int n, i, min=0, max=0;
    scanf("%d", &n);
    struct STU a[n];
    for(i=0; i<n; i++) {
        getchar();
        gets(a[i].name);
        scanf("%lf",&a[i].p);
    }
    for(i=0; i<n; i++) {
        if(a[i].p>a[max].p)
            max=i;
        if(a[i].p<a[min].p)
            min=i;
    }
    printf("%.2lf, %s\n", a[max].p, a[max].name);
    printf("%.2lf, %s\n", a[min].p, a[min].name);
    return 0;
}

提交结果
在这里插入图片描述https://img-blog.csdnimg.cn/direct/e1ee0d69e2ba47c9b35f7913e0ead763.png

7-2 一帮一(分数 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

输出样例:

Amy Jack
Tom Linda
Bill Maya
Cindy John

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

参考代码

#include <stdio.h>

struct student {
    int sex;
    char name[9];
};

int main()
{
    struct student stu[50];
    int n, i, j, temp;
    scanf("%d", &n);
    for (i=0; i<n; i++)
        scanf("%d %s", &stu[i].sex, stu[i].name);
    for (i=0; i<n; i++)
        for(j=n-1; j>=i; j--)
            if (stu[i].sex != stu[j].sex && stu[j].sex != 3) {
                printf("%s %s\n", stu[i].name, stu[j].name);
                stu[j].sex = 3;
                break;
            }
    return 0;
}

提交结果
在这里插入图片描述https://img-blog.csdnimg.cn/direct/c4b75c4c9e834fc1a5b536d9e62665e7.png

7-3 计算职工工资(分数 15)

作者 C课程组
单位 浙江大学

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

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

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

输入样例:

3
zhao 240 400 75
qian 360 120 50
zhou 560 150 80

输出样例:

zhao 565.00
qian 430.00
zhou 630.00

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

参考代码

#include<stdio.h>
struct member {
    char name[80];
    float  bwage;
    float fwage;
    float  pay;
    float awage;
}; 
int main()
{
    struct member members[1000];
    int i, N;
    scanf("%d", &N);
    for(i=0; i<N; i++) {
        scanf("%s", &members[i].name);
        scanf("%f", &members[i].bwage);
        scanf("%f", &members[i].fwage);
        scanf("%f", &members[i].pay);
        members[i].awage = (members[i].bwage+members[i].fwage)-members[i].pay;
     } 
    for(i=0; i<N; i++)
        printf("%s %.2f\n", members[i].name, members[i].awage);
    return 0;
}

提交结果
在这里插入图片描述https://img-blog.csdnimg.cn/direct/5fe06bc827594292843035db74daaf7a.png

文章来源:https://blog.csdn.net/qq_45801887/article/details/135136640
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。