一、PTA实验作业
题目1:计算分段函数
1.实验代码
double x,y;
scanf("%lf",&x);
if(x>=0){
y=sqrt(x);
}
else{
y=pow(x+1,2)+2*x+1/x;
}
printf("f(%.2f) = %.2f\n",x,y);
2 .设计思路
- 1.输入两个实型变量x,y
- 2.若x大于等于零,则y等于根号x
- 3.若x小于零,则y等于x+1整体的平方加2*x加1/x
- 4.按照题目要求的格式输出
3.本题调试过程碰到问题及解决办法
- 1.scanf函数格式弄错,x前忘记加&,后通过devc调试发现问题
- 2.数学函数的调用出现错误,x的零点五次方一开始写成了pow(x,0.5),看书后改正,但不明白为什么不能这样写
- 3.输出时语句不知道该怎么写,照书模仿的,因为觉得最后结果中并没有y,就没有在输出语句中写,后devc调试中指出错误y没有使用,后改正
4.本题PTA提交列表
题目2:7-4 输出三角形面积和周长
1.实验代码
int a,b,c;
double s,area,perimeter;
scanf("%d%d%d",&a,&b,&c);
if((a+b)>c&&(b+c)>a&&(a+c)>b){
s=(a+b+c)*1.0/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
perimeter=a+b+c;
printf("area = %.2f; perimeter = %.2f",area,perimeter);
}
else
{
printf("These sides do not correspond to a valid triangle\n");
2 .设计思路
- 1.定义三个整形变量a,b,c表示边长;定义三个实型变量表示s,area,perimeter
- 2.输入三个边长
- 3.利用分支结构语句进行条件判断
- 4.若满足条件,利用上述代码中公式计算出area和perimeter的结果并输出
- 5.若不满足条件,则直接输出These sides do not correspond to a valid triangle
3.本题调试过程碰到问题及解决办法
- 1.变量类型定义错误,perimeter没有按题目要求保留两位形式输出,而是定义了它为整形变量,后尝试中改正
- 2.不同类型的量作四则运算时没有调好精度,s=(a+b+c)*1.0/2;,这个最开始忘记乘0.1了,后经同学提醒改正,但现在仍有点不明白
- 3.输入输出格式搞混,不细心,后经自己观察发现问题并改正
4.本题PTA提交列表
题目3:7-6 出租车计价
1.实验代码
int minute;
double meter,money;
scanf("%lf%d",&meter,&minute);
if(meter>10){
money=24+(meter-10)*3+minute/5*2;
printf("%.0lf\n",money);
}
else if(meter>=3&&meter<=10){
money=10+(meter-3)*2+minute/5*2;
printf("%.0lf\n",money);
}
else{
money=10+minute/5*2;
printf("%.0lf\n",money);
}
2 .设计思路
- 1.定义整型变量minute代表等待时间,定义实型变量meter和money分别代表行走路程和最后需要交的车费
- 2.输入行走路程和等待时间
- 3.进行条件判断,若meter>10,则money=24+(meter-10)3+minute/52,按四舍五入形式输出money
- 4.若meter在3到10之间,则 money=10+(meter-3)2+minute/52,按四舍五入形式输出money
- 5.若meter小于等于三,则 money=10+minute/5*2,按四舍五入形式输出money
3.本题调试过程碰到问题及解决办法
- 1.读不懂题,题目说起步后十公里内每公里二元,开始以为是那三公里后再加十公里每公里二元,经室友指点后明白
- 2.不知道该如何四舍五入最后的钱数,经室友指点,只要在lf前加.0即可,后明白
- 3.判断等待分钟数时出现错误,一开始我嵌套了好几个if-else结构,总是有点问题,后直接把它缩成一步
- 4.变量名输入错误,输入时应该输入minute和meter,写成了meter和money,后经检查发现并改正
4.本题PTA提交列表
题目4:7-8 程序设计联考
1.实验代码
int account,x;/*account为六位正整数*/
scanf("%d",&account);
x=account/100000;
switch(x){
case 1:
printf("Hunan Agricultural University\n");
break;
case 2:
printf("Jishou University\n");
break;
case 3:
printf("Huaihua University\n");
break;
case 4:
printf("Aerospace University\n");
break;
case 5:
printf("Ocean University\n");
break;
default:
printf("Other University\n");
break;
2 .设计思路
- 1.定义两个整形变量account和x,account是六位整数,x是其首位
- 2.输入account
- 3.用account除以100000来得到这个六位数的首位
- 4.利用switch语句进行判断
- 5.若x==1,则输出Hunan Agricultural University
- 6.x==2则输出Jishou University
- 7.x==3,则输出Huaihua University
- 8.x==4则输出Aerospace University
- 9.x==5则输出Ocean University
- 10.以上数字都不是则输出Other University
3.本题调试过程碰到问题及解决办法
- 1.switch语句格式使用错误,没有加大括号,看书后改正
- 2.格式输出错误,忘记加other 和university之间的空格,提交显示格式错误后观察后发现并改正
- 3.除法运算时应该除六位我除了七位,后经过分析改正
4.本题PTA提交列表
二、截图本周题目集的PTA最后排名
三、本周学习总结
1.你学会了什么?
- 1.if-else语句的使用和使用时的基本格式,会使用多分支结构,if后的条件要加括号但不加分号,多个ifelse嵌套,若没有大括号,else否定的是离它最近的if
- 2.定义变量类型和变量名相比以前更加专业了一点,尽量取其英文或英文缩写,变量类型要根据具体的题目来具体对待
- 3.字符型变量用char来表示,它输入输出时用%c,它有专门的输入输出函数getchar和putchar
- 4.学会了逻辑运算的表示
- 5.学会了使用switch语句,case语句后面只能是常量,若无break则所有分支都执行,它只能处理整数型问题吧
2.本周的内容,你还不会什么?、?
- 1.字符型常量的输入输出函数getchar和putchar,不知道怎么使用,课本上的例子也有些看不懂,ch=getchar()的意思是从键盘随便输一个字符进去吗?
- 2.if-else语句嵌套起来的使用不怎么熟练,经常出错
- 3.switch语句使用感觉不是很会
- 4.不同类型数的乘除,四舍五入什么的
3.你碰到什么困难,打算如何解决?
- 1.遇到很多问题经常都是一头雾水,不知道毛病出在哪里,要多和同学交流,自己检查改正问题的能力更要提升
- 2.对知识的熟悉程度不够,写题很慢,以后还是得多敲代码,敲完的也要经常回过头去看看,温习一下新学会的和以前犯的错误
- 3.太急躁,在pta写题目时基本都是直接敲代码,但思路并不清楚,以后应该先构思算法,再转化为代码;题目做错就心急火燎,越做越错,连最简单的问题都看不出来了,以后还是要淡定。
- 4.遇到很多问题都是直接问同学,要学着自己思考和查阅。也要和同学多交流