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