这题的话, 我用的是个结构体, 记录各个人.. 我错了的地方我注释了`
/*
LANG: C
ID: zqynux11
PROG: gift1
*/
#include <stdio.h>
#include <string.h>
struct people{
char name[15];
int given, got;
}pep[10];
int np;
int find(char *str)
{
int i;
for(i = 0; i < np; i++){
if(strcmp(str, pep[i].name) == 0){
return i;
}
}
return -1;
}
int main(void)
{
int i, j;
int t, tot, eve, mon;
char tmp[15];
freopen("gift1.in", "r", stdin);
freopen("gift1.out", "w", stdout);
scanf("%d\n", &np); /* 刚开始的时候输入忘记处理'\n'了 */
for(i = 0; i < np; i++){
gets(pep[i].name);
}
while(gets(tmp) != NULL){
t = find(tmp);
scanf("%d%d\n", &mon, &tot); /* 同上 */
if(tot != 0){
eve = mon / tot;
}
pep[t].got += mon - eve * tot;
pep[t].given += mon;
for(j = 1; j <= tot; j++){
pep[find(gets(tmp))].got += eve;
}
}
for(i = 0; i < np; i++){
printf("%s %d\n", pep[i].name, pep[i].got - pep[i].given);
}
return 0;
}