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

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

  • 38
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C语言中的结构体是一种自定义的数据类型,可以包含多个不同类型的成员变量。通过结构体,我们可以将相关的数据组织在一起,方便操作和管理。结构体的定义使用关键字struct,具体的语法格式为: ``` struct 结构体名 { 数据类型 成员名1; 数据类型 成员名2; ... }; ``` 在定义结构体时,我们可以同时定义结构体变量,即创建一个该结构体类型的实例。例如: ``` struct stu { char *name; int num; int age; char group; float score; } stu1, stu2; ``` 在这个例子中,stu是一个结构体类型,包含了name、num、age、group和score这五个成员变量。同时我们也定义了两个结构体变量stu1和stu2,它们都是stu这个结构体类型的实例。 另外,我们还可以匿名地定义结构体,即不给结构体命名,在定义结构体变量时直接使用结构体的定义。例如: ``` struct { char *name; int num; int age; char group; float score; } stu1, stu2; ``` 在这个例子中,我们没有给结构体命名,只是定义了一组与之对应的结构体变量stu1和stu2。 结构体变量的引用可以通过成员运算符.来访问结构体的各个成员变量。例如,对于上述的结构体变量stu1,我们可以通过stu1.name、stu1.num等来引用它的各个成员变量。 共用体(Union)是一种特殊的数据类型,它允许在相同的内存空间中存储不同类型的数据。与结构体类似,共用体也由多个成员变量组成,但是共用体中的成员变量共享同一块内存空间,只能同时存储其中的一个成员值。共用体的定义使用关键字union,具体的语法格式为: ``` union 共用体名 { 数据类型 成员名1; 数据类型 成员名2; ... }; ``` 共用体的使用方式与结构体类似,可以定义共用体类型并创建共用体变量。共用体变量的引用也可以通过成员运算符.来访问共用体的成员变量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谛凌

本人水平有限,感谢您支持与指正

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值