一,思維導圖
二,語法認識
1,if-else的用法
if (條件一) {
語句一;
}
else {
語句二;
}
問題:else與if的匹配關系不明確,導致程序異常。
解決方法:牢記else與離其最近的一個if配對,不與其他的if連用,並規范代碼書寫格式,使其看起來跟加清晰明了。
2,while語句的用法
while (循環條件) {
循環語句;
}
注意事項:while比較好用,基本上所有的循環結構都能用while寫。
3,for語句的用法
for(表達式1; 表達式2; 表達式3)
{
循環體語句
}
問題:進行編程時,用for循環時經常運行超時,控制不好循環次數。
解決方法:在使用for循環時,先在草稿紙上書寫一遍,確定准確無誤時,再謄寫到自己的代碼上。並多加練習,增加自己對for循環的理解,從根本上解決。
4,do-while的使用方法
do
{
循環體語句
}while(循環條件);
問題:剛開始使用時,無法理解他這個循環,這個循環的思路與其他的循環不同,導致自己總是寫錯。
解決方案: 理解此語句的循環原理和特殊的循環順序,多加訓練,當自己一看到問題就能判斷出是否用do-while語句時,就意味着對do-while有了比較正確的理解。
5,switch語句的使用方法
switch(整形表達式)
{
case 常量表達式1: 語句1;break;
case 常量表達式2: 語句2;break;
…
case 常量表達式n: 語句n;break;
default: 語句n+1;
}
注意事項:並不是所有的case后面都有break,需要合理的利用break的位置,來使自己的代碼更加簡單。
6.break以及continue 使用方法
switch(整形表達式)
{
case 常量表達式1: 語句1;break;
…
case 常量表達式n: 語句n;break;
default: 語句n+1;
}
for(表達式1; 表達式2; 表達式3)
{
語句1;
continue;
語句2;
}
注意事項: break語句可以出現在選擇結構和循環結構里,但continue語句只能用在循環語句中,continue語句使用后,本次循環直接結束,不再執行continue之后的語句,直接進行下一輪循環。
三,PTA分數截圖
2.2,2.3作業
4.1作業
第三章作業
四,PTA代碼分析
題目:
代碼:
#include <stdio.h>
int main()
{
int a,b;
char c;
double x;
scanf("%d %d %c",&a,&b,&c);
if (b==90&&c=='m') {
x = a*6.95*(1-0.05);
}
else if (b==90&&c=='e') {
x = a*6.95*(1-0.03);
}
else if (b==93&&c=='m') {
x = a*7.44*(1-0.05);
}
else if (b==93&&c=='e') {
x = a*7.44*(1-0.03);
}
else if (b==97&&c=='m') {
x = a*7.93*(1-0.05);
}
else if (b==97&&c=='e') {
x = a*7.93*(1-0.03);
}
printf("%.2f",x);
return 0;
}
思路:分析題目,將題中的油的種類與服務項目合成,分為六種情況,再依次求解。
錯誤歸納:
(1),過多的if-else,容易讓人頭腦混亂,無法有清晰的思路。
(2),忘記保留兩位小數,導致答案錯誤。
收獲:讓我更好的理解了if-else的用法,並鞏固了知識,夯實了基礎。
題目:
代碼:
#include <stdio.h>
int main()
{
int l,u,f;
double c;
scanf("%d %d",&l,&u);
if (l>u||l>100||u>100) {
printf("Invalid.\n");
}
else if (l<=u) {
printf("fahr celsius\n");
for(f=l;f<=u;f+=2) {
c = 5.0*(f-32)/9;
printf("%d%6.1lf\n",f,c);
}
}
return 0;
}
思路:首先分析輸入數據的值是否在給定范圍內,根據判斷結果,執行不同的操作,所以使用if-else,在一種情況中,我們需要依次加二的進行計算,所以使用循環結構。
錯誤歸納:
(1),不進行分情況,直接就就進入循環,只計算了第二種情況。
(2),對於其中給出“ 占據6個字符寬度,靠右對齊 ”,無法用代碼的形式表達出來。
收獲:我知道了占據n個字符寬度的表達方式,並鞏固了for循環的用法。
題目:
代碼:
#include <stdio.h>
#include <math.h>
int main()
{
int h,n,i;
double s,H;
scanf("%d %d",&h,&n);
s = h;
H = h*1.0/pow(2,n);
if (n==0) {
s = 0;
H = 0;
}
else if (n==1) {
s = s;
H = h;
}
else {
for(i=1;i<=n-1;i++) {
s=s+2.0*h/pow(2,i);
}
}
printf("%.1f %.1f",s,H);
return 0;
}
思路:通過在草稿紙上對球墜落的過程進行分析,了解球下落的過程,並用編譯器驗證自己的猜想是否正確,多次實驗,完善自己的代碼,最終得到結果。
錯誤歸納:
(1),主觀臆斷,以自己的第一映像去寫代碼,導致自己對過程不熟悉,從而全盤皆錯。
(2),只考慮到其中的某一方面,導致無法完美的解決問題。
(3),對於小數位的保留,沒有注意,導致答案錯誤。
收獲:讓我了解到編程也需要在草稿紙上先分析,在求解。
五,總結:
通過一個多月的學習,我了解到了C語言程序設計的一些基本知識,雖然我的技能不是很純熟,但一有了明顯的進步,我希望在未來能夠掌握更多的技巧與能力。