作業要求: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