鱼C论坛

 找回密码
 立即注册
查看: 2098|回复: 7

[已解决]关于结构体的问题

[复制链接]
发表于 2022-11-14 23:34:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小明学开车后,才发现他的教练对不同的学员收取不同的费用。
小明想分别对他所了解到的学车同学的各项费用进行累加求出总费用,然后按下面的排序规则排序并输出,以便了解教练的收费情况。排序规则:
先按总费用从多到少排序,若总费用相同则按姓名的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 21:20:11
前面那个有问题,这段可以实现需求
  1. int main() {
  2.         int cost[10] = {0};
  3.         int i = 0;
  4.         do{
  5.                 scanf("%d", &cost[i++]);
  6.         }while(getchar() != '\n');
  7.         return 0;
  8. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-15 00:16:47 | 显示全部楼层
本帖最后由 桃花飞舞 于 2022-11-15 00:18 编辑

这题并不难,自己写出来印象深刻,
struct  people
{
  char name[100]; //名字
  int num[10]; //单个费用的数组
  int number;//编号
  int sum; //总费用
}
你参考下,按题目意思来做就可以了。你也可以网上收索下,应该有答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-15 18:04:45 | 显示全部楼层
本帖最后由 两手空空儿 于 2022-11-15 18:20 编辑

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

  1. do{
  2.         int flag;
  3.         flag = scanf("%d", &cost[i++]);
  4. }while(flag > 0);
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-15 18:34:50 | 显示全部楼层
桃花飞舞 发表于 2022-11-15 00:16
这题并不难,自己写出来印象深刻,
struct  people
{

嗯,这个我会,但是我不知道如何输入不同数量的单个费用到数组里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-15 18:39:16 | 显示全部楼层
两手空空儿 发表于 2022-11-15 18:04
用一个do...while完成后面费用数组的赋值, 我不知道这么写对不对

好的!我试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-15 21:20:11 | 显示全部楼层    本楼为最佳答案   
前面那个有问题,这段可以实现需求
  1. int main() {
  2.         int cost[10] = {0};
  3.         int i = 0;
  4.         do{
  5.                 scanf("%d", &cost[i++]);
  6.         }while(getchar() != '\n');
  7.         return 0;
  8. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-16 15:19:32 | 显示全部楼层
两手空空儿 发表于 2022-11-15 21:20
前面那个有问题,这段可以实现需求

好的!!!没问题了,谢谢大佬!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-16 16:14:11 | 显示全部楼层
不敢不敢 ,我的课程还没刷完,一起进步
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 09:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表