【问题标题】:A for loop in C using an arrayC中使用数组的for循环
【发布时间】:2014-05-08 18:00:44
【问题描述】:

我创建了一个名为 a 的数组,它可以容纳 100 个双精度值,

double a[100];

我将数组 a 的第一个元素设置为 NUM,这是在我的代码早期定义的符号常量。

a[0] = NUM

我很好奇如何编写一个 for 循环,将 a 的每个剩余值设置为前一个元素的值加上 0.1。例如,数组中的第二个元素是第一个加 0.1。我试过做

for(i=1; i<=99; i=+0.1)

但我认为我对i 的初始化有问题

【问题讨论】:

  • 您需要了解 for 循环的工作原理。

标签: c arrays loops for-loop


【解决方案1】:

使用i 来索引数组,而不是存储应该放在数组上的值。请记住,您可以使用表达式来访问数组,例如 a[i - 1]

for (i = 1; i < 100; i++)
    a[i] = a[i - 1] + 0.1;

【讨论】:

    【解决方案2】:
    int i;    
    for(i = 0; i < 100; i++)
           a[i] = NUM + 0.1 * i;
    

    别忘了告诉类型 int !

    【讨论】:

    • 不允许在循环中声明 int。必须在之前声明。
    【解决方案3】:
    int i = 0;
    
    for(i = 0; i < 100; i++){
        if (i == 0)
            a[i] = NUM;
        else
            a[i] = a[i - 1] + .1;
    }
    

    您的数组定义包括该步骤。因此,您的数组将在 1、1.1、1.2 处运行大约 1000 次,但 a[1.1] 不是数组的有效索引。使用 i 索引数组,然后检索上一个值设置下一个。

    【讨论】:

    • a[0] = NUM; for (i = 1...) 并省去重复/无意义的 if() 测试。
    • 这样会更有效率,但我选择更明确/更详细的例子。
    【解决方案4】:

    从你的问题我可以理解这是你的第一个 C/C++ 程序之一,所以我认为你需要从基本的东西开始,学习如何正确地做,然后才能优雅地做。

    http://ideone.com/RGZgXL

     for(i = 0; i < ARRAY_SIZE; i++) {
         if(i == 0) { // if we are on the first element, set it to NUM
             array[i] = NUM;
         } else { // otherwise make the sum
             array[i] = array[i-1] + STEP;
         }
     }
    

    在链接中你会找到代码和一些cmets,希望能帮助你理解它。

    干杯

    【讨论】:

    • 他们应该先设置array[0],然后从i = 1开始循环;否则你最终会在你的循环中得到一个毫无意义的分支。
    • 是的,我知道。但是通过这种方式,代码我更清楚,因为尊重他如何描述问题。之后他将能够修复它:)
    猜你喜欢
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多