yob。

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

一、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.遇到很多问题都是直接问同学,要学着自己思考和查阅。也要和同学多交流

posted on 2017-10-24 17:34  emmmm。。。  阅读(440)  评论(6编辑  收藏  举报

导航