灯火阑珊201 发表于 2022-11-14 23:34:56

关于结构体的问题

小明学开车后,才发现他的教练对不同的学员收取不同的费用。
小明想分别对他所了解到的学车同学的各项费用进行累加求出总费用,然后按下面的排序规则排序并输出,以便了解教练的收费情况。排序规则:
先按总费用从多到少排序,若总费用相同则按姓名的ASCII码序从小到大排序,若总费用相同而且姓名也相同则按编号(即输入时的顺序号,从1开始编)从小到大排序。

输入格式:
测试数据有多组,处理到文件尾。每组测试数据先输入一个正整数n(n≤20),然后是n行输入,第i行先输入第i个人的姓名(长度不超过10个字符,且只包含大小写英文字母),然后再输入若干个整数(不超过10个),表示第i个人的各项费用,数据之间都以一个空格分隔,第i行输入的编号为i。输入数据和结果均在32位int型范围之内。

输出格式:
对于每组测试,在按描述中要求的排序规则进行排序后,按顺序逐行输出每个人费用情况,包括:费用排名(从1开始,费用相同则排名也相同)、编号、姓名、总费用。每行输出的数据之间留1个空格。

输入样例:
3
Tom 2800 900 2000 500 600
Jack 3800 400 1500 300
Tom 6700 100
输出样例:
1 1 Tom 6800
1 3 Tom 6800
3 2 Jack 6000

要求用结构体数组存放姓名和费用,真的写了好久都没写出来,我不知道该怎么输入不同数量的费用,希望大神能帮助我!!!

桃花飞舞 发表于 2022-11-15 00:16:47

本帖最后由 桃花飞舞 于 2022-11-15 00:18 编辑

这题并不难,自己写出来印象深刻,
structpeople
{
char name; //名字
int num; //单个费用的数组
int number;//编号
int sum; //总费用
}
你参考下,按题目意思来做就可以了。你也可以网上收索下,应该有答案

两手空空儿 发表于 2022-11-15 18:04:45

本帖最后由 两手空空儿 于 2022-11-15 18:20 编辑

用一个do...while完成后面费用数组的赋值, 我不知道这么写对不对

do{
      int flag;
      flag = scanf("%d", &cost);
}while(flag > 0);

灯火阑珊201 发表于 2022-11-15 18:34:50

桃花飞舞 发表于 2022-11-15 00:16
这题并不难,自己写出来印象深刻,
structpeople
{


嗯,这个我会,但是我不知道如何输入不同数量的单个费用到数组里

灯火阑珊201 发表于 2022-11-15 18:39:16

两手空空儿 发表于 2022-11-15 18:04
用一个do...while完成后面费用数组的赋值, 我不知道这么写对不对

好的!我试试

两手空空儿 发表于 2022-11-15 21:20:11

前面那个有问题,这段可以实现需求
int main() {
        int cost = {0};
        int i = 0;
        do{
                scanf("%d", &cost);
        }while(getchar() != '\n');
        return 0;
}

灯火阑珊201 发表于 2022-11-16 15:19:32

两手空空儿 发表于 2022-11-15 21:20
前面那个有问题,这段可以实现需求

好的!!!没问题了,谢谢大佬!

两手空空儿 发表于 2022-11-16 16:14:11

不敢不敢 ,我的课程还没刷完,一起进步
页: [1]
查看完整版本: 关于结构体的问题