题解 | #简单错误记录#
简单错误记录
https://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb
#include <stdio.h>
#include<string.h>
typedef struct {
char note[19];
int line;
int cnt;
} Record;
void get_desc(char* str, char* desc) {
int n = 0;
for (int i = strlen(str) - 1; i >= 0; i--, n++) {
if (n == 16 || str[i] == '\\') {
strcpy(desc, &str[i + 1]);
break;
}
}
}
int main() {
char str[100];
int line;
int flag;
int i;
int loop_index = 0;
Record record[100] = {0};
while (scanf("%s %d", str, &line) != EOF) { // 注意 while 处理多个 case
char temp_desc[18];
get_desc(str, temp_desc);
flag = 0;
for (i = 0; i < loop_index; i++) {
if (strcmp(temp_desc, record[i].note) == 0 && record[i].line == line) {
flag = 1;
break;
}
}
if (flag)
record[i].cnt++;
else {
strcpy(record[loop_index].note, temp_desc);
record[loop_index].line = line;
record[loop_index].cnt++;
loop_index++;
}
}
if (loop_index < 8) {
for (int j = 0; j < loop_index; j++) {
printf("%s %d %d\n",
record[j].note, record[j].line,
record[j].cnt);
}
} else {
for (int j = 0; j < 8; j++) {
printf("%s %d %d\n",
record[loop_index - 8 + j].note, record[loop_index - 8 + j].line,
record[loop_index - 8 + j].cnt);
}
}
return 0;
}
题目不难,但是超级麻烦
