酷代码 AI
菜单
服务商

7-3 信息排序整理 分数 10 作者 C语言课程组 单位 成都信息工程大学 某生物实验室记录了n种(n<=1000)病毒信息,每种病毒都有编号、传染性和致病性三个基本信息,编号是1000-9999的人工编号,其中的传染性和致病性是用0-100的数值代表其严重程度。请你帮实验室完成这些病毒信息的处理,即按传染性升序排序,若传染性相同则按致病性降序排序。 输入格式: 多组输入。每组先输入一个正整数n(1<=n && n <= 100),代表有n种病毒,接下来分别输入每种病毒的信息,即编号number(1000-9999)、传染性Pi(0-100)、致病性Di(0-100)。 提示:以条件 scanf("%d",&n)!=EOF 来确定是否结束多组数据的输入。 输出格式: 对于每组数据输出n行,每行三个数值,空格分隔开,分别是number、Pi、Di。 输入样例: 在这里给出一组输入。例如: 3 1001 10 30 1006 5 60 2001 30 12 4 1001 10 30 1006 5 20 2001 30 12 1008 5 60 输出样例: 在这里给出相应的输出。

```c #include <stdio.h> // 定义病毒结构体 typedef struct { int number; int Pi; int Di; } Virus; // 比较函数,用于qsort排序 int compare(const void *a, const void *b) { Virus *virusA = (Virus *)a; Virus *virusB = (Virus *)b; if (virusA->Pi != virusB->Pi) { return virusA->Pi - virusB->Pi; } return virusB->Di - virusA->Di; } int main() { int n; while (scanf("%d", &n) != EOF) { Virus viruses[100]; for (int i = 0; i < n; i++) { scanf("%d %d %d", &viruses[i].number, &viruses[i].Pi, &viruses[i].Di); } // 使用qsort函数进行排序 qsort(viruses, n, sizeof(Virus), compare); printf("result:\n"); for (int i = 0; i < n; i++) { printf("%d %d %d\n", viruses[i].number, viruses[i].Pi, viruses[i].Di); } } return 0; } ``` [2025-12-19 17:42:00 | AI问答 | 311点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多