gpt4 book ai didi

c - C 中的位和数组 - 编程新手

转载 作者:太空宇宙 更新时间:2023-11-04 04:10:32 25 4
gpt4 key购买 nike

我有一个学校给定的代码,我需要这个作为我的输出:数码双星0 是 000,1是001,2是010,3是011,4 是 100,5是101,6是110,7 是 111 (3 位)

 I need to work with for loops, this is the given code:



#include <stdio.h>
#include <string.h>

#define ZERO '0'
#define ONE '1'

int main(void)
{
char rij[8][4];
int n, m;

strcpy( rij[0], "000" );
printf( "%s\n", rij[0] );

for ( n=1; n<8; n++ )
{
strcpy( rij[n], rij[n-1] );
printf( "%s\n", rij[n] );

// *ONLY ABLE TO TYPE IN HERE !!!! THE REST IS GIVEN !!!!*
}

for( n=0; n<8; n++ )
{
printf( "%i %s\n", n, rij[n] );
}

return 0;
}

我被困在如何制作一个使用位的 for 循环上。所以让我们说 for(n = 0; n < 8; n++)如何使循环形成 000001010 .

最佳答案

虽然生成二进制序列的方法有很多种,但这里的任务似乎被故意复杂化(或变得有趣),因为您只能在指定的位置修改代码,并使用内容初始化每个连续的字符串上一个。

除了让您思考之外,这些数组没有任何用处 - 这是一个纯粹的学术练习,而不是实际应用。每个字符串都用前一个字符串的内容初始化(您必须添加的代码将对其进行修改),练习的目的是在每次迭代时执行二进制“加 1”。

为此,从 LSB (rij[n][2]) 开始,如果数字是 ZERO,则将其设置为 ONE,然后移动到下一个 n,否则将其设置为零,并“进位”一个,对字符串 n 中的下一个最高有效位重复上述过程。

您可以在从 LSB (2) 索引到 MSB (0) 索引的循环中执行此操作,并在将任何位设置为 ONE< 时退出循环 (break)/

或者只需三位数,您就可以展开循环:

if( rij[n][2] == ZERO )
{
rij[n][2] = ONE ;
}
else
{
rij[n][2] = ZERO ;
if( ... // test next bit [1] - enough of a hint I think.

关于c - C 中的位和数组 - 编程新手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58086735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com