第六周作業


  • 要求二

題目7-1 高速公路超速處罰

1.實驗代碼

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int car,x;
 5     float percent;
 6     char ch='%';
 7     scanf("%d %d",&car,&x);
 8     if(car<0||x<=0)printf("the input is error");
 9     else if(car<x*1.1f)printf("OK");
10     else if(car<x*1.5f){
11              percent=(car-x)*100.0f/x;
12              printf("Exceed %.0f%c. Ticket 200",percent,ch);}
13     else{
14          percent=(car-x)*100.0f/x;
15          printf("Exceed %.0f%c. License Revoked",percent,ch);}
16     return 0;
17 }

2.設計思路

(1)主思路

  • 第一步:定義整數型變量car(車速)、x(限速),浮點數變量percent(超速百分比)和字符型定量ch(‘%’);
  • 第二步:用scanf函數讀入整數給car和x;
  • 第三步:用if elseif else函數結構先判斷輸入是否符合范圍,再判斷超速與否;
  • 第四步:其中若超速則判斷范圍並計算所對應的超速百分比並用printf函數輸出百分比(后跟‘%’字符定量)和相應的超速結果語句。

注解:本題細節問題要注意整數與浮點數的轉換和超速范圍的開閉區間。

(2)流程圖

3.本題調試過程碰到問題及解決辦法

printf函數中的%顯示不出來導致PTA部分錯誤。

解決辦法就是定義一個字符型定量ch=‘%’代替printf函數中原本的%符號。

4.本題PTA提交列表

部分錯誤即為上述遇到的問題。

 

題目7-2 計算油費

1.實驗代碼

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int a,b;
 5     char c;
 6     double money=0;
 7     scanf("%d %d %c",&a,&b,&c);
 8     switch(b)
 9     {        case 90:money=6.95*a;break;
10              case 93:money=7.44*a;break;
11              case 97:money=7.93*a;break;
12              default:printf("error\n");break;
13     }
14     if(c=='m')
15        money=money*0.95;
16     else
17        money=money*0.97;
18     printf("%.2lf",money);
19     return 0;
20 }

2.設計思路

(1)主思路

  • 第一步 :定義整數型變量a(加油量)、b(汽油品種),字符型變量c(服務類型)和浮點數變量money(應付款額);
  • 第二步:用scanf函數讀入整數給a和b,讀入字符給c;
  • 第三步:用switch語句以b的不同情況運行獲得相應種類汽油和油量的費用;
  • 第四步:用if-else語句對c進行類型的判斷並計算出對應折扣后的費用;
  • 第五步:用printf函數輸出最終結果money。

注解:本題細節問題要注意整數與浮點數的轉換和結果應保留兩位小數。

(2)流程圖

 

3.本題調試過程碰到問題及解決辦法

用if函數判斷字符變量時沒有用單引號括中,導致編程錯誤。

解決辦法就是用單引號括中m,即

4.本題PTA提交列表

第一個部分正確是由於浮點型變量用的float定義導致錯誤;

第二個部分正確是修改時程序時粗心順手刪掉了if函數中的符號導致錯誤。

 

題目7-3 比較大小

1.實驗代碼

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int a,b,c,x;
 5     scanf("%d %d %d",&a,&b,&c);
 6     if(a<b){
 7             x=a;
 8             a=b;
 9             b=x;}
10     if(a<c){
11             x=a;
12             a=c;
13             c=x;}
14     if(b<c){
15             x=b;
16             b=c;
17             c=x;}
18     printf("%d->%d->%d",c,b,a);
19     return 0;
20 }

2.設計思路

(1)主思路

  • 第一步:定義整數型變量a,b,c(三個比較大小的數字)和x(賦值過程中間變量);
  • 第二步:用scanf函數讀入整數給a,b,c;
  • 第三步:用三個if函數分別判斷每兩個數字的大小,再根據需要中途以x為中間變量進行賦值交換數字,最終使a,b,c大小呈依次遞增;
  • 第四步:用printf函數按照題目要求格式輸出即可。

注解:重點在於三個數字分別比較大小並按預定結果進行賦值交換,以及最終結果其間以“->”相連。

(2)流程圖

3.本題調試過程碰到問題及解決辦法

 本題為課堂練習固沒有錯誤,但是在具體編程進行數字交換時比較容易弄混。

4.本題PTA提交列表

 

題目7-4 兩個數的簡單計算器

1.實驗代碼

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int a,b;
 5     char ch;
 6     scanf("%d %c %d",&a,&ch,&b);
 7     switch(ch){
 8         case '+':printf("%d",a+b);break;
 9         case '-':printf("%d",a-b);break;
10         case '*':printf("%d",a*b);break;
11         case '/':printf("%d",a/b);break;
12         case '%':printf("%d",a%b);break;
13         default:printf("ERROR");}
14     return 0;
15 }

2.設計思路

(1)主思路

  • 第一步:定義整數型變量a,b(題目所要求的兩個整數)和字符型變量ch(用於switch循環);
  • 第二步:用scanf函數讀入整數給a,b和讀入字符給ch;
  • 第三步:用switch語句以ch的不同情況進行對應的代數運算並用printf函數輸出結果,其中存在其他字符另輸出“ERROR”。

注解:本題主要注意switch語句的格式規范以及輸入輸出的格式。

(2)流程圖

 

3.本題調試過程碰到問題及解決辦法

scanf函數讀入格式用“,”間隔導致PTA錯誤。

 將格式按題目要求改為空格間隔即可。

4.本題PTA提交列表

答案錯誤為scanf函數中忘記打入&符號導致錯誤;

部分正確為上述錯誤(即scanf函數讀入用“,”間隔)。

 

  • 要求三

上傳成功后coding.net項目的截圖

Git地址:https://git.coding.net/cyq1076926262/NO.4.git

 

  • 要求四

個人總結

(1)本周所學內容或收獲:

①鞏固了switch循環語句的用法;

②學習了while循環語句及do while結構;

③自學了for語句的用法;

④自學了pow函數的用法(用於C題庫第8題,以下百度搜索注意事項);

⑤修正了switch語句的流程圖畫法,如助教指出老師的錯誤之處,有時候老師的課件並不一定完美,我們更應該培養自身辨別能力。

(2)本周做學難點與不明白的知識點

我認為的難點:

①循環語句的運用;

②面對較復雜題目編程時如何精簡邏輯。

不明白知識點:

沒有未明白的知識點,只是新學習的循環語句還未熟練使用。

(3)對目前老師的上課形式有什么意見或建議:

希望將來專業課程的學習能更加注重編程問題。相比於花費更多時間做博客,我更願意平衡一下時間去做C題庫,因為通過本周C題庫的做題,我更願意也更有動力為了解題去學習新的語法、函數等等。當然關於博客的流程圖我覺得還是挺有意義的,很有助於整理思路,無論是題前題后。

<11.12補>通過今天QQ群里老師、助教、其他同學的對話,我也有所感想。

①首先是我不認為有那么多絕對的事,比如什么每道題必須有錯誤,所以我認為助教這一角色的定位也是靈活的,在我看來只要他能對我起到正面作用,我就支持,反之,我會提出,有要求就必完成式的做作業可能是我的習慣吧,所以對於非常非常嚴格的博客我並不抵觸,而通過其他觀念看待問題的同學當然會產生不同的反應;

②關於老師、助教、同學的關系,一千個讀者眼中有一千個哈姆雷特,我們每個人都各自有界定,我認為有一點不變的是他們的目的是教育學生而不是坑害學生,就嚴謹的思想來說,既然我想認真學習專業,為什么不多注意些呢;

③對於當前的每周作業來說,我也有一些我的意見,我認為更自由化的博客要求更能檢驗和提高我們的專業能力,總有人在努力,總有人更努力。

 

  • 要求五

1.點評作業

何宗彥http://www.cnblogs.com/hezongyan/)(1、14樓)

胡俊鮮http://www.cnblogs.com/123456hjx/)(3樓)

陳盈馳http://www.cnblogs.com/1999-cyc/)(1樓)

2.學習進度條(11/5 8:00~11/8 8:00)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM