C语言第二次博客作业——分支结构

一、PTA实验作业


题目1:计算分段函数

1.实验代码

#include<stdio.h>
#include<math.h>
int main(void)
{
	double x=0,fx=0;
    scanf("%lf",&x);
    if(x>=0){
    	fx=pow(x,0.5);
	}
	else if(x<0){
	fx=pow(x+1,2)+2*x+1/x;	
	}
	printf("f(%.2f) = %.2f",x,fx);
	return 0;
}

2 .设计思路

  • 第一步:定义两个双精度浮点型变量x,fx,并输入x。
  • 第二步:若x大于等于零,则y等于根号x;若x小于零,则y等于x+1整体的平方加2*x加1/x。
  • 第三步:根据题目格式输出结果。

3.本题调试过程碰到问题及解决办法

问题:格式错误。
按照题目格式输出结果。


4.本题PTA提交列表



题目2:7-4 输出三角形面积和周长

1.实验代码

#include<stdio.h>
#include<math.h>
int main(void)
{
	int a,b,c;
	double s,area,perimeter;
	scanf("%d%d%d",&a,&b,&c);
	s=(a+b+c)/2.0;
	area=pow(s*(s-a)*(s-b)*(s-c),0.5);
	if(a+b>c&&a+c>b&&b+c>a)
	printf("area = %.2f; perimeter = %.2f",pow(s*(s-a)*(s-b)*(s-c),0.5),(a+b+c)*1.0);
	else
	printf("These sides do not correspond to a valid triangle");
	return 0;
}

2 .设计思路

  • 第一步:定义3个整型变量a,b,c表示边长;定义三个双精度浮点型变量s,area,perimeter,并输入三条边。
  • 第二步:利用分支结构语句进行条件判断。
  • 第三步:若满足条件,利用公式计算出area和perimeter的结果并输出。
  • 第四步:若不满足,则输出These sides do not correspond to a valid triangle。

3.本题调试过程碰到问题及解决办法

问题1:把计算公式写在scanf之前,造成代码一直错误。
同学提醒,scanf必须卸载计算公式前,计算公式才有意义。
问题2:虽然定义了三个双精度浮点型变量,但与题目输出结果不一致。
没有*1.0,即没有把输出结果变成保留两位小数。

4.本题PTA提交列表


题目3:7-6 出租车计价

1.实验代码

#include<stdio.h>
int main(void)
{
	int time;
	float km;
	scanf("%f%d",&km,&time);
	if(km<=3)
	printf("%d",10+time/5*2);
	if(km>3&&km<=10)
	printf("%.0f",(km-3)*2+10+time/5*2);
	if(km>10)
	printf("%.0f",10+7*2+(km-10)*3+time/5*2);
	return 0;
}

2 .设计思路

  • 第一步:定义整型变量time表示等待时间,定义单精度浮点型变量km表示路程,输入km,time。
  • 第二步:利用分支结构语句进行条件判断。
  • 第三步:输出结果。

3.本题调试过程碰到问题及解决办法

问题1:不知道怎么计算时间大于5的计费情况。
利用算式time/5就可以算出时间的计费。
问题2:不知道怎么四舍五入。
利用%.nf可以保留n位小数。

4.本题PTA提交列表


题目4:7-8 程序设计联考

1.实验代码

#include<stdio.h>
int main(void) 
{
	int account,a;
	scanf("%d",&account);
	a=account/100000;
	if(a==1){ 
	printf("Hunan Agricultural University");} 
	if(a==2){ 
	printf("Jishou University");} 
	if(a==3){ 
	printf("Huaihua University");} 
	if(a==4){ 
	printf("Aerospace University");} 
	if(a==5){ 
	printf("Ocean University");} 
	if(a==6||a==7||a==8||a==9){ 
	printf("Other University");} 
	return 0;
}

2 .设计思路

  • 第一步:定义两个整形变量account和x,account是六位整数,x是其首位,并输入account。
  • 第二步:利用分支结构语句进行条件判断。
  • 第三步:输出结果。

3.本题调试过程碰到问题及解决办法

问题1:错把a等于1打成a=1.
把a=1改成a==1.
问题2:最后的条件准备用else结束,但输出错误,无论输出什么都有Other University。
只能继续用if语句,把可能情况一一列出。忽略a等于0的情况。

4.本题PTA提交列表

二、截图本周题目集的PTA最后排名


三、本周学习总结

1.你学会了什么?

  • 1.会使用分支结构语法。
  • 2.会使用switch语句。
  • 3.会定义字符型变量。
  • 4.会逻辑运算的表示。

2.本周的内容,你还不会什么?

  • 1.if-else语句嵌套起来的使用。
  • 2.复杂的分支结构不会用代码表示。
  • 3.else和if的匹配原则。

3.你碰到什么困难,打算如何解决?

  • 1.碰见困难,总是习惯先问同学,而不是利用程序调试。
    多练习调试的过程,熟悉调试的步骤,做到能够利用调试解决代码错误。
  • 2.遇见复杂分支结构的题目,只会用if语句,而不会使用if-else嵌套。使代码看起来繁琐。
    多做一些pta题目,换着使用各种语法结构。

本周小结

每次写博客上提问的问题,比如“设计思路”,感到十分为难。写pta的题目,有一些问题,看见了就有思路,自然而然就写好了代码,而有一些题目,绞尽脑汁都想不出。从来不会考虑取写设计思路,所以在博客园上都是利用现有代码,临时写出设计思路,感觉十分痛苦。至于“本题调试过程碰到问题及解决办法,因为写代码与写博客有一段时间差,回忆不出一些印象浅的问题。还有对于没有问题却要凭空想出问题感到很无奈。所以写博客远没有写代码有成就感。所以我觉得有必要把写代码出现的问题记录下来。
posted @ 2017-10-25 16:48  l杨发热  阅读(372)  评论(8编辑  收藏  举报