- 如果代码存在问题,麻烦大家指正 ~ ~
- 有帮助麻烦点个赞 ~ ~
编程练习6 - 结构体与共用体 - 编程题
- 7-1 查找书籍(分数 20)
- 7-2 一帮一(分数 15)
- 7-3 计算职工工资(分数 15)
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;
}
提交结果
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;
}
提交结果
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;
}
提交结果
注:
- PTA网站:PTA程序设计类实验辅助教学平台