要求一:
已完成PTA第六周作業所有題目
要求二:
題目7-1 高速公路超速處罰
1.實驗代碼
#include <stdio.h>
int main()
{
int c,x;
scanf("%d %d",&c,&x);
if(c<x*1.1)
{
printf("OK\n");
}
else if(c>=1.1*x&&c<1.5*x)
{
float d=100*(c-x)/(float)x;
printf("Exceed %.0f%%. Ticket 200\n",d);
}
else
{
float d=100*(c-x)/(float)x;
printf("Exceed %.0f%%. License Revoked\n",d);
}
return 0;
}
2.設計思路
(1)算法
第一步:設置車速、限速的值c、x為整形變量;
第二步:輸入c、x的值;
第三步:設置超出了限速百分之多少的值d為float形
第四步:寫if循環語句
如果沒超出本車道限速的10%,則輸出OK,如果超出本車道限速的10%且小於50%,則輸出"Exceed d% Ticket 200“,如果超出本車道限速的50%及以上,則輸出“Exceed d%. License Revoked”。
注意:由於d為浮點形,在計算d的時候它的運算所用到的量也要換為浮點形的。
(2)流程圖
3.本題調試過程碰到問題及解決辦法
因為本題以前做過,所以在這次調試中並未遇到問題。
4.本題PTA提交列表
題目7-2 計算油費
1.實驗代碼
#include <stdio.h>
int main()
{
int a,b;
char c;
double d;
scanf("%d %d %c",&a,&b,&c);
if(b==97)
{
if(c=='m')
{
d=(7.93*a)*0.95*1.0f;
}
else
{
d=(7.93*a)*0.97*1.0f;
}
}
else if(b==93)
{
if(c=='m')
{
d=(7.44*a)*0.95*1.0f;
}
else
{
d=(7.44*a)*0.97*1.0f;
}
}
else
{
if(c=='m')
{
d=(6.95*a)*0.95*1.0f;
}
else
{
d=(6.95*a)*0.97*1.0f;
}
}
printf("%.2lf",d);
return 0;
}
2.設計思路
(1)算法
第一步:設置加油量a,品種b為整形變量,服務類型c為字符變量,應付款額d為double形變量;
第二步:輸入a,b,c的值(其中c的值為字符);
第三步:寫if循環語句
如果97號汽油的時候,m服務等級時,應付款額為7.93a0.95,e服務等級時,應付款額d為7.93a0.97
如果93號汽油的時候,m服務等級時,應付款額為7.44a0.95,e服務等級時,應付款額d為7.44a0.97
如果90號汽油的時候,m服務等級時,應付款額為6.95a0.95,e服務等級時,應付款額d為6.95a0.97;
第四步:輸出應付款額d的值。
注意:本題涉及到字符變量,在輸入字符的時候要加‘單引號’。
(2)流程圖
3.本題調試過程碰到問題及解決辦法
(1)問題
由圖得,本題是答案錯誤。
(2)解決辦法:向老師詢問得知,把float改為double即可。(因為對於本題float沒有double精准,而且還有一個學長(一班的助教)建議我們盡量用double)
4.本題PTA提交列表
題目7-3 比較大小
1.實驗代碼
#include <stdio.h>
int main()
{
int a,b,c,d;
scanf("%d %d %d",&a,&b,&c);
if(a>=b&&b>=c)
{
d=a,a=c,c=d;
}
else if(b>=a&&a>=c)
{
d=a,a=c,c=b,b=d;
}
else if(a>=c&&c>=b)
{
d=a,a=b,b=c,c=d;
}
else if(b>=c&&c>=a)
{
d=b,b=c,c=d;
}
else if(c>=a&&a>=b)
{
d=a,a=b,b=d;
}
else
{
a=a,b=b,c=c;
}
printf("%d->%d->%d",a,b,c);
return 0;
}
2.設計思路
(1)算法
第一步:設置a,b,c,d四個數為整形變量;
第二步:輸入a,b,c;
第三步:寫if語句
我的思路:本題為比較大小,那我就默認為a<b<c,然后如果真實的數值與默認的不相符,那就用老師講的水杯法(就是a,b兩杯水要交換,需要再找一個杯,然后在相互交換)進行交換;
第四步:輸出結果。
(2)流程圖
3.本題調試過程碰到問題及解決辦法
(1)問題
從題目來看,我是部分正確。
(2)解決辦法:我又仔細的看了我的代碼,發現我在賦值的時候(給讓a,b,c的值從小到大)賦值錯了,改正即可。
4.本題PTA提交列表
題目7-4 兩個數的簡單計算器 (必須使用switch結構實現)
1.實驗代碼
#include <stdio.h>
int main()
{
int a,b;
char c;
scanf("%d %c %d", &a,&c,&b);
int d;
switch (c){
case '-':
{
d=a-b;
printf ("%d\n", d); break;
}
case '+':
{
d=a+b;
printf ("%d\n",d); break;
}
case '*':
{
d=a*b;
printf ("%d\n",d); break;
}
case '/':
{
d=a/b;
printf ("%d\n",d); break;
}
case '%':
{
d=a%b;
printf ("%d\n",d); break;
}
default:printf("ERROR\n");
}
return 0;
}
2.設計思路
(1)算法
第一步:設置a,b,d為整形變量,c為字符變量;
第二步:寫switch語句
確定c為那個可以變化的量,然后,當c取各種不同符號的時候,寫應有運算步驟,如果題目給的字符寫完了,就寫defaul;
第三步:輸出d。
注意:字符要用’單引號‘
(2)流程圖
3.本題調試過程碰到問題及解決辦法
(1)問題
由圖得,本題為編譯錯誤。
(2))解決辦法:
編譯錯誤就是編譯的不正確,因此看看字母大小寫,有無括號,中英文什么的有沒有錯誤,最后發現落了一個括號,改正即可。
4.本題PTA提交列表
要求三:
(1)Git地址:https://git.coding.net/jsjyuyaosong/usth--work.c.git
(2)上傳截圖
要求四:
個人總結
(1)本周你學習了哪些內容?收獲了什么?
答:我學習了switch語句,此語句也是進行選擇判斷的,但有時比if方便。
(2)本周所學內容中你覺得哪些是難點?有哪些知識點還不明白?
答:我覺得switch這個新學的語句就是重點,對於知識點的掌握還不太熟練,具體在框架不是很熟,其它的都好。
(3)你對目前老師的上課形式有什么意見或建議?
答:我認為老師講的形式很好,並無意見。
要求五:
互評和學習進度
1、作業互評
(1)金海東:http://www.cnblogs.com/jhd1127/p/7811138.html
(2)李銳:http://www.cnblogs.com/572453251asd/p/7811205.html
(3)王姝雯:http://www.cnblogs.com/phsudie/p/7801346.html
2、學習進度