程式設計菁英班
問題分析
C++ 標頭檔
#include<iostream>
#include<cstdlib>
using namespace std;
程式邏輯
即使對程式語言所有語法都十分熟悉,但是如
果遇到問題不知如何解決,又要如何寫程式
要觀察問題的特性、思考解決的步驟
如果問題很複雜,可以先用假資料加快驗證程
式的速度
養成對變數加以註解的習慣
養成寫完一小段程式就測試的習慣
練習
如何在印星號時,只用 cout<<“*”;
而不是用 cout<<”**********”;
如何在程式中調整列印星號的行數及每一行的星星數
請根據剛剛的經驗,完成以下的圖形
請根據剛剛的經驗,完成以下的圖形
while 迴圈
與 for 迴圈的目的相同,重覆執行一段程式
語法
while( 執行條件 )
{
動作 1;
動作 2;
動作 3;
}
與 for 迴圈的語法比較
for( 起始值 ; 執行條件 ; 增減 值 )
{
動作 1; 動作 2; 動作 3; }
while 不需要 起始值和增減
值嗎 ?
while 迴圈
for(i=0;i<10;i++)
{
動作 1;
動作 2;
動作 3;
}
i=0; // 起始值在迴圈外面
while(i<10)
{
動作 1;
動作 2;
動作 3;
i++; // 增減值在迴圈裡面
}
練習
請用 while 迴圈完成以下的圖形
取餘數
除法 “ / ”
a=4/2;
a=4/3;
取餘數 “ %”
a=4%2;
a=4%3;
請設計一個程式,輸入任一數,若該 數是偶數,則直接輸出該偶數,若是 奇數,輸出小於該數的最大偶數
輸入 20 ,輸出 20 輸入 17 ,輸出 16
練習
輸入兩個正整數,並求其最大公因數
輸入一串數字,輸出其反向排列的結果
if 判斷
語法
if( 判斷條件 )
{
動作 1;
動作 2;
} else
{
動作 3;
若判斷條件 為真
若判斷條件 為假
a=10; b=0; if(a>5) {
a--; b+=a; } else {
a++; b*=a;
練習
輸入一個整數,輸出其絕對值
輸入一個分數,輸出結果是”及格”或”不及
格”
輸出如下圖
a005: Eva 的回家作業
Eva 的家庭作業裏有很多數列填空練習。填空
練習的要求是:已知數列的前四項,填出第五
項。因 為已經知道這些數列只可能是等差或
等比數列,她決定寫一個程式來完成這些練習
輸入 1 2 3 4
輸出 1 2 3 4 5
輸入 1 2 4 8
輸出 1 2 4 8 16
if 的另一種寫法
多重 if 判斷
語法
if( 判斷 1)
動作 1;
else if( 判斷 2)
動作 2;
else if( 判斷 3)
動作 3;
else
考試題目有 100 題
答對題數在 0~10 者,每題給 6 分
題數在 11~20 者,從第 11 題開始,每題給 2 分。
題數在 21~40 者,從第 21 題開始,每題給 1 分。
題數在 40 以上者,一律 100 分。
請設計一個程式,輸入答對的題數,輸出成績
練習
a007: 質數判斷
輸入一個 x>=2 ,請判斷是否為質數
a006: 一元二次方程式
求一元二次方程式 ax2+bx+c=0 的根
輸入三個整數 a, b, c
如果沒有實根,輸出 No real root
如果兩根相同,輸出 Two same roots x=??
如果相異實根,輸出 Two different roots x1=?? , x
練習
閏年判斷
輸入西元年,請判斷是否為閏年
西元年被 4 整除或被 400 整除
不被 100 整除,者即為閏年
如 :1600, 1992, 1996, 2000, 2012 是閏年
1800, 1900, 2100 不是閏年
練習
a003: 兩光法師占卜術
他的占卜規則很簡單,規則是這樣的,輸入一個日 期,然後依照下面的公式:
M= 月 D= 日
S=(M*2+D)%3
得到 S 的值,再依照 S 的值從 0 到 2 分別給 與 “普通”、“吉”、“大吉”等三種不同的運勢
輸入月份及日期,輸出運勢