2016-01-29 88 views
2
void checker(int width,int height){ 
    int horizontal; 
    int repeat; 
    int i; 
    int j; 
    for(j=1; j<=height; j++){ 
     while(horizontal<=width){ 
      repeat = width/10; 
      if(horizontal%2){ 
       for(i = 1; i <=repeat; i++) 
        printf("1"); 
      } 
      else{ 
       for(i = 1; i <=repeat; i++) 
        printf("0"); 
      } 
      horizontal++; 
     } 
     printf("\n"); 
    } 
} 

int main(){ 
    checker(20,10); 

    return 0; 
} 

所以我創建通過C的圖案,你可以從我的代碼,我幾乎沒有得到C的竅門當我告訴編譯和測試該模式不打印出0和1,而只打印\ n。錯誤使用C程序(循環)

我想知道爲什麼,我可能會有一個大腦放屁。

謝謝你的時間,這是非常感謝像我這樣的新來者!

+0

您應該發佈您期望看到的內容。人們很難猜測你想從非工作代碼中得到什麼! – kazagistar

+1

用所有警告和調試信息編譯你的代碼(如果使用[GCC](http://gcc.gnu.org/)...,那麼'gcc -Wall -Wextra -g')。學習**使用調試器**('gdb') –

+0

未初始化的變量可能會導致您的問題。 – ryyker

回答

1

修改/添加線(S):

int horizontal;//not guaranteed to be zero 

int horizontal = 0;//guaranteed to be zero 

否則,這種說法可能永遠不會進入括號

while(horizontal<=width){ ... 

另外(不是必需的,但也許很高興有)在int j;之後加上這一行...

... 
int j; 

if((width < 0) || (height < 0)) return; //prevent negative input values 
3

水平未正確初始化。現在你正在內存中使用垃圾值。在嘗試使用它之前給水平一個適當的值。

2

水平尚未初始化。與某些語言不同,C不會將一個非靜態局部變量默認爲0.它只是在內存中發生的任何值。

+1

'C不會默認值爲0'你確定嗎?例如,如何存儲在數據段中的'global'和'static'變量? – Michi