[英]bits and arrays in C - New to programming
我有一個學校給定的代碼,我需要這個作為我的 output:Digital Binair 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++)
我如何使循環 go 從000
到001
到010
。
雖然有很多方法可以生成二進制序列,但這里的任務似乎是故意復雜化(或變得有趣)的,因為您只在指定的位置修改代碼,並且使用前一個的內容初始化每個連續的字符串一。
arrays 除了讓您思考之外沒有其他目的 - 它純粹是學術練習,而不是實際應用。 每個字符串都使用前一個字符串的內容進行初始化(您必須添加的代碼將對其進行修改),練習的目的是在每次迭代時執行二進制“加 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.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.