我写了这个简单的代码来计算从1到1000的数字,它们是3的倍数,然后将它们存储在一个数组中然后打印数组。
#include <stdio.h>
void main(void){
int i,x,y;
int A[1000];
for(i=1;i<1000;i++){
x=i%3;
if(x==0){
A[i]=i;
printf("%d\n",A[i]);
}
}
}
代码工作正常,但我想问的是,数组是否会开始存储A [0]或A [1]的值?因为循环计数器i = 1。
答案 0 :(得分:1)
由于您设置数组条目值的唯一位置是:
A[i]=i;
并且我从1开始并且没有以任何方式设置,第一个要设置的条目当然是A[1]
。
答案 1 :(得分:1)
当i = 1时,数组将开始存储索引1的值作为循环开始。 索引0处的值将保持不变。 但你的逻辑错了。如果你打印数组A [],它将打印垃圾值 对于不是3的倍数的数组索引。
答案 2 :(得分:1)
你说“代码工作正常”。这让我大吃一惊。
我不确定你想对你的数据做什么,但是你可能想要这样的东西你正在寻找一个3的倍数的数字数组:
#include <stdio.h>
int main(void){ // <<<< int, not void!
int i,x,y;
int A[1000];
y = 0;
for(i=0;y<1000;i++) // <<<<< keep looping until array is full, --> test for y not i
{
if(i%3 == 0) // <<<<< no need to assign the result to x
{
A[y++]=i; // fill array only when i%3 == 0; only then increment index count
printf("Value %d is divisible by 3\n", i);
}
}
}