You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言一维数组按规则修改及文件读写功能实现求助

C语言数组处理任务实现

原代码错误点

  • 未按需求读取input.txt文件数据,错误使用随机数生成数组元素
  • 文件操作逻辑混乱:未打开输入文件,写入output.txt后指针未复位直接读取,导致读取失败
  • 仅完成了前后元素最后一位乘积的计算,未实现数组元素修改、修改后结果输出的核心逻辑
  • 未处理边界场景:首尾元素无前置/后置元素、乘积为0导致除0错误的问题

前置约定

针对需求未明确的边界场景做如下统一处理:

  • 数组第一个元素没有前置元素、最后一个元素没有后置元素,保持原值不变
  • 若前后元素最后一位的乘积为0,为避免除0异常,对应元素保持原值不变
  • 元素最后一位取绝对值计算,避免负数取模得到负数值的问题

完整实现代码

#include <stdio.h>
#include <stdlib.h>
#define N 20
int main(void) {
    FILE *in_fp, *out_fp;
    int array[N];
    int i;
    // 打开输入文件读取原始数组
    in_fp = fopen("input.txt", "r");
    if (in_fp == NULL) {
        printf("无法打开input.txt文件,请检查文件是否存在\n");
        return 1;
    }
    for (i = 0; i < N; i++) {
        if (fscanf(in_fp, "%d", &array[i]) != 1) {
            printf("input.txt中元素不足20个,请检查文件内容\n");
            fclose(in_fp);
            return 1;
        }
    }
    fclose(in_fp);
    // 打印原始数组到屏幕
    printf("原始数组:\n");
    for (i = 0; i < N; i++) {
        printf("%d ", array[i]);
    }
    printf("\n\n");
    // 修改数组元素
    for (i = 1; i < N - 1; i++) {
        // 取前后元素最后一位的绝对值,避免负数问题
        int prev_last = abs(array[i-1] % 10);
        int next_last = abs(array[i+1] % 10);
        int product = prev_last * next_last;
        // 乘积不为0才做除法,需要浮点数结果可把array定义为double类型
        if (product != 0) {
            array[i] = array[i] / product;
        }
    }
    // 输出修改后的数组到屏幕和文件
    out_fp = fopen("output.txt", "w");
    if (out_fp == NULL) {
        printf("无法打开output.txt文件\n");
        return 1;
    }
    printf("修改后的数组:\n");
    for (i = 0; i < N; i++) {
        printf("%d\n", array[i]);
        fprintf(out_fp, "%d\n", array[i]);
    }
    fclose(out_fp);
    return 0;
}

使用说明

  • 提前在程序同目录下创建input.txt文件,写入20个整数,用空格/换行分隔即可
  • 程序运行后会先在控制台打印原始数组,再逐行打印修改后的数组
  • 修改后的数组会同步写入同目录下的output.txt文件
  • 如果需要除法结果保留小数,可将array数组的类型从int改为double,对应修改输出格式符为%lf即可

内容的提问来源于stack exchange,提问作者Дмитрий Благодер

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:36:03