0

我正在使用 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

4 回答 4

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,我推荐我从中学习的书,C by Example由 Greg Perry 编写。

于 2013-09-26T04:32:01.380 回答
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);
}
于 2013-09-26T04:53:46.207 回答
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()。

于 2013-09-26T04:31:24.343 回答
0

打印语句应该看起来像这样。

printf("%c0",array[i]);

我建议您查看初学者 C 教程以获取更多信息。

于 2013-09-26T04:23:37.433 回答