OJ刷题小结
2026/7/6 13:36:14 网站建设 项目流程

1.1题目

1.2代码

#include <stdio.h> #include <string.h> int add(int a, int b) { return a + b; } int main() { int n; scanf("%d", &n); getchar(); char input[20]; for (int i = 0; i < n; i++) { fgets(input, sizeof(input), stdin); int a, b; sscanf(input, "add(%d,%d)", &a, &b); printf("%d\n", add(a, b)); } return 0; }

1.3思路

1. 加法函数 add :接收两个整型参数,返回它们的和,符合题目对 add(a,b)=a+b 的定义。
​2. 输入处理:
​先读取组数 n ,再用 getchar() 吸收换行符,防止 fgets 读取到空行。
​用 fgets 逐行读取 add(a,b) 格式的字符串,避免 scanf 处理带括号/逗号的字符串时出现问题。
​3. 字符串解析:通过 sscanf 按 "add(%d,%d)" 的格式提取 a 和 b 的数值。
​4. 输出结果:调用 add 函数计算后,逐行输出结果。

2.1题目

2.2代码

#include <stdio.h> #define MAX_N 100 void bubble_sort(int arr[], int len) { for (int i = 0; i < len - 1; i++) { for (int j = 0; j < len - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } int main() { int N; int nums[MAX_N]; int unique_nums[MAX_N]; int unique_count = 0; scanf("%d", &N); for (int i = 0; i < N; i++) { scanf("%d", &nums[i]); } for (int i = 0; i < N; i++) { int is_duplicate = 0; for (int j = 0; j < unique_count; j++) { if (nums[i] == unique_nums[j]) { is_duplicate = 1; break; } } if (!is_duplicate) { unique_nums[unique_count++] = nums[i]; } } bubble_sort(unique_nums, unique_count); printf("%d\n", unique_count); for (int i = 0; i < unique_count; i++) { printf("%d", unique_nums[i]); if (i != unique_count - 1) { printf(" "); } } printf("\n"); return 0; }

2.3思路

1. 数据存储:用 nums 数组存储原始输入, unique_nums 数组存储去重后的结果, unique_count 记录去重后的元素个数。
​2. 去重逻辑:遍历原始数组,逐个检查元素是否已存在于去重数组中,不存在则加入,实现去重。
​3. 排序实现:使用冒泡排序对去重后的数组升序排列,逻辑简单且适配题目数据量(N≤100)。
​4. 输出格式:先输出去重后的数量,再输出排序后的数字,数字间用空格分隔,最后一个数字后无多余空格。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询