iT邦幫忙

2021 iThome 鐵人賽

DAY 19
1
Software Development

C 語言的簡單入門系列 第 19

【Day 19】while 迴圈 / for 迴圈的範例講解

  • 分享至 

  • xImage
  •  

今天,我們來講講昨天練習作業的程式碼吧~
這是我的程式碼 - while 迴圈:

#include<stdio.h>
int main(){
	int i = 0 , j = 0, input;
	printf("Please input a number>> ");
	scanf("%d", &input);
	while(i < input){
		j = 0;
		while(j <= i){
			printf("*");
			j++;
		}

		printf("\n");
		i++;
	}
	return 0;
} 

輸出結果:

我的解題思路:

  1. 由題目可知:如果輸入 5,輸出要是 5 行星星,且第幾行就要有幾個星星,所以,第一個想法是:會用雙迴圈去做,第一個(外層)的迴圈控制行數,第二個(內層)迴圈控制一行的星星數
  2. 兩個迴圈當然要宣告兩個變數(ij)控制,再加上一個要控制最多幾行、也就是我們的輸入(input),所以總共宣告了三個 int 型態的變數。
  3. 先提示輸入(printf()scanf()),我們輸入的資料放在變數 input 裡。
  4. 外層迴圈是控制行數的,因為初始值為 0,所以,條件要寫小於 input 時,才執行。(這樣會剛好執行 input 次)
  5. 內層迴圈是控制一行的星星數,這時候觀察題目給的圖,星星數是隨著行數遞增,所以,控制星星數的條件一定是會變動的值。我們用 ij 一起控制。然後因為初始值 i = j = 0 ,如果條件放(j < i),輸出結果會先空一行(第一次內層迴圈不會執行),並不是我們要的,所以應該加上""較為合適。
  6. 內層迴圈做完一次(印完一行)要跳行!且記得,印每行星星前,j 要記得歸零 !

接下來我們來看用 for 迴圈要怎麼寫:

#include<stdio.h>
int main(){
	int i, j, input;
	printf("Please input a number>> ");
	scanf("%d", &input);
	for(i=0; i<input; i++){
		for(j=0; j<=i; j++)
			printf("*");
		printf("\n");	
	}
	return 0;
} 

輸出結果:

其實會用 while 迴圈寫,用 for 迴圈應該也沒有太大的問題了~而且個人認為,以這題來說,for 迴圈似乎比 while 迴圈方便~因為,用 for 迴圈,就不會有忘記 ij 要記得更新的問題。

明天,我們來介紹"陣列"!!


上一篇
【Day 18】while 迴圈 / do...while 迴圈
下一篇
【Day 20】C 語言的陣列
系列文
C 語言的簡單入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言