石家莊市求實電腦職業培訓學校
全國計算機等級考試二級c語言程式設計
階段性知識點總結(4)
知識點範圍:第五章
第五章迴圈結構
根據條件的成立與否,某些語句被執行多次的結構被稱為「迴圈結構」
[, ] while當型迴圈的使用方法:【教程第50頁~55頁】
1、格式1:前測試當型迴圈。
while (條件)
2、格式2:後測試當型迴圈。
dowhile(條件);
3、【累加器】計算1+2+3+……+100的結果。
int i=0,sum=0;
while(i<=100)
printf(「sum=%d\n」,sum);
可將程式變為:
int i=2,sum=1;
while(i<=100)
printf(「sum=%d\n」,sum);
4、【連乘器】計算1*2*3*……*10的結果。
int i=2;
double s=1;
while(i<=10)
printf(「s=%lf\n」,s);
[, , ] for計數迴圈的使用方法【教程第55頁~57頁】
一、格式:
for(表示式1;表示式2;表示式3)
執行流程:(1)計算表示式1;
2)計算表示式2,看表示式2是否成立。
成立(表示式2結果為非0),轉向執行(3)。
不成立(表示式2結果為0),轉向執行(5)。
3)執行迴圈體。
4)計算表示式3,並轉向執行(2)。
5)退出迴圈,執行for迴圈以下的句子。
二、利用for迴圈實現累加器:
int i,sum=0;
for(i=0;i<=100;i++)
sum=sum+i;
printf(「sum=%d\n」,sum);
分析:1、for迴圈一般需要乙個迴圈變數(例如:i)。
2、表示式1決定了迴圈變數的初值。
3、表示式2決定了迴圈變數的終值。
4、表示式3決定了迴圈變數的步長。
根據迴圈頭分析迴圈體的執行次數:
for(i=1;i<=10;i++) 迴圈體執行次數:10次。
for(i=0;i<=10;i++) 迴圈體執行次數:11次。
for(i=1;i<10;i++) 迴圈體執行次數:9次。
for(i=1;i<=10;i+=2) 迴圈體執行次數:5次。
結論:迴圈體執行次數=
(1)初值《終值,則步長》0。
(2)初值《終值,則步長<0。
三、例項1:輸出所有的水仙花數。【各個位的立方和等於本身的三位數】
問題1:如何表示三個數字的立方和。
方法1:a*a*a+b*b*b+c*c*c
方法2:利用數學標頭檔案)所含有的庫函式。
abs(x),返回整型資料x的絕對值。
fabs(x),返回實型資料x的絕對值。
sqrt(x),返回x的算術平方根。
pow(x,y),返回x的y次方。
exp(x),返回自然對數底e的x次方。
問題2:如何表示三位數的各個位。
設三位數為i,則:
個位:i%10
十位:i/10%10
百位:i/100
# include <>
# include <>
main()
}[, ] 分析利用for迴圈實現的累加器程式。
int i,sum=0;
for(i=0;i<=100;i++)
sum=sum+i;
printf(「sum=%d\n」,sum);
1、for迴圈的三個表示式中,表示式1只執行了1次;表示式3的執行次數與迴圈體相同。
2、依據上述分析,表示式1可以刪除,放在for迴圈以外;表示式3可以刪
除,放在迴圈體以內。但是分號不能少。
int i=0,sum=0;
for(;i<=100;)
printf(「sum=%d\n」,sum);
將分號刪除的同時把for換為while,程式與利用while實現的累加器完全相同。說明for迴圈和while迴圈是可以互相轉換的。
3、表示式2也可以刪除,需要借助break形成非正常化出口。
int i=0,sum=0;
for(;;)
printf(「sum=%d\n」,sum);
4、結論:break只可以用於swithc體和迴圈體,在迴圈體中的功能為退出迴圈體,執行迴圈以下的語句。
[, ] 素數問題。【質數:只能被1和它本身整除的數】
一、輸出100以內的所有素數:
int i;
printf(「1\t2\t3\t5\t7\t」);
for(i=11;i<=97;i+=2)
if(i%3!=0 && i%5!=0 && i%7!=0) printf(「%d\t」,i);
注意:該種方法只適用於計算100以內的素數。
二、通用演算法:
1、讓任意數字x與2、3、4、……,相除,若餘數均不為0,則x為素數。
2、讓任意數字x與2、3、4、……,相除,若餘數均不為0,則x為素數。
【演算法1】利用迴圈終值判斷迴圈是否正常退出。
# include <>
include <>
main()
int x,i;
printf(「請輸入乙個整數:」);
scanf(「%d」,&x);
for(i=2;i<=sqrt(x);i++)
if(x%i==0) break;
if(i<=sqrt(x))
printf(「yes\n」);
else
printf(「no\n」);
} 【演算法2】利用標誌變數判斷迴圈是否正常退出。
# include <>
include <>
main()
int x,i,f=0;
printf(「請輸入乙個整數:」);
scanf(「%d」,&x);
for(i=2;i<=sqrt(x);i++)
if(x%i==0)
[, ] 斐波那契數列問題。
數列:1,1,2,3,5,8,13,……
數列特徵:數列中任意數為相鄰前兩數之和。
分析:在已知規律的情況下,至少知道前兩個數,數列才可以依次排開。
int f1=1,f2=1,f;
f=f1+f2;
f1=f2;
f2=f;
【題型1】輸出該數列的前20項,每五項一行。
# include <>
main()
} 【題型2】輸出該數列的第20項。
# include <>
main()
{ int f1=1,f2=1,f;
C語言知識點總結
char字元型 用於存放字元 變數賦值,初始化 int a 3 定義的同時初始化 a 6 9 定義後在程式中進行賦值 變數的值 只有在賦值操作時才會被改變,即將其放在等號左邊時才會改變它的值,或自增自減操作 a 5,a a 像a 3並未改變a的值,只是使用了a的值而已.自增自減運算 變數 變數,變數...
C語言知識點總結
c語言最重要的知識點 總體上必須清楚的 1 程式結構是三種 順序結構 選擇結構 分支結構 迴圈結構。2 讀程式都要從main 入口,然後從最上面順序往下讀 碰到迴圈做迴圈,碰到選擇做選擇 有且只有乙個main函式。3 計算機的資料在電腦中儲存是以二進位制的形式.資料存放的位置就是他的位址.4 bit...
C語言知識點總結
c語言知識點總結 1 一 常量 2 二 識別符號 2 三 變數 2 四 表示式 3 五 輸入輸出函式 4 六 c語言的語句 5 七 c程式的基本結構 5 八 選擇結構語句 5 if 表示式 語句1 else 語句2 5 條件運算子表示式1?表示式2 表示式3 6 switch語句 6 九 迴圈結構 ...