印出黑白相间的脸(用do while写)

Home Home
引用 | 编辑 csr
2011-03-12 07:48
楼主
推文 x0
大大们
小弟用for,while,写都没问题
但是要使用do while就是会造成回圈或写不出来
不知小弟那里有错
可否麻烦大大们帮小弟修改
否则都快疯了
以下是程式码
谢谢
#include<stdio. ..

访客只能看到部份内容,免费 加入会员



献花 x0
引用 | 编辑 星辰雪
2011-03-13 21:03
1楼
  
我修改了一下
但是不知道
你要的答案 是如何
你先看一下吧

复制程式
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
  int i=0,j=0;
  do
  {
    do
    {
      if((i+j)%2==0)
         printf("%c",2);
      else
         printf("%c",1);
         i++;
      }while(i<=10);
      printf("\n");
         j++;
      }while(j<=10);
  system("pause");
  return 0;
}

建议一下 贴程式码最好是用 >>>> 插入代码<<<<
这功能比较好
还有程式码 需要排版一下....

可以参考一下 这个网站   程式语言教学志

献花 x1
引用 | 编辑 csr
2011-03-14 08:56
2楼
  
小弟现无法详细跟大大回答
等晚上有空再看程式跑的怎样
大大提供的这个网站小弟已经有拜访过
(可以参考一下 这个网站   程式语言教学志 )
但是还是写不出来
所以才跟大大讨救兵
谢谢

献花 x0
引用 | 编辑 totsi
2011-03-14 10:42
3楼
  
一楼的解法有改掉回圈不会结束的问题。

不过在i <= 10的时候,会第一行印出11个图形。

之后当i >10以后,每换一行ˊ只会印出1个图形。

建议if..else还是使用"{","}"包起来,不然底下的i++不晓得是条件成立才加,还是每次都加。

如果是要每行都有11个图形的话,可以像底下的作法。
(只贴do里面的,其他不变的就不贴了)
复制程式
       do
       {
              i = 0;
              do
              {
                     if((i+j)%2==0)
                     {
                            printf("%c",2);
                     }else{
                            printf("%c",1);
                     }
                     i++;
              }while(i<=10);
              printf("\n");
              j++;
       }while(j<=10);

不过我比较好奇的是,楼主为什么要在第一个do..while里面把j也设为0?

题外话,楼主的闰年问题,已经有附专案到在下回覆的主题内。所以有空可以去看看。在下是用vs2005,所以如果vs2010不能编译的话,设定部分可能就要麻烦楼主去找一下噜。
里面用到的都是vc++内建的东西,所以应该是不用改设定才对。


图 1.
Result

献花 x2
引用 | 编辑 csr
2011-03-14 15:23
4楼
  
下面是引用 totsi 于 2011-03-14 10:42 发表的 : 到引言文
一楼的解法有改掉回圈不会结束的问题。
不过在i <= 10的时候,会第一行印出11个图形。
之后当i >10以后,每换一行ˊ只会印出1个图形。
建议if..else还是使用"{","}"包起来,不然底下的i++不晓得是条件成立才加,还是每次都加。
如果是要每行都有11个图形的话,可以像底下的作法。
.......

大大您好
小弟用dev c++编译后怎么会只有一行
而不是大大所得的结果图
以下是小弟加上大大的改正编码是否可请大大再帮小弟的程式看看
到底是那里小弟放错地方了
谢谢

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int i,j;
      do
      {
          i = 0;
          do
          {
              if((i+j)%2==0)
              {
                  printf("%c",2);
              }else{
                  printf("%c",1);
              }
              i++;
          }while(i<=10);
          printf("\n");
          j++;
    }while(j<=10);

    system("pause");
    return 0;
}

献花 x0
引用 | 编辑 星辰雪
2011-03-14 16:45
5楼
  
复制程式
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int i=0,j=0; // 这边要设定成0... //
      do 
      { 
        i = 0; 
        do 
        { 
              if((i+j)%2==0) 
              { 
                  printf("%c",2); 
              }else{ 
                  printf("%c",1); 
              } 
              i++; 
        }while(i<=10); 
        printf("\n"); 
        j++; 
    }while(j<=10);

    system("pause");
    return 0;



献花 x2
引用 | 编辑 totsi
2011-03-14 16:53
6楼
  
诚如同星辰雪大大所言~

用来作计算数量的变数,一定要归零。

所以养成好习惯就是,每当有变数宣告,就要将他进行初始化。

避免使用到的时候,忘记设定,就会出现问题了。

献花 x1
引用 | 编辑 csr
2011-03-14 16:57
7楼
  
下面是引用 totsi 于 2011-03-14 16:53 发表的 : 到引言文
诚如同星辰雪大大所言~

用来作计算数量的变数,一定要归零。

所以养成好习惯就是,每当有变数宣告,就要将他进行初始化。

避免使用到的时候,忘记设定,就会出现问题了。

建议if..else还是使用"{","}"包起来,不然底下的i++不晓得是条件成立才加,还是每次都加。

大大您好
上面这段话书本没有
是否可麻烦您再解释清楚一点
好不好
因为使用for ,while 并不需要如此设定
为何这里要加大括号包起来
它的用意跟使用方法是怎么讲呢
谢谢

献花 x0
引用 | 编辑 totsi
2011-03-14 19:51
8楼
  
其实那个东西就跟你宣告function或是structure的时候会用到的。

具我所知,那个作法称作scope,也就是跟compiler说scope里面的code是在一起的。

再者,你有加scope的话,看程式的时候也会比较清楚。

至于不加,会不会造成误判,我这边测试是会的,理论上我就不晓得了


那有待强者来补充XD

献花 x0
引用 | 编辑 星辰雪
2011-03-14 22:01
9楼
  
我是觉得
习惯问题吧
1. 排版
2. 注解

这样比较好阅读
和找错误

可能 程式语言学
上课时候会教吧
..忘记了

献花 x0
引用 | 编辑 csr
2011-03-15 09:31
10楼
  
感谢两位大大解说
不懂处小弟再找资料求证
现在小弟进度可以往下一章指标与阵列了
谢谢

献花 x0