2016-01-29 90 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