首页 > 技术文章 > PTA題目的處理(二)

lixiaojing 2017-10-28 14:52 原文

題目7-1 計算分段函數[1]

1.實驗代碼

#include <stdio.h>
int main()
{
  float x,y;
  scanf("%f",&x);
  if(x==0)
  {
    y=0;
    printf("f(%.1f) = %.1f",x,y);
  }
  else
  {
    y=1/x;
    printf("f(%.1f) = %.1f",x,y);
  }
  return 0;
}

2.設計思路

(1)第一步:輸入實數自變量x

第二步:若自变量x=0,则实数因变量y=0,否则因变量y=1/x

第三步:输出f(x)=y(x和y各保留一位小数)

(2)

3.調試過程中無問題

題目7-2 A除以B

1.實驗代碼

#include <stdio.h>
int main()
{
  signed int A,B;
  double C;
  scanf("%d %d",&A,&B);
  if(B==0)
  {
    printf("%d/%d=Error",A,B);
  }
  else if(B>0)
  {
    C=(double)A/B;
    printf("%d/%d=%.2f",A,B,C);
  }
  else
  {
    C=(double)A/B;
    printf("%d/(%d)=%.2f",A,B,C);
  }
  return 0;
}

2.設計思路

(1)第一步:輸入整數A,B

第二步:若B=0,則輸出A/B=Error,否則下一步

第三步:實數C=A/B

第四步:若B>0,輸出A/B=C(C保留兩位小數),否則輸出A/(B)=C(C保留兩位小數)

(2)

 

3.調試過程中無問題

題目7-6 階梯電價

1.實驗代碼

#include <stdio.h>
#define sold 26.5
int main()
{
  float consumption,cost;
  scanf("%f",&consumption);
  if(consumption<=50&&consumption>=0)
  {
    cost=consumption*0.53;
    printf("cost = %.2f",cost);
  }
  else if(consumption<0)
  {
    printf("Invalid Value!");
  }
  else
  {
    cost=(consumption-50)*0.58+sold;
    printf("cost = %.2f",cost);
  }
}

2.設計思路

(1)第一步:輸入實數用電量consumption,令使用50千瓦時的電價sold=26,5

第二步:若0<=consumption<=50,則實數電價cost=consumption*0.53,然後輸出cost=cost(後一個cost保留兩位小數),否則下一步

第三步:若consumption=<0,則輸出Invalid Value!,否則下一步

第四步:cost=(consumption-50)*0.58+sold,輸出cost=cost(cost保留兩位小數)

(2)

3.調試過程中無問題

題目7-7 出租車計價

1.實驗代碼

#include <stdio.h>
#define price1 10.0f
#define price2 24.0f
int main()
{
  float distance,cost1,cost2;
  int minute;
  scanf("%f %d",&distance,&minute);
  if(distance<=3.0f)
  {
    cost1=price1;
  }
  else if(distance<=10.0f)
  {
    cost1=price1+(distance-3)*2.0f;
  }
  else
  {
    cost1=price2+(distance-10)*3;
  }
  if(minute>=5)
  {
    if((minute%5)==0)
    {
      cost2=cost1+(minute/5)*2.0f;
      printf("%.0f",cost2);
    }
    else
    {
      cost2=cost1+(minute/5)*2;
      printf("%.0f",cost2);
    }
  }
  else
  {
    cost2=cost1;
    printf("%.0f",cost2);
  }
  return 0;
}

2.設計思路

(1)第一步:令起步價price1=10,超10公里後的價格price2=24,輸入實數路程distance、整數時間分鐘minute

第二步:若distance<=3,則路程費cost1=price1,跳到第四步,否則下一步

第三步:若distance<=10,則cost1=price1+(distance-3)*2,跳到第四步,否則cost1=price2+(distance-10)*3,跳到第四步

第四步:若minute>=5,則總車價cost2=cost1+(minute/5)*2,否則cost2=cost1

第五步:輸出cost2(cost2四捨五入取整數)

(2)

3.問題1:沒搞清楚超出10km是什麼意思,不知道是在3km的基礎上再超出10km還是就只行駛了10km

解決辦法:通過提交答案判斷正誤知道是只是行駛了10km

問題2:不知道題目中少於5分鐘的到底是什麼意思,是總時間小於5分鐘的不算錢,還是5分鐘的都算完後剩下不滿5分鐘的不收費

解決辦法:通過提交答案知道多出來的不滿5分鐘和總時間小於5分鐘的都不算錢

Git地址:https://git.coding.net/MemoriesBook/123.git

代碼行數 時間 博客字數 時間 涉及知識點
 200 10.21  0  3  if語句
 1000 10.22  1000  7  if語句
 20 10.23  0  1.5  if語句
 0 10.24  0  0  無
 100 10.25  0  1.5  if語句,for語句,輸入輸出
 0 10.26  0  0  無
 0 10.27  1000  2  無
 0 10.28  100  4  無
 0 10.29  0  0  無

馮子旋的博客地址:http://www.cnblogs.com/fengzx/p/7745112.html

董欣的博客地址:http://www.cnblogs.com/dx2017/p/7726120.html

董雅潔的博客地址:http://www.cnblogs.com/exo123/p/7737213.html

 ***學習終結**本週主要學習了if語句的else if的部分,還講了部分PTA的題目,同時在上課時老師稍微提了一下for語句,為了讓我們知道if語句是一條語句,並不是多條語句。遇到的問題是:if後面是不是一定要加else,客上講的例子有些沒有else也是對的,但是PTA上做的時候else if裡面是一定要加else的。

 

推荐阅读