题解 | #简单错误记录#
简单错误记录
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; }
题目不难,但是超级麻烦