开发数组元素迁移程序:按指定除数筛选迁移元素
我来帮你搞定这个数组元素迁移的程序,下面是完整的C语言实现,包含详细注释和逻辑说明:
数组元素迁移程序完整实现
#include <stdio.h> #include <stdlib.h> #include <time.h> // 迁移能被指定除数整除的元素到目标数组 int moveDivisibleElements(int source[], int target[], int length, int divisor) { int count = 0; // 记录目标数组中存入的元素个数 for (int i = 0; i < length; i++) { // 判断当前元素是否能被除数整除(除数不为0的前提已在主函数处理) if (source[i] % divisor == 0) { target[count++] = source[i]; } } return count; } int main() { int divisor; // 初始化随机数种子,确保每次运行生成不同的随机数序列 srand((unsigned int)time(NULL)); // 创建两个长度为30的一维整数数组 int arr1[30], arr2[30]; // 填充第一个数组为0-99的随机数并打印 printf("第一个数组(0-99随机数)内容:\n"); for (int i = 0; i < 30; i++) { arr1[i] = rand() % 100; printf("%d ", arr1[i]); // 每10个元素换行,提升可读性 if ((i + 1) % 10 == 0) { printf("\n"); } } printf("\n"); // 让用户输入整数除数,同时处理除数为0的异常情况 do { printf("请输入一个非零整数除数:"); scanf("%d", &divisor); if (divisor == 0) { printf("错误:除数不能为0,请重新输入!\n"); } } while (divisor == 0); // 调用函数迁移符合条件的元素 int validCount = moveDivisibleElements(arr1, arr2, 30, divisor); // 打印第二个数组的内容 printf("\n第二个数组(能被%d整除的元素)内容:\n", divisor); if (validCount == 0) { printf("没有能被%d整除的元素\n", divisor); } else { for (int i = 0; i < validCount; i++) { printf("%d ", arr2[i]); if ((i + 1) % 10 == 0) { printf("\n"); } } printf("\n"); } return 0; }
关键逻辑说明
- 随机数生成:用
srand((unsigned int)time(NULL))初始化随机数种子,避免每次运行得到相同的随机数序列;rand() % 100生成0到99之间的整数。 - 除数输入校验:通过
do-while循环强制用户输入非零除数,避免出现除以0的运行时错误。 - 元素迁移函数:
moveDivisibleElements函数负责遍历源数组,将符合条件的元素存入目标数组,并返回实际存入的元素数量,这样打印目标数组时只会输出有效元素,不会打印未初始化的垃圾值。 - 格式化打印:每10个元素换行,让输出布局更清晰易读。
内容的提问来源于stack exchange,提问作者Στέφανος Γκορτσόπουλος
相关产品推荐
相关产品推荐

