社区讨论

求个大佬求调球球了

P1051[NOIP 2005 提高组] 谁拿了最多奖学金参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mhj3yjee
此快照首次捕获于
2025/11/03 20:20
4 个月前
此快照最后确认于
2025/11/03 20:20
4 个月前
查看原帖
C
#include<stdio.h>
#include<stdlib.h>
typedef struct {
	char name[20];
	int mark;
	int comment;
	char senior;
	char west;
	int essay;
	int credit;
	int j;
}person;
int main() {
	int n, sum = 0;
	scanf("%d", &n);
	getchar();
	char b;
	person *pupil=(person*)malloc(n*sizeof(person));
	if (!pupil) return 0;
	for (int i = 0; i < n; i++) {
		pupil[i].credit = 0;
		pupil[i].j = 0;
		while ((b = getchar()) != ' ')
			pupil[i].name[pupil[i].j++] = b;
		scanf("%d%d", &pupil[i].mark, &pupil[i].comment);
		scanf(" %c %c %d", &pupil[i].senior, &pupil[i].west, &pupil[i].essay);
		getchar();
		if (pupil[i].mark > 80 && pupil[i].essay >= 1)
			pupil[i].credit += 8000;
		if (pupil[i].mark > 85 && pupil[i].comment > 80)
			pupil[i].credit += 4000;
		if (pupil[i].mark > 90)
			pupil[i].credit += 2000;
		if (pupil[i].mark > 85 && pupil[i].west == 'Y')
			pupil[i].credit += 1000;
		if (pupil[i].comment > 80 && pupil[i].senior == 'Y')
			pupil[i].credit += 850;
		sum += pupil[i].credit;
	}
	int t=pupil[0].credit;
	int x=0;
	for (int i = 1; i < n; i++) 
		if (pupil[i].credit > t) {
			t = pupil[i].credit;
			x = i;
		}
	for (int i = 0; i < pupil[x].j; i++) 
		printf("%c", pupil[x].name[i]);
	printf("\n");
	printf("%d\n%d", pupil[x].credit, sum);
	free(pupil);
	pupil = NULL;
	return 0;
}
感觉是在输入或者输出环节出了问题

回复

0 条回复,欢迎继续交流。

正在加载回复...