如何使用for循环更改c中数组的每个第二个元素?

时间:2013-09-26 04:14:55

标签: c arrays for-loop

我正在使用for循环来创建一个100元素的char数组。我在第一次运行时,我想将其所有值更改为1,第二次运行,我希望其每秒值为0

char array[ 100 ] = { 0 };

int toggle_swith(char a[]) {
    for (i = 0; i < 100; i++) {
        printf(array[i] + "1 ");
    }
}

int main( void ) {
    int i;
    for (i = 0; i < 100; i++) {
        printf(array[i] + "0 ");
        toggle_switch();
    }
}

4 个答案:

答案 0 :(得分:2)

您需要一个初始化数组的函数:

void InitializeArray(char Array[], int Length) {
  int i;
  for (i = 0; i < Length; i++) {
    Array[i] = '1';
  }
}

你需要一个改变每个第二个元素的函数:

void ChangeEverySecondElement(char Array[], int Length) {
  int i;
  for (i = 1; i <  Length; i += 2) {
    Array[i] = '0';
  }
}

您需要一个函数来打印数组:

void PrintArray(char Array[], int Length) {
  int i;
  for (i = 0; i < Length; i++) {
    putchar(Array[i]);
    putchar(' ');
  }
  putchar('\n');
}

然后你需要把它们放在一起

int main() {
  char Array[100];
  InitializeArray(Array, 100);
  PrintArray(Array, 100);
  ChangeEverySecondElement(Array, 100);
  PrintArray(Array, 100);
  return 0;
}

如果您正在尝试学习C,我推荐我从Greg Perry撰写的 C by Example 中学到的这本书。

答案 1 :(得分:2)

你可以一次完成所有这些

for (i=0; i<100; i++) array[i]=(i%2)+'0';

典型的优化尝试可能如下:

#define BUFSZ 100
int main(){
    char buf[BUFSZ];
    int *bp=(int *)&buf, i=(BUFSZ/sizeof(int));
     /* handle aligned words 4 bytes at a time */
    while (i) bp[--i]='0101'; /* for 64 bit use '0101'|('0101' <<32) */
     /* handle unaligned bytes */
    for(i=(BUFSZ/sizeof(int))*sizeof(int);i<BUFSZ;i++)buf[i]=1-i%2+'0';
    write(1,buf,BUFSZ);
}

答案 2 :(得分:1)

最初,您希望将所有数组元素设为1 您可以使用memset

memset(array,1,100)

这将清除所有元素。但是如果你坚持使用循环那么,

#define ARRAY_SIZE 100
char array[ARRAY_SIZE] = {0};

for(int count = 0; count < ARRAY_SIZE; count++)
{
   array[count] = 1;
   //If you want to print it, use:
   printf("%d",array[count]; // You can also use %c
}

制作备用元素0,

for(int count = 0; count < ARRAY_SIZE; (count = count + 2)) //Count + 2 will hop every alternate element
{
     array[count] = 0;
}

同样,如果需要,可以添加printf()。

答案 3 :(得分:0)

Print语句看起来应该是这样的。

的printf( “%C0”,阵列[I]);

我建议你查阅初级C教程以获取更多信息。