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 ;
}
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==)
price=6.95;
else if(b==)
price=7.44;
else
price=7.93;
switch(c)
{
case'm':discount=0.05;break;
case'e':discount=0.03;break;
}
cost=price*a*(-discount);
printf("%.2f",cost);
//system("pause");
return ;
}
2.設計思路
(1)算法
第一步:輸入加油量整數a,汽油品種整數b,服務類型字符c
第二步:若汽油品種為90,單價price為6.95元/升,跳到第五步,否則下一步
第三步:若汽油品種為93,單價price為7.44元/升,跳到第五步,否則下一步
第四步:若汽油品種為97,單價price為7.93元/升
第五步:若服務類型為自助,折扣discount為5%,跳到第七步,否則下一步
第六步:若服務類型為協助,折扣discount為3%
第七步:總價=單價*加油量(1-折扣),輸出總價cost
(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 ;
}
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==)
printf("ERROR");
else
{result=(num1/num2);
printf("%.0f",result);}
}break;
case'%':
{if(num2==)
printf("ERROR");
else
{result=num1%num2;
printf("%.0f",result);}
}break;
default:printf("ERROR");break;
} return ;
}
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
馮子旋的博客鏈接:http://www.cnblogs.com/fengzx/p/7801506.html
董欣的博客鏈接:http://www.cnblogs.com/dx2017/p/7794801.html
董雅潔的博客鏈接:http://www.cnblogs.com/exo123/p/7811906.html
| 代碼行數 | 時間 | 博客字數 | 時間 | 涉及知識點 |
| 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語句 |

PTA題目的處理(三)的更多相关文章
- PTA題目的處理(一)
**題目1:A乘B** **實驗代碼** #include <stdio.h> #include <stdlib.h> int main() { signed int a,b; ...
- PTA題目的處理(二)
題目7-1 計算分段函數[1] 1.實驗代碼 #include <stdio.h> int main() { float x,y; scanf("%f",&x) ...
- 第14、15週PTA題目的處理
題目1 選擇法排序 1.實驗代碼 #include <stdio.h> #include <stdlib.h> int main() { int n,index,exchang ...
- PTA题目的處理(四)
题目7-3 求交错序列前N项和 1.实验代码 #include <stdio.h> //#include <stdlib.h> int main() { ,N; double ...
- C++ 檔案、資料夾、路徑處理函式庫:boost::filesystem
原帖:https://tokyo.zxproxy.com/browse.php?u=uG7kXsFlW1ZmaxKEvCzu8HrCJ0bXIAddA1s5dtIUZ%2FYzM1u9JI7jjKLT ...
- 在 Windows 上遇到非常多 TIME_WAIT 連線時應如何處理
我們公司所代管的網站裡,有幾個流量是非常大的,在尖峰的時刻同時上線人數可能高達數千到數萬人,而在這個時候如果使用 netstat 或 TCPView 查看所有 TCP 連線時就會看到非常多處於 ...
- 整理幾種常見PCB表面處理的優缺點
這只是一篇整理文,而且我個人僅從事過後段的電路板組裝,而未從事過電路板製程,所以有些見解純粹只是個人看法,如果有些不一樣的聲音或錯誤也歡迎留言討論. 隨著時代的演進,科技的進步,環保的要求,電子業也隨 ...
- iOS/Android/Web Url Encode空格處理 原文連結:http://read01.com/3gDO.html
iOS/Android/Web Url Encode空格處理 原文連結:http://read01.com/3gDO.html 前言 這裡只是講一個故事,一個發生在我身上的真實的故事.曾經,我以為搞加 ...
- Oracle的字串處理
Oracle的字串處理 除了寫程式之外,資料庫的應用也是蠻重要的,而SQL語法,用法大致相同,但各公司所出的資料庫還是有所差別,而ORACLE SQL給了相當多的函數應用,下面列了一些函法的名稱和用法 ...
随机推荐
- How I explained OOD to my wife(转)
How I explained OOD to my wife Learning Object Oriented Design principles through interesting conver ...
- SonarQube和Maven的集成
1.1. SonarQube简介 SonarQube是一款免费用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量通过插件形式,可以支持包括java,C#,C/C++,PL/S ...
- Stanford CS224N 第二课: word2vec详细介绍
word2vec模型 word2vec 模型有两种: Continuous Skip-gram Model 和 Continuous Bag of Words Model (CBOW). 本文主要讲解 ...
- npm包管理器小节一下
淘宝npm镜像cnpm设置 npm install -g cnpm --registry=https://registry.npm.taobao.org 更新npm的版本 npm install np ...
- [MyBatis]DAO层只写接口,不用写实现类
团队开发一个项目,由老大架了一个框架,遇到了DAO层不用写接口了,我也是用了2次才记住这个事的,因为自己一直都是习惯于写DAO层的实现类,所以,习惯性的还是写了个实现类.于是遇到错误了. 找不到那个方 ...
- Bzoj4817:[SDOI2017]树点涂色
题面 Bzoj Sol 做个转化 最开始都是虚边 操作\(1\)就是\(LCT\)里的\(Access\)操作 求的就是路径上虚边的个数+1 然后就好办了 用树链剖分+线段树来维护每个点到根虚边的个数 ...
- eclipse 启动报内存溢出的问题out of memory!
这个问题困扰了我一个月,今天终于解决了,在网上尝试了好多方法都不行.启动的时候就报错,这里可能是jdk的内存太小了,需要加大jdk的内存. 加上这个就好了 -server -Xms512m -Xmx5 ...
- tp5.带标签的缓存 创建和清除 测试
原文:http://www.upwqy.com/details/24.html 测试设置了标签的缓存的获取方式 和清除标签缓存. 有时候我们可能会对同类型的一些数据做统一缓存.和统一清除更新处理. 那 ...
- 关系型数据库工作原理-客户端连接管理器(翻译自Coding-Geek文章)
本文翻译自Coding-Geek文章:< How does a relational database work>.原文链接:http://coding-geek.com/how-data ...
- 很简单的Java断点续传实现原理
原理解析 在开发当中,"断点续传"这种功能很实用和常见,听上去也是比较有"逼格"的感觉.所以通常我们都有兴趣去研究研究这种功能是如何实现的? 以Java来说,网 ...