作業要求:https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2292
第三次作業:7-5.計算分段函數[2]
#include <stdio.h>
#include <math.h>
int main(void)
{
double x=0,y=0;
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);
return 0;
}
解題思路:1.定義兩個雙浮點型變量x , y;
2.輸入任一值 x;
3.如果輸入的值 x 大于或等于0,則用y=x^(1/2)計算y的值,最後直接輸出y值;
4.否則跳過if計算式,用y=(x+1)^2+2*x+1/x計算并輸出y的值;
流程圖:

運作結果:
剛開始程式運作一直出現答案錯誤,在DEVC++中試驗發現結果與案例不同,小數點後的數過多,接下來,我進行了調試,輸入案例中的數字10:
因為x=10>0,是以調到if句,再按回車,直接調到輸出結果,結果出現:
與案例中的結果不一樣,案例中是f(10.00)=3.16,而我的是f(10)=3,于是我意識到題中的要求,要保留兩位小數,是以:
是以主要原因是輸出雙浮點應該是%.2f,而不是%.lf。以後要注意審題和輸出寫法。
第四次作業 7-2 高速公路超速處罰
#include <stdio.h>
#include <math.h>
int main(void)
{
double x,y;
double a;
scanf("%lf %lf",&y,&x);
a=(y-x)*100/x;
if(a<10||y<x){
printf("OK\n");
}
else if(a>=50){
printf("Exceed %.0f%%. License Revoked\n",a);
}
else {
printf("Exceed %.0f%%. Ticket 200\n",a);
}
return 0;
}
解題思路:1.定義三個雙浮點型變量 x, y, a;
2.輸出兩個x ,y的變量值;
3.用x,y的式子計算a;
4.如果a<10或y<x,則輸出"ok";
5.如果a>=50,則輸出Exceed x%. License Revoked;
6.否則輸出Exceed x%. Ticket 200;
流程圖:
運作結果:
送出發現隻有第一個案例輸出正确,接下來進行調試:輸入案例1中的65,60;
這項沒問題,輸入案例2中的110,100;
發現輸出結果與案例中不一緻,接下來輸入案例3中的200,120;
發現這個也與案例3答案不一緻,之後我通過詢問同學得知在輸出中“f”後需輸入兩個“%”号,因為一個百分号是代表百分之幾,另一個是輸出資料必須要帶的;結果:
是以以後要記住相同%号的不同用處。
本周總結:本周老師主要講了條件switch語句,通過pta上的練習和課本上的聯系發現了問題和獲得了一些收獲,通過老師的講解和課本的詳述了解并知道運作調試。
問題:1.發現一直出現輸出上的錯誤,小數點後留多少位。
2.審題不清
3.不會想到轉換,用幾個未知數轉化為一個,這樣作為if句的條件
部落格字數,代碼行數:
作業點評:www.cnblogs.com/mayijing/p/9905748.html
www.cnblogs.com/zst1/p/9912320.html
www.cnblogs.com/cyw1/p/9905822.html