对于C语言中的循环

时间:2014-11-08 19:08:52

标签: c

int i=0;
int array[1000]={0};
srandom(23523);
a0=random();
a1=random();
a2=random();
....
a999=random();   //a0,a1,...a999 are some random numbers
for(i=0;i<999;i++){
   ....
   //array[0]=a0 array[1]=a1 array[2]=a2....array[999]=a999
}

我的目标是将数组中的值更改为a0,a1 ... a999。 如何在C中使用for循环?

4 个答案:

答案 0 :(得分:3)

如果你已经知道你不需要循环的值。

int array[3]= { 0, 14, 22 };

答案 1 :(得分:0)

我会添加&#39; a&#39;将值赋入数组,然后将值添加到数组[arrayLength]

int main(){
int i=0, arrayLength=3;
int array[arrayLength]={543};  //int array with 5 element
int a0=0;
int a1=14;
int a2=22;
int aValues[3]={a0, a1, a2}
for(i=0;i<arrayLength;i++){
array[i]=aValues[i];
}
return 1;
}

答案 2 :(得分:0)

这应该适合你:

#include <stdio.h>

#define MAX_SIZE 3

int main() {

    int count;
    int array1[MAX_SIZE] = {5,4,3};
    int array2[MAX_SIZE] = {0, 14, 22};

    printf("Values before they get changed:\n");

    for(count = 0; count < MAX_SIZE; count++)
            printf("%d \n", array1[count]);

    for(count = 0; count < MAX_SIZE; count++)
        array1[count] = array2[count];

    printf("\nValues after they get changed:\n");

    for(count = 0; count < MAX_SIZE; count++)
        printf("%d \n", array1[count]);

    return 0;

}

输出:

Values before they get changed:
5
4
3

Values after they get changed:
0
14
22

答案 3 :(得分:0)

你无法做到你想要的。变量名在运行时不存在。没有办法让aN N在C中变量。无论如何,你需要明确地列出变量,你需要以正确的顺序列出它们,你需要在你写它们时知道变量的数量。

// copy variables one by one
array[0] = a0;
array[1] = a1;
array[2] = a2;

或者用指针:

// list the variables to create a pointer array, ending in NULL pointer
int *ptr_array[] = { &a0, &a1, &a2, NULL };

// optinal: assert that ptr_array is not too big
assert(sizeof(array)/sizeof(array[0]) >= sizeof(ptr_array)/sizeof(ptr_array[0])-1);

// copy using loop
for (i = 0 ; ptr_array[i] != NULL ; ++i) {
    array[i] = *(ptr_array[i]);
}

根据您的需要,您可以编写一个工具,该工具将生成执行其中一个的代码,这将扫描代码以获取一些特殊标记(注释或宏),提取变量名称并生成C源代码将执行上述操作之一的文件。但这应该是最后的手段,只有在找不到想要的方法时才使用,因为它需要编写代码生成器,并将其集成到构建过程中。无论您遇到什么样的实际问题,都可能有更好的解决方案。