#include <stdio.h>
#include <stdlib.h>
struct student
{
int number;
int de;
int cai;
int grade;
int sum=de+cai;
};
typedef struct student* man;
int com(const void *a, const void *b)
{
man s1 = *(man *)a;
man s2 = *(man *)b;
if (s1->grade != s2->grade) return s2->grade - s1->grade;
else if (s1->sum != s2->sum) return s1->sum - s2->sum;
else if (s1->de != s2->de) return s1->de - s2->de;
else if (s1->number != s2->number) return s2->number - s1->number;
else return 0;
}
int judge(man s, int c, int d)
{
if (s->cai < c || s->de < c) return 0;
else if (s->cai < d&&s->de < d) return 1;
else if (s->cai >= d && s->de < d) return 2;
else if (s->de >= d && s->cai < d) return 3;
else if (s->cai >= d && s->de >=d) return 4;
}
int main()
{
man a[100];
int b, c, d;
scanf_s("%d %d %d", &b, &c, &d,8888);
int i;
int flag = 0;
for (i = 0; i < b; i++)
{
man s = (man)malloc(sizeof(struct student));
scanf_s("%d %d %d", s->number, s->de, s->cai,8888);
if (s->grade=judge(a[i], b, c) )
{
a[flag] = s;
flag++;
}
free(s);
}
qsort(a, flag, sizeof( man), com);
printf("%d\n", flag);
for (int i = flag - 1; i >= 0; i--)
printf("%d %d %d\n",a[i]->number, a[i]->de, a[i]->cai);
system("pause");
return 0;
}
大佬们咋回事
p://img.ask.csdn.net/upload/201801/29/1517210935_834748.png)
新手用vs2017 输入数据报错 c语言
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
5条回答 默认 最新
- 闭上左眼看世界 2018-01-29 08:42关注
你后面的if (s->grade = judge(a[i], b, c));首先.数组a里面全是野指针...然后你调用judge方法...让一个指针去指向了这个野指针,然后想要去得到这片区域的值...不报错才怪..
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 redis-full-check比较 两个集群的数据出错
- ¥15 Labview机器人问题
- ¥15 Matlab编程问题
- ¥15 训练的多模态特征融合模型准确度很低怎么办
- ¥15 kylin启动报错log4j类冲突
- ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
- ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
- ¥15 onvif+openssl,vs2022编译openssl64
- ¥15 iOS 自定义输入法-第三方输入法
- ¥15 很想要一个很好的答案或提示