C语言第二周作业

一、PTA实验作业

题目一:7-1 计算分段函数

1.实验代码

double x,y;
  scanf("%lf", &x);
	if(x >= 0){
	  y=pow(x,0.5);
	}
	else{
	  y=pow(x+1,2)+2*x+1/x;
	}
	printf("f(%.2lf) = %.2lf",x,y);
}

2.设计思路

  • 1.定义浮点型变量X,Y;
  • 2.输入X的值;
  • 3.如果X大于等于0,Y等于X的0.5次方;
  • 4.否则y=pow(x+1,2)+2*x+1/x;
  • 5.保留两位小数,输出X和Y的值;

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

  • 1.在使用数学函数时没有加入函数声明#include<math.h>,后来自己发现错误并解决;
  • 2.X与运算符之间应该空格,否则显示格式错误,如x >= 0;
  • 3.发现保留两位小数既可以表示成 %.2lf,也可以表示成%.2f;

4.本题PTA提交列表:

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

本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=√

​s(s−a)(s−b)(s−c)


​​ ,其中s=(a+b+c)/2。

1.实验代码

int a,b,c;
	double s,area,perimeter;
	scanf("%d %d %d",&a,&b,&c);
	if(a+b>c&&a+c>b&&b+c>a){
		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");

2.设计思路

  • 1.定义整型变量a,b,c,浮点型变量 s,area,perimeter;
  • 2.输入 a,b,c;
  • 3.如果满足任意两条边大于第三边,则s=(a+b+c)1.0/2;
    area=sqrt(s
    (s-a)(s-b)(s-c));
    perimeter=a+b+c,输出area,perimeter的值;
  • 4.否则输出These sides do not correspond to a valid triangle;

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

  • 1.输出格式中,%.2f;和 perimeter之间要空格,解决办法是以后可以直接把输出格式复制黏贴;
  • 2.&符号用在scanf中,不用在printf中,以后要多注意;
  • 3.假如else后面无公式,则不用加{},开始时加了{},后来在同学的帮助下改正;
  • 4.变量名取得不好,无法见名知义,借鉴同学的,可取名为side1,side2,side3;
  • 5.最后一句输出语句中闹了一个大笑话,These sides do not correspond to a valid triangle中少了一个a,解决办法是复制黏贴或者以后细心一点,嘻嘻;
  • 6.让整型变量相除成为实型变量的办法是让被除数*1.0,这是同学给的建议;

4.本题PTA提交列表:

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

本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:

起步里程为3公里,起步费10元;
超起步里程后10公里内,每公里2元;
超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。

1.实验代码

	int t;
	double price,s;
	scanf("%lf%d",&s,&t);
	if(s<=3){
		price=10+t/5*2;
	}
	else if(3<s&&s<=10){
		price=10+2*(s-3)+t/5*2;
	}
	else {
		price=10+2*(10-3)+3*(s-10)+t/5*2;
	}
	
	printf("%.0lf",price);
	
}

2.设计思路

  • 1.定义整型变量t,浮点型变量s,price;
  • 2.输入s和t的值;
  • 3.如果s<=3则price=10+t/5*2;
  • 4.如果3<s且s<=10则price=10+2(s-3)+t/52;
  • 5.否则price=10+2(10-3)+3(s-10)+t/5*2;
  • 6.输出price的值,四舍五入为整数;

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

  • 1.四舍五入的符号不知道怎么写,在同学帮助下知道了是%.0lf;
  • 2.price虽然最后四舍五入取整,也仍应定义为浮点型变量,在同学帮助下改正;
  • 3.scanf("%lf%d",&s,&t);语句中%lf和%d之间不空格会更好,节省内存,空格键也占内存;
  • 4.这道题有两种思路,一种是把每一段路程的计价都加上等待时间的计价,另一种是先计算等待时间的计价,最后再加起来;

4.本题PTA提交列表:

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

自从湖南农业大学、吉首大学和怀化学院组织程序设计课程联考以后,举办联考的经验越来丰富。尤其是在使用PTA系统作为考试平台之后,联考工作得到了很多学校的认可和支持。所以,现在参与联考的学校比较多。为了便于区分考生,考生账号的第一位是学校代号。1代表Hunan Agricultural University,2代表Jishou University,3代表Huaihua University,4代表Aerospace University,5代表Ocean University。 请编写程序根据考生的账号区分考生的学校。

1.实验代码

        int account,number;
	scanf("%d",&account);
	number=account/100000;
	switch (number){
		case 1:
			printf("Hunan Agricultural University");
			break;
		case 2:
		    printf("Jishou University");
			break;
		case 3:
		    printf("Huaihua University");
			break;
		case 4:
		    printf("Aerospace University");
		    break;
		case 5:
			printf("Ocean University");
			break;
			default:
				printf("Other University");
				break;
	}

2.设计思路

  • 1.定义整型变量account,number;
  • 2.输入account的值;
  • 3.令number=account/100000;
  • 4.进入switch语句判断,看变量值是否满足case 1;case 2;case 3;case4;case5;
  • 5.若都不满足,则进入default语句;

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

  • 1.对switch 语句的掌握不是很熟练,应用得不够灵活,以为switch只能与op连用,后来在同学的帮助下改正;
  • 2.没有考虑到后面case判断的数都是整数,将account,number定义成double;
  • 3.switch后面的括号里只能有一个变量,不能是表达式,例如account/100000,所以要另设一个变量number;

4..本题PTA提交列表:

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

三、本周学习总结

1.你学会了什么?

  • 1.学会了switch分支结构语句,for循环语句;
  • 2.学会了常用数学函数平方根函数,绝对值函数,幂函数,指数函数,以e为底的对数函数;
  • 3..让整型变量相除成为实型变量的办法是让被除数*1.0;
  • 4.四舍五入的符号是%.0lf;
  • 5.定义错误也会导致答案错误,要多注意;

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

  • 1.对switch语句的使用不是很熟练;

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

  • 1.常用数学函数记不住,要反复背,经常练习;
posted @ 2017-10-24 18:41  哟呵~  阅读(1099)  评论(3编辑  收藏  举报