c語言第四次作業


(一)改錯題

輸出三角形的面積和周長,輸入三角形的三條邊a、b、c,如果能構成一個三角形,輸出面積area和周長perimeter(保留2位小數);否則,輸出“These sides do not correspond to a valid triangle”。
輸入輸出樣例1:
  Enter 3 sides of the triangle: 5 5 3
  area = 7.15; perimeter = 13.00
輸入輸出樣例2:
  Enter 3 sides of the triangle: 1 4 1
  These sides do not correspond to a valid triangle
源程序(有錯誤的程序)

#include <stdio.h>
#include <math.h>
int main(void)
{
double a,b,c;
double area,perimeter,s;

printf("Enter 3 sides of the triangle: ");
scanf( "%lf%lf%lf",&a,&b,&c );

if( a + b > c || b + c > a || a + c > b)
s = ( a + b + c ) / 2;
area = sqrt( s * ( s - a ) * ( s - b ) * ( s - c );
perimeter = a + b + c;
printf("area = %.2f; perimeter = %.2f\n",area,perimeter);

else
printf("These sides do not correspond to a valid triangle\n");

return 0;
}

錯誤信息1:
錯誤原因:第13的括號沒有擴回
改正方法:在第13行加上括號
錯誤信息2:
錯誤原因:if下面的信息沒有加{}
改正方法:if下面加上{}
錯誤信息3:
錯誤原因:應該是和的關系
改正方法:或改成和的關系
(二)學習總結
1.在編程解決問題的過程中,我們會用到多個if語句,if...else if... 語句以及switch語句,查閱資料,總結一下這三種情況的區別何在,並分別舉例加以說明。
.if:表示如果,適用於條件清晰,不重疊。比如判斷一個數是整數還是負數,條件內容所屬區間獨立,不干涉適合if語句,但是一條條判斷,增加條件復雜性。
.if else:表示如果,剩下的。適合多項判斷,相對於if語句,如果符合條件,自動結束,不用一一判斷條件是否符合,例如,判斷一個字符屬於什么類型。
*.switch:switch語句適合判斷一個參數是否等於一個條件,比如判斷一個月份有多少天,但是只能適合明確的量,而不能判斷一個參數是否屬於一份區間。
資料鏈接:
(1)http://www.cnblogs.com/wankun/p/4989831.html
(2)http://www.cnblogs.com/pureEve/p/6564012.html
(3)http://www.cnblogs.com/bluesky365/p/5631517.html

2.對其他你認為需要進行總結的內容進行總結。
.在switch語句中default后面不需要加入case,就像if..else...中的else后不需要加判斷語句一樣
.或和非的關系
(三)實驗總結(我的學號為單號,需總結1,5,7,9題)
第一題:成績轉換
(1)題目:本題要求編寫程序將一個百分制成績轉換為五分制成績。
(2)流程圖

(3)源代碼

include

int main(void)
{
int grade;
scanf("%d",&grade);
switch(grade/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");
}
return 0;
}
(4)實驗分析
本題較簡單
(5)本題PTA提交列表

7-5 三角形判斷(10 分)
(1)題目
給定平面上任意三個點的坐標(x
​1
​​ ,y
​1
​​ )、(x
​2
​​ ,y
​2
​​ )、(x
​3
​​ ,y
​3
​​ ),檢驗它們能否構成三角形。

輸入格式:

輸入在一行中順序給出六個[−100,100]范圍內的數字,即三個點的坐標x
​1
​​ 、y
​1
​​ 、x
​2
​​ 、y
​2
​​ 、x
​3
​​ 、y
​3
​​ 。

輸出格式:

若這3個點不能構成三角形,則在一行中輸出“Impossible”;若可以,則在一行中輸出該三角形的周長和面積,格式為“L = 周長, A = 面積”,輸出到小數點后2位。
(2)流程圖

(3)源代碼

include

include

int main(void)
{
double x1,y1,x2,y2,x3,y3,a,b,c,perimeter,s,aera;
scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);
a = sqrt(pow(x1 - x2,2)+pow(y1 - y2,2));
b = sqrt(pow(x1 - x3,2)+pow(y1 - y3,2));
c = sqrt(pow(x3 - x2,2)+pow(y3 - y2,2));
if(a + b > c && a + c > b && b + c > a)
{
perimeter = a + b + c;
s = perimeter / 2.0;
aera = sqrt(s * (s - a) * (s - b) * (s - c));
printf("L = %.2f, A = %.2f",perimeter,aera);
}
else
{
printf("Impossible");
}
return 0;
}
(4)實驗總結
問題:三角形面積公式忘記
解決:問同學
(5)本題PTA提交列表

7-7 兩個數的簡單計算器(10 分)
(1)題目
本題要求編寫一個簡單計算器程序,可根據輸入的運算符,對2個整數進行加、減、乘、除或求余運算。題目保證輸入和輸出均不超過整型范圍。
(2)流程圖

(3)源代碼

include

include

int main()
{
int a,b,result;
char op;
scanf("%d %c%d",&a,&op,&b);
switch(op)
{
case '+':result = a + b;break;
case '-':result = a - b;break;
case '':result = a b;break;
case '/':result = a / b;break;
case '%':result = a % b;break;
default :printf("ERROR");
exit(0);
}
printf("%d",result);
return 0;
}
(5)本題PTA提交列表

7-9 求一元二次方程的根(10 分)
(1)題目
本題目要求一元二次方程的根,結果保留2位小數。
(2)流程圖

(3)源代碼

include

include

int main(void)
{
double a,b,c,n,x1,x2;
scanf("%lf%lf%lf",&a,&b,&c);
n = b * b - 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(n > 0 && a != 0)
{
x1 = (-b + sqrt(n)) / (2 * a);
x2 = (-b - sqrt(n)) / (2 * a);
printf("%.2f\n%.2f",x1,x2);
}
else if(n == 0 && a !=0)
{
x1 = -b / (2 * a);
printf("%.2f",x1);
}
else if(n < 0 && a != 0 && b!= 0)
{
b = -b / ( a * 2);
n = fabs(n);
x1 = sqrt(n) / (a * 2);
printf("%.2f+%.2fi\n",b,x1);
printf("%.2f-%.2fi\n",b,x1);
}
else if(a == 0 && b != 0)
{
x1 = -c / b;
printf("%.2f",x1);
}
else if(n < 0 && b == 0 && a !=0)
{
n = fabs(n);
x1 = sqrt(n) / 2;
printf("0.00+%.2fi\n",x1);
printf("0.00-%.2fi",x1);
}
return 0;
}

(5)本題PTA提交列表

(四)博客互評
對杜瑞柯同學的博客作業的建議:

對王映丹同學的博客作業的建議:


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com