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

如何确保C语言数组的赋值结果在循环外仍可正常读取?

问题分析与解决方法

核心问题

  • 索引变量重复初始化:原代码中int k = 0;放在for循环内部,每次循环都会把k重置为0,导致所有赋值操作都只修改array[0],其他数组元素始终是默认的0.0。
  • 变量拼写错误:数组长度变量定义时写的是array_lenght(少了字母h),但循环输出时用的是array_length,这会导致变量未定义,编译器可能生成错误或使用垃圾值,影响循环执行逻辑。

修正后的代码

// 声明指定大小的数组
double array[50];

// 使用sizeof计算数组长度,用int类型更合理
int array_length = sizeof(array) / sizeof(array[0]);
printf("%d \n", array_length);

// 声明区间长度与增量变量
double length;
double deltaX;

// 计算区间差值与采样增量
length = Dmax - Dmin;
deltaX = length / 50;

printf("Delta x =  %lf \n", deltaX);

double i;
int k = 0; // 将索引变量移到循环外初始化
// 增加k的范围判断,避免数组越界
for(i = Dmin; i < Dmax && k < array_length; i+=deltaX)
{
    array[k] = i;
    double y = A * cos(i/B) + C * sin(i) + D;
    printf("For a sample of %lf, the assigned function is %lf \n", array[k], y);
    k++;
}
    
printf("Elements of original array: \n");    
for (int i = 0; i < array_length; i++) {      
    printf("%lf ", array[i]);    
}    

修改说明

  1. 把k的声明移到循环外,让它在整个循环过程中持续自增,依次给数组的每个元素赋值。
  2. 修正数组长度变量的拼写错误,同时改用int类型(数组元素个数是整数,用double类型没有意义)。
  3. 在循环条件中加入k < array_length,防止索引超出数组范围,避免数组越界问题。

内容的提问来源于stack exchange,提问作者Szymon0202020

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:50:25