前面我們已經學會了,如何通過while循環,並結合暫停命令sleep,清屏命令system(“cls”)來實現60秒倒計時。接下來我們將通過這些命令,來實現奔跑的字母H這個小程序。
**算法分析:****如何希望字母H從屏幕的左邊跑到屏幕的右邊呢?**也就是說第一秒的時候字母H在屏幕的第一行第一列,第二秒的時候字母H在屏幕的第二行第二列,第三秒時在屏幕的第三行第三列,以此類推。該如何實現呢?深入分析,我們知道,如果直接使用printf(“H”); ,字母H就會出現在屏幕的第一行第一列。那如何讓字母出現在屏幕的第二行第二列,第三秒出現在屏幕的第三行第三列呢?我們可以用“空格”佔位來實現。也就是說,在輸出時先輸出一個空格,再輸出字母H,即printf(" H"); ,在H左邊加一個空格來填充第一列,這樣H就會出現在第二列。同樣,如果希望字母H出現在第一行第三列,只要在輸出的時候,在H的左邊輸出兩個“空格”就好了。即printf(" H"); 。好,我們來嘗試一下。
#include<stdio.h>
#include<stdlib.h>//調用system函數
#include<windows.h>//調用Sleep函數。S是大寫的。
main()
{ system("color f4");
system("cls");
printf("H");
Sleep(1000);
system("cls");
printf(" H");
Sleep(1000);
system("cls");
printf(" H");
}
怎麼樣?字母H從左邊向右邊移動了三步。用這種方法,我們也可以讓字母移動50步,但是如果向上面這樣寫,我們需要複製粘貼50次,然後每一次都要修改printf語句裏H前面的空格數,好麻煩。我們仔細分析一下上面的代碼,有三個部分基本相同,只有printf語句裏H前面的空格數不同,在第一部分字母H前面有0個空格,在第二個部分字母H前面有一個空格,在第三個部分字母H前面有兩個空格。好了,只需要解決重複的做按空格這件事—第一部分字母H前面有0個空格,在第二個部分字母H前面有一個空格,在第三個部分字母H前面有兩個空格,重複的操作交給計算機,我們來喝奶茶。可以用while循環來解決這個問題。
強調一下,我們需要解決的是:循環一次H在第一行第一列,即H前面有0個空格,循環兩次H在第一行第二列,即H前面有一個空格,循環三次H在第一行第三列,即H前面有兩個空格。我們發現空格的變化規律是:0,1,2.這與變量a的變化規律是一樣的,第一次循環a的值爲0,第二次循環a的值爲1,第三次循環a的值2。也就是說,每次打印H的時候,同時在H的前面打印a個空格。**如何實現每次循環的時候,打印a個空格呢?**可以用循環嵌套來實現。
完整代碼如下:
#include<stdio.h>
#include<stdlib.h>//調用system函數
#include<windows.h>//調用Sleep函數。S是大寫的。
main()
{ system("color f4");
int a,b;
a=0;
while(a<=2)
{ system("cls");
b=1;
while(b<=a)
{ printf(" ");//重複要做的事情是按空格。
b++;
}
printf("H");//重複要做的事情是輸出H。
Sleep(1000);
a++;
}
}
在上述代碼中,我們用外層循環來控制字母H的運動規律,用內層循環來實現字母H每運動一步需要打印多少個空格的規律。