
代码运行截图:

解决对应代码如下:
- #include
- #include
-
- #define MAX_LINE_LENGTH 100
- struct Event {
- int age;
- int id;
- int year;
- int month;
- int day;
- char name[20];
- };
- int main() {
- FILE* file;
- char line[MAX_LINE_LENGTH];
- // Open the file
- file = fopen("A.txt", "r");
- if (file == NULL) {
- printf("Unable to open the file.\n");
- return 1;
- }
- printf("------------------------------------------\n");
- // Read and print each line until the end of the file
- while (fgets(line, sizeof(line), file)) {
- struct Event event;
- sscanf(line, "%d,%d,%d,%d,%d,%s[^\n]", &event.age, &event.id, &event.year, &event.month, &event.day, event.name);
- printf("%d岁以下,%s,%d,%d/%d/%d\n", event.age, event.name, event.id, event.year, event.month, event.day);
- printf("------------------------------------------\n");
- }
- // Close the file
- fclose(file);
- return 0;
- }

代码运行及截图如下:

解决对应代码如下:
- #include
- #include
- #include
- #define MAX_LINE_LENGTH 100
- struct Event {
- int age;
- int id;
- int year;
- int month;
- int day;
- char name[20];
- };
- void findMatchingEvents(int age, int id) {
- FILE* file = fopen("A.txt", "r");
- if (file == NULL) {
- printf("无法打开文件\n");
- return;
- }
- char line[MAX_LINE_LENGTH];
- bool found = false;
- while (fgets(line, MAX_LINE_LENGTH, file)) {
- struct Event event;
- sscanf(line, "%d,%d,%d,%d,%d,%s[^\n]", &event.age, &event.id, &event.year, &event.month, &event.day, event.name);
- if (age <= event.age && event.id == id) {
- printf("能参加的项目:%s\n", event.name);
- found = true;
- break;
- }
- }
- fclose(file);
- if (!found) {
- printf("没有找到符合条件的项目\n");
- }
- }
- int main() {
- int age, id;
- printf("请输入年龄:");
- scanf("%d", &age);
- printf("请输入工号:");
- scanf("%d", &id);
- findMatchingEvents(age, id);
- return 0;
- }

代码运行对应截图如下:

![]()

解决对应代码如下:
- #include
- #include
- #include
- #define MAX_LINE_LENGTH 100
- struct Event {
- int age;
- int id;
- int year;
- int month;
- int day;
- char name[20];
- };
- //查找1
- void findMatchingEvents(int age, int id) {
- FILE* file = fopen("A.txt", "r");
- if (file == NULL) {
- printf("无法打开文件\n");
- return;
- }
- char line[MAX_LINE_LENGTH];
- bool found = false;
- int iLine = 1;
- while (fgets(line, MAX_LINE_LENGTH, file)) {
- struct Event event;
- sscanf(line, "%d,%d,%d,%d,%d,%s[^\n]", &event.age, &event.id, &event.year, &event.month, &event.day, event.name);
- if (age <= event.age && event.id == id) {
- printf("能参加的项目:%s,编号:%d\n", event.name, iLine);
- found = true;
- break;
- }
- iLine++;
- }
- fclose(file);
- if (!found) {
- printf("没有找到符合条件的项目\n");
- }
- }
- //保存字符串到文件中
- void savecontent(char* str) {
- FILE* file = fopen("B.txt", "w");
- if (file == NULL) {
- printf("无法打开文件\n");
- return ;
- }
- fputs(str, file);
- fclose(file);
- }
- //查找2
- void findMatchingEvents2(int nameid) {
- FILE* file = fopen("A.txt", "r");
- if (file == NULL) {
- printf("无法打开文件\n");
- return;
- }
- char line[MAX_LINE_LENGTH], line2[MAX_LINE_LENGTH];
- bool found = false;
- int iLine = 1;
- while (fgets(line, MAX_LINE_LENGTH, file)) {
- if (nameid == iLine) {
- struct Event event;
- sscanf(line, "%d,%d,%d,%d,%d,%s[^\n]", &event.age, &event.id, &event.year, &event.month, &event.day, event.name);
- sprintf(line2,"教师工号:%d,项目编号:%d,项目比赛时间:%d/%d/%d\n", event.id, nameid, event.year, event.month, event.day);
- printf("%s", line2);//屏幕输出
- savecontent(line2);//将line2内容写入文本文件B.txt中
- found = true;
- break;
- }
- else
- {
- iLine++;
- }
-
-
- }
- fclose(file);
- if (!found) {
- printf("没有找到符合条件的项目\n");
- }
- }
- int main() {
- int age, id,nameid;
- printf("请输入年龄:");
- scanf("%d", &age);
- printf("请输入工号:");
- scanf("%d", &id);
- findMatchingEvents(age, id);
- printf("请输入项目编号:");
- scanf("%d", &nameid);
- findMatchingEvents2(nameid);
- return 0;
- }
解析:
这上面三个问题,主要是用到的功能有:文件的读写,结构体,循环,字符串键盘输入读取,屏幕输出,字符串查找判断,字符串赋值等操作。这是基本操作,主要是考查学生的基本功。如有不足之处,欢迎大家来讨论指正。