印出黑白相間的臉(用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