酷代码 AI
菜单
服务商

我国就业问题与数据处理:C 语言代码解析及开发注意要点

```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_PROVINCES 100 #define MAX_NAME_LEN 50 typedef struct { char name[MAX_NAME_LEN]; int employment; } Province; void bubbleSort(Province arr[], int n) { for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (arr[j].employment < arr[j + 1].employment) { Province temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } int binarySearch(Province arr[], int n, char *target) { int left = 0, right = n - 1; while (left <= right) { int mid = left + (right - left) / 2; int cmp = strcmp(arr[mid].name, target); if (cmp == 0) return mid; if (cmp < 0) left = mid + 1; else right = mid - 1; } return -1; } int main() { FILE *inputFile = fopen("employ-data.txt", "r"); FILE *outputFile = fopen("employ-sort.txt", "w"); Province provinces[MAX_PROVINCES]; int count = 0; if (!inputFile) { printf("无法打开输入文件\n"); return 1; } while (fscanf(inputFile, "%s %d", provinces[count].name, &provinces[count].employment) != EOF) { count++; if (count >= MAX_PROVINCES) break; } fclose(inputFile); bubbleSort(provinces, count); printf("排序结果:\n"); for (int i = 0; i < count; i++) { printf("%s %d\n", provinces[i].name, provinces[i].employment); fprintf(outputFile, "%s %d\n", provinces[i].name, provinces[i].employment); } fclose(outputFile); char query[MAX_NAME_LEN]; char choice; do { printf("输入查询省市名称: "); scanf("%s", query); int index = binarySearch(provinces, count, query); if (index != -1) { printf("就业人数: %d\n", provinces[index].employment); } else { printf("查询不成功\n"); } printf("继续查询? (y/n): "); scanf(" %c", &choice); } while (choice == 'y' || choice == 'Y'); return 0; } ``` 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 文件打开后必须检查是否成功 字符串比较使用strcmp而非直接比较 数组边界检查防止越界访问 ######[AI写代码神器 | 649点数解答 | 2025-11-30 23:47:20]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]