第1次作业
PTA分支结构实验作业
题目一:计算个人所得税。
本题正确代码:
#include <stdio.h> int main() { float a; scanf("%f",&a); if(a>=0) { if(a<1600) { printf("0.00"); } else if(a>1600&&a<=2500) { a=(a-1600)*0.05; printf("%.2f",a); } else if(a>2500&&a<=3500) { a=(a-1600)*0.10; printf("%.2f",a); } else if(a>=3500&&a<=4500) { a=(a-1600)*0.15; printf("%.2f",a); } else if(a>4500) { a=(a-1600)*0.20; printf("%.2f",a); } } return 0; }
2.文字描述设计思路(+流程图):
第一步: 对于程序来说,先做最基本的程序框架,也就是
#include <stdio.h> int main() { return 0; }
第二步: 对于这道题来说,先定义变量,也就是设工资(非负工资)为 a。
第三步: 因为该题结果需要精确小数点后两位,故用float来定义一个单精度浮点型变量a,用于存放实数。
第四步: 根据题设,需要用到if-else语句,再根据a的取值范围来运算在不同范围下的关于a的运算式。
第五步: 写出该题的程序,并在执行该程序,最后输出。
流程图:
3.本题调试过程碰到的问题及解决办法
第一次做题时pta该题列表情况:
问题:不知道如何灵活运用if-else语句,且&&的意思。
解决办法:翻找C语言的书,并询问学长有关于if-else的语句知识,找到并做类似的题,上网查询&&的意思,再经过pta提交说明,经过改动,该题代码正确。
题目二:求1到100的和。
1. 本题正确代码:
#include <stdio.h> #include <math.h> int main() { int i , sum=0; for(i=1;i<=100;i++) { sum=sum+i; } printf("sum = %d\n",sum); return 0; }
2. 文字描述设计思路及流程图:
由于该题是数学问题,需要用到函数之类,sum为各个数的加和。所以
第一步:先做程序的基本框架,即:
#include <stdio.h> #include <math.h> int main() { return 0; }
第二步:先定义变量 i , 再用到函数sum,为防止该程序错误,刚开始设sum=0。
第三步:根据该题可知会用到for循环语句,即:for(表达式1;表达式2;表达式3)
循环体语句
第四步:因为是从1到100的所有数的加和,所以在for循环语句中,设 表达式1中 i=1,表达式2中 i<=100,表达式3中 i++。
第五步:根据该题的输出格式 :sum = 累加和,所以在输出中:
printf("sum = %d\n",sum);
第六步:写出该题的程序,并执行该程序,最后在输出。
该题流程图:
本题调试过程碰到问题及解决办法:
pta该题提交列表情况:
问题:(1)sum值最初没有赋值为0,导致该题结果错误。
(2)for循环语句没有不够熟练,总出现for(表达式1,表达式2,表达式3),即括号中应该用分号分开,不应该用逗号,导致该程序编译错误。
解决办法:(1)询问学长知道该错误,并运用Dev-c++,来编译该程序,给sum=0,发现该处错误解决。
(2)翻阅C语言程序设计的书,找到该错误,正确for循环语句格式:for(表达式1;表达式2;表达式3),括号中用分号分开,所以在 Dev-c++中重新编写该程序,无错误,编译成功。
题目三:找出最小值。
1.本题正确代码:
#include<stdio.h> int main(void) { int n,i,l,min; scanf("%d",&n); scanf("%d",&l); min=l; for(i=1;i<n;i++){ scanf("%d",&l); if(min>l) min=l; } printf("min = %d",min); return 0; }
2.文字描述设计思路及流程图:
第一步:给min赋值
第二步:执行for循环语句,输入n个数,当i小于n,输出i代表的l,直到i>n。
第三步:并判断i的值更小,然后把值给min
第四步:输出最小值,执行结束
本题流程图:
3.本题调试过程碰到问题及解决办法:
pta该题列表提交情况:
问题:没有给min赋值,导致执行错误
解决办法:在dev-c++中,改正错误,输入正确,重新给min赋值。
总结和学习进度条:
1.总结:从开学到现在,这几周我们先学习了程序框图,对于第一节程序框图,学会了怎样使hello world!在屏幕上显示。以及怎样定义变量,还有单精度float和双精度double怎样使用,float类型的变量分配4个字节的存储单元,double类型变量分配8个字节的存储单元。也开始对c语言产生浓厚兴趣,接着我们也学习了if-esle语句,循环语句:for循环语句,do while循环语句,while循环语句。让我开始用这些语句多角度地分析问题,解决问题。
在学习时碰到很多困难,像在课上有时没听懂这道题的程序,下课我就得找同学或者学长询问,也许是我还没深入理解到程序等等。也让我改正了很多编译过程中的错误,比如for循环语句,while循环语句中表达式之间应用分号分来。课下代码训练少,我也得课下多训练代码,并背背一些代码之类的,还有也学会了一些特殊符号的意义&&等,往后我得多多加强,多练习代码,熟练灵活地使用这些代码来解决各个问题。
2.点评作业:点评苏欣 苏欣同学,对问题分析的较为深刻,整体来说,给人不一样的感觉
点评王文琪 王文琪同学,整体模板整洁美观,分析问题时,用沉稳的心情来对待问题,值得人学习
点评梁宇 梁宇同学,善于改正错误,对自己的问题,善于纠正,积极奋进
3.表格:
4.折线图: