天天看點

第二次作業

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