c语言第四次作业

(一)改错题
1、错误信息:
错误原因:sqrt( 没有另一半小括号
改正方法:在( s - c )后面加上)
2、错误信息:
错误原因:if后面有多条语句,没有加大括号
改正方法:在这几条语句前后加上大括号
3、错误信息:
错误原因:if后面三条边的关系之间的逻辑运算符用的不对
改正方法:把||改成&&
(二)学习总结
链接:http://www.cnblogs.com/wankun/p/4989831.html
1、(1)if...else if满足条件的时候就会终止判断,对于多个if语句,把所有的判断条件都执行一遍。在多个判断条件的情况下,不仅可以使用if...else if语句,还可以使用switch case语句。(2)switch...case不用像if...else if那样把所有条件都执行一遍, 直到执行到符合的条件。(3)而且 switch...case能直接找到符合的条件然后执行 ,然后达到定位分支的目的。



2、使用switch...case记住一个判断条件完的时候要有break,最后要有default.定义double的时候输入要用 %lf,注意保留几位小数。不要忘记加&,该有分号加分号,有数学函数的时候要有#include <math.h>.case与常数之间要有空格记得加冒号。
(三)实验总结
1.成绩转换
(1)题目
本题要求编写程序将一个百分制成绩转换为五分制成绩。
(2)流程图

(3)源代码

#include <stdio.h> 
int main(void)
{
 int score;
 scanf("%d",&score);
 switch(score/10)
 {
	case 10:
	case 9:printf("A\n");
			break;
	case 8:printf("B\n");
		    break;
	case 7:printf("C\n");
			break;
	case 6:printf("D\n");
	        break;
	default:printf("E\n");
	break;				
 }
 return 0;
}

(4)实验分析
问题1:输出不对
原因:switch语句判断0-10更准确
解决办法:score/10
(5)本题PTA提交列表

5、 三角形判断
(1)题目
给定平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3),检验它们能否构成三角形。
(2)流程图


(3)源代码

#include <stdio.h>
#include <math.h>
int main(void) 
{
 int x1,x2,x3,y1,y2,y3;
 double L,A,a,b,c,d;
 scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3);
 a=sqrt(pow(x1-x2,2)+pow(y1-y2,2));
 b=sqrt(pow(x2-x3,2)+pow(y2-y3,2));
 c=sqrt(pow(x3-x1,2)+pow(y3-y1,2));
 L=a+b+c;
 d=L/2;
 A=sqrt(d*(d-a)*(d-b)*(d-c)) ;
 if(a+b>c&&a+c>b&&b+c>a)
 {
	printf("L = %.2f,A = %.2f",L,A);
 }
 else
 {
	printf("Impossible");
 }
 return 0;

}

(4)实验分析
问题1:编译错误
原因:输出里面没有逗号
解决办法:在L和A前面加上逗号
(5)本题PTA提交列表

7、 两个数的简单计算器
(1)题目
本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。
(2)流程图

(3)源代码

#include <stdio.h> 
#include <stdlib.h>
int main(void)
{
 int a,b,c;
 char op;
 printf("输入一个四则运算表达式a+(-,*,/)b:\n");
 scanf("%d%c%d",&a,&op,&b);
 switch(op)
 {
	case '+':c = a+b;
			 break;
	case '-':c = a-b;
			 break;
	case '*':c = a*b;
			 break;
	case '/':if(b==0)
			{
				printf("除数不能为零\n");
				exit(0);
			} 
			c = a/b;
			break;
	default:printf("非法操作符\n");
			exit(0);				 
 }
 printf("%d%c%d = %d\n",a,op,b,c);
 return 0;
}

(4)实验分析
问题1:没有求余
原因:没看清题
解决办法:加上求余的式子
原因:字母为0没有意义
解决办法:加上b=0的判断式
(5)本题PTA提交列表


9 、求一元二次方程的根
(1)题目
本题目要求一元二次方程的根,结果保留2位小数。
(2)流程图


(3)源代码

#include<stdio.h>
#include<math.h>
int main(void)
{
 double a,b,c,d,x1,x2;
 scanf("%lf%lf%lf",&a,&b,&c);
 d = pow(b,2) - 4 * a * c;
 if(a == 0 && b == 0 && c == 0)
 {
	printf("Zero Equation");
 }
 if(a == 0 && b == 0 && c != 0)
 {
	printf("Not An Equation");
 
 if(d > 0 && a != 0)
 {
 x1 = (-b+sqrt(d)) / (2 * a);
 x2 = (-b - sqrt(d)) / (2 * a);
 printf("%.2f\n%.2f",x1,x2);
 }
 else if(d == 0 && a !=0)
 {
	x1 = -b / (2 * a);
	printf("%.2f",x1);
 }
 else if(d < 0 && a != 0 && b != 0)
 {
	b = -b / ( a * 2);
	d = fabs(d);
	x1 = sqrt(d) / (a * 2);
	printf("%.2f+%.2fi\n",b,x1);
	printf("%.2f-%.2fi",b,x1);
 }
 else if(a == 0 && b != 0)
 {
	x1 = -c / b;
	printf("%.2f",x1);
 }
 else if(d < 0 && b == 0 && a !=0)
 {
	       d = fabs(d);
	x1 = sqrt(d) / 2;
	printf("0.00+%.2fi\n",x1);
	printf("0.00-%.2fi",x1);
}
return 0;

}

(4)实验分析
问题1:进行不下去不知道怎么写
原因:数学公式不知道不会求解复数根看了百度也不懂
解决办法:看了别的同学的解题思路就在pta上提交了,之后又求解别的同学,给我讲了半天然后就知道点了。
(5)本题PTA提交列表

(四)博客互评
1、http://www.cnblogs.com/luyu0322-/p/7765830.html
2、http://www.cnblogs.com/tengwenqing/p/7762729.html
3、http://www.cnblogs.com/windsky-1999/p/7765579.html

posted @ 2017-11-04 22:54  思念诠释你我的距离  阅读(512)  评论(4编辑  收藏  举报