我正在使用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();
}
}
答案 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教程以获取更多信息。