簡體   English   中英

位和 C 中的 arrays - 編程新手

[英]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 從000001010

雖然有很多方法可以生成二進制序列,但這里的任務似乎是故意復雜化(或變得有趣)的,因為您只在指定的位置修改代碼,並且使用前一個的內容初始化每個連續的字符串一。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM