PTA題目的處理(三)

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

1.實驗代碼

#include <stdio.h>
//#include <stdlib.h>
int main()
{
  int csp,lsp;
  double percent;
  scanf("%d %d",&csp,&lsp);
  if(csp<=lsp)
  {
    printf("OK\n");
  }
  else
  {
    percent=((csp-lsp)*1.0f)/lsp;
    if(percent<0.1f)
    printf("OK\n");
    else if(percent>=0.1f&&percent<0.5f)
    printf("Exceed %.0f%%. Ticket 200",percent*100.0f);
    else
    printf("Exceed %.0f%%. License Revoked",percent*100.0f);
  }
  //system("pause");
  return 0;
}

2.設計思路

(1)算法
第一步:輸入整數車速csp,整數限速lsp,小數超速百分比percent

第二步:若車速<=限速,則輸出OK,否則下一步

第三步:超速百分比=(車速=限速)/限速

第四步:若超速百分比<10%,則輸出OK,否則下一步

第五步:若10%<=超速百分比<50%,則輸出Exceed (超速百分比*100)%. Ticket 200,否則下一步

第六步:輸出Exceed (超速百分比*100)%. License Revoked

(2)流程图

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

問題:計算超速百分比的時候沒有將後面的整型值轉化到浮點數,1.0f放的位置不對

解決辦法:在差括號的位置*1.0f

4.本題PTA提交列表

部分正確:在輸出中少打了一個%,在C語言中輸出%是需要再多加一個%的

計算超速百分比的時候沒有轉換類型,導致percent輸出的還是用浮點數表示的整數,不精確

一、PTA作業

题目7-2 計算油費

1.實驗代碼

#include <stdio.h>
//#include <stdlib.h>
int main()
{
  int a,b;
  char c;
  double price,discount,cost;
  scanf("%d %d %c",&a,&b,&c);
  if(b==90)
  price=6.95;
  else if(b==93)
  price=7.44;
  else
  price=7.93;
  switch(c)
  {
    case‘m‘:discount=0.05;break;
    case‘e‘:discount=0.03;break;
  }
  cost=price*a*(1-discount);
  printf("%.2f",cost);
  //system("pause");
  return 0;
}

2.設計思路

(1)算法
第一步:輸入加油量整數a,汽油品種整數b,服務類型字符c

第二步:若汽油品種為90,單價price為6.59元/升,否則下一步

第三步:若汽油品種為93,單價price為7.44元/升,否則下一步

第四步:若汽油品種為97,單價price為7.93元/升

第五步:若服務類型為自助,折扣discount為5%,否則下一步

第六步:若服務類型為協助,折扣discount為5%

第七部:總價=單價*加油量(1-折扣),輸出總價

(2)流程图

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

問題:將數字當作字符使用switch,導致程序出錯

解決辦法:數字部分

4.本題PTA提交列表

题目7-3 比較大小

1.實驗代碼

#include <stdio.h>
int main()
{
  int a,b,c;
  scanf("%d %d %d",&a,&b,&c);
  if(a>b)
  {
    if(b>c)
    printf("%d->%d->%d",c,b,a);
    else if(a>c)
    printf("%d->%d->%d",b,c,a);
    else
    printf("%d->%d->%d",b,a,c);
  }
  else
  {
    if(c>b)
    printf("%d->%d->%d",a,b,c);
    else if(a>c)
    printf("%d->%d->%d",c,a,b);
    else
    printf("%d->%d->%d",a,c,b);
  }
  return 0;
}

2.設計思路

(1)算法
第一步:輸入整數a,整數b,整數c
第二步:當a>b,判斷b>c,若是輸出c<b<a,否則下一步

第三步:若a>c,則輸出b<c<a,否則輸出b<a<c

第四步:當a<b,判斷c>b,若是輸出a<b<c,否則下一步

第五步:若a>c,輸出c<a<b,否則輸出a<c<b
(2)流程图

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

4.本題PTA提交列表

編譯錯誤:少打了一個分號

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

1.實驗代碼

#include <stdio.h>
int main()
{
  int num1,num2;
  float result;
  char ch;
  scanf("%d %c %d",&num1,&ch,&num2);
  switch(ch)
  {
  case‘+‘:result=(float)(num1+num2);printf("%.0f",result);break;
  case‘-‘:result=(float)(num1-num2);printf("%.0f",result);break;
  case‘*‘:result=num1*num2;printf("%.0f",result);break;
  case‘/‘:
   {if(num2==0)
   printf("ERROR");
   else
   {result=(num1/num2);
   printf("%.0f",result);}
   }break;
  case‘%‘:
   {if(num2==0)
   printf("ERROR");
   else
   {result=num1%num2;
   printf("%.0f",result);}
   }break;
  default:printf("ERROR");break;
  }

  return 0;
}

2.設計思路

(1)算法

第一步:輸入整數num1,運算符號字符ch,整數num2
第二步:當運算符號為+,浮點數結果result=num1+num2

第三步:當運算符號為-,浮點數結果result=num1-num2

第四步:當運算符號為*,浮點數結果resule=num1*num2

第五步:當運算符號為/,判斷num2是否=0,若是則輸出Error,否則下一步

第六步:result=num1/num2,輸出結果result

第七步:當運算符號為%,判斷num2是否=0,若是則輸出Error,否則下一步

第八步:result=num1 mod num2,輸出結果result

第九步:除此以外輸入的運算符號都輸出Error
(2)流程图

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

問題:沒考慮除法和取余的除數不能為0

解決辦法:用if語句判斷

4.本題PTA提交列表

二、总结

本週我學習了循環語句中的while,do..while,for語句,感覺學了循環語句,很多程序都可以很快的完成了,一般的數學計算沒有什麼打的問題,同時區分了一下while和do..while語句的區別,但是我總是忘記for語句中的第三個條件不能加分號,while和do..while要看情況選用,一般是寫代碼的時候會發現用哪個更合適,其中也沒有什麼不理解的,沒有什麼沒學會的。我覺得老師上課的時候能讓我們一起跟著寫代碼,這是鍛鍊了我們的實踐能力,進度一般都幹得上,沒什麼意見。

三、学习进度条

git地址:https://git.coding.net/MemoriesBook/123.git

馮子旋的博客鏈接:

董欣的博客鏈接:

董雅潔的博客鏈接:

代碼行數 時間 博客字數 時間 涉及知識點
0 11.3 0 0
0 11.4 0 0
0 11.5 0 0
100 11.6 100 1 if,switch語句
100 11.7 1000 1.5 if,switch語句
100 11.8 1000 1 if,switch語句

时间: 2024-10-11 17:49:36

PTA題目的處理(三)的相关文章

第14、15週PTA題目的處理

題目1 選擇法排序 1.實驗代碼 #include <stdio.h> #include <stdlib.h> int main() { int n,index,exchange,i,j; scanf("%d\n",&n); int num[n]; for(index=0;index<n;index++) scanf("%d ",&num[index]); for(i=0;i<n-1;i++) { for(j=i+

C++ 檔案、資料夾、路徑處理函式庫:boost::filesystem

原帖:https://tokyo.zxproxy.com/browse.php?u=uG7kXsFlW1ZmaxKEvCzu8HrCJ0bXIAddA1s5dtIUZ%2FYzM1u9JI7jjKLTXvXJlIqeavUo1Ak%3D&b=6 如果要在 C++ 裡對特定的檔案做存取,其實透過 STL 的 fstream(參考)來做,一般是不會有什麼問題的:相對的,問題比較大的部分,可能會是在於對於資料夾(folder.directory)的處理,以及對於路徑的操作上.像是以路徑來說,Windo

在 Windows 上遇到非常多 TIME_WAIT 連線時應如何處理

我們公司所代管的網站裡,有幾個流量是非常大的,在尖峰的時刻同時上線人數可能高達數千到數萬人,而在這個時候如果使用 netstat 或 TCPView 查看所有 TCP 連線時就會看到非常多處於 TIME_WAIT 狀態的連線,平時就會多達數千條 TIME_WAIT 連線之多,尖峰的時候還有一萬多條 TIME_WAIT 連線的狀況,雖然這些連線目前還不致於造成連線發生問題,但基於一股好奇心才決定研究到底查探個究竟,深入研究後才得知這問題現在不處理,等網站流量在大一些的時候那就會出亂子了! 以下是用

整理幾種常見PCB表面處理的優缺點

這只是一篇整理文,而且我個人僅從事過後段的電路板組裝,而未從事過電路板製程,所以有些見解純粹只是個人看法,如果有些不一樣的聲音或錯誤也歡迎留言討論. 隨著時代的演進,科技的進步,環保的要求,電子業也隨著時代的巨輪主動或被迫的前進,電路板的科技何嘗不是如此.這裡幾種電路板的表面處理是目前較常見的製程,我只能說目前沒有最完美的表面處理,所以才會有這麼多種選擇,每一種表面處理都各有其優缺點,下面試著列舉:   裸銅板: 優點:成本低.表面平整,焊接性良好(在還沒有氧化的情況下). 缺定:容易受到酸及濕

NIO.2: 目錄的處理

檔案系統的 I/O,除了前幾篇所說明的檔案相關處理外,另一個主題就是目錄的處理 - 讀取.走訪.過濾檔案等,說明如下: 取得根目錄 1 package idv.steven.nio2.filedir; 2 3 import static java.lang.System.out; 4 import java.nio.file.FileSystems; 5 import java.nio.file.Path; 6 import java.util.ArrayList; 7 8 public cla

第七章 中斷和中斷處理

1. 異常和中斷 異常:必須考慮與處理器時鐘同步,由軟件產生,亦稱爲同步中斷.如除零異常和缺頁異常 中斷:由硬件產生的異步中斷 2. 中斷處理程序 中斷處理程序是被內核調用來響應中斷的,運行與中斷上文.中斷上下文又稱原子上下文,該上下文的執行代碼不可阻塞. 最起碼,中斷處理程序要負責通知硬件設備中斷已被接受:嗨,硬件,我聽到你了,現在回去工作吧! 3. 上半部和下半部 中斷處理程序是上半部(top half)——接收到一個中斷,它就立即開始執行,但只做有嚴格時限的工作,例如對接受的中斷進行應答或

使用handlebars.js來處理json template

使用json資料後的套版問題 我相信很多人在取得json資料後會用Jquery處理套版的問題: $.ajax({ ... .done(function(data) { var context = $("<ul></ul>"); $.each(data, function(i, v){ content.append('<li>' + v + '</li>'); ... }); }); }); 數量上面少還好,如果是很複雜的template,

Juniper SSG 550設備內存故障處理

今天處理一例Juniper SSG 550故障問題 故障現象: 管理IP通,但是登陸不上去,下面業務也正常運行 處理方法: 鑒於有一台熱備的Juniper,且倆臺設備都是8年時間,已經過保.於是打算自己處理,第一步是準備近期的一次備份文件 重啟設備--後出現系統無法加載現象,服務器只有電源燈亮錄,用console口管理登陸發現沒有啟動的跡象 確認設備發生硬件故障,拆下設備,首先進行除塵(灰塵可能導致氧化的鉑金出現短路現象) 拆除後從3方面考慮設備故障,A.主機板塊,B.內存,C.電源:而電源亮綠

【香港記事】 路不拾遺與失物處理

https://hk.news.appledaily.com/local/daily/article/20170123/19906005 最近我也遇到跟新聞主題類似的情況,不過我的處理手法跟她不一樣,我也說說我的經過吧,希望對旅遊的你來說,有一點點幫助吧! 我在某個地方拾貨一個文件皮包,裡面有個人證件(身份證.回鄉證.八達通.深圳通等),我並沒有第一時間撥打999電話,讓警察前來處理,因為有可能不知道等多久,而是直接將皮包交給了我附近的警局,并進行了登記. PS:如果3個月內這件失物沒人認領,這