第四周作業


1,題目一:計算分段函數
1,實驗代碼

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

 } 

2,設計思路
(1)主要描述題目算法
第一步,寫好基本框架。
第二步,使用雙精度浮點型變量double定義變量x和y。
第三步,采用scanf句型。
第四步,采用if ,else句型進行篩選。
第五步,輸出f(x)=y。
第六步,結束;
(2)流程圖

3,本題調試過程碰到問題及解決辦法
<1>開頭定義的是整型int main,且輸入的x也為整數,為什么卻用double定義x,我還沒弄清。
<2>下面出現了一個錯誤,查字典也不知道它說些什么,我找了半天才發現一個細微的錯誤,就是在(x=0)中少加了一個=號。哎,可花了我不少時間。

2,題目二:A除以B
1,實驗代碼

#include<stdio.h>
int main()
{
	int a,b;
	double y;
	scanf("%d %d",&a,&b);
	y = (double)a/b;
	if (b>0) 
              printf("%d/%d=%.2f",a,b,y);
	if (b<0)  
              printf("%d/(%d)=%.2f",a,b,y);
	if (b==0) 
              printf("%d/0=Error",a);
	return 0;
	
 }

2,設計思路
(1)主要描述題目算法
第一步,寫好基本框架。
第二步,使用int 定義a,b。雙精度浮點型變量double定義變量y。然后確立y與a和b之間的關系。
第三步,采用scanf句型。
第四步,采用if 句型進行篩選(我選了最簡單的方法)。
第五步,輸出y。
第六步,結束;
(2)流程圖

3,本題調試過程碰到問題及解決辦法
<1>一開始我是用自己的方法做的,出現了下面的情況,a/b還是整數型的,它將小數部分省略了。

我將int改為double后,又在%f之間加.0。在c++上都能編譯出,但在pta 上就是錯,真不知道怎么搞的.


怪不得錯了,當我用如下圖所示計算時就與條件不符了。

上圖有一個地方我發現了錯誤:%.0f其中的.0是四舍五入的意思,。然后我又改進了方法,得到了下圖的提示,不過還是錯,老師,助教,這題我真的需要你們的幫助了,我問了同學,他是下圖右邊版本的,我感覺差不多啊。就是我沒加\if(-100>A||A>100||-100>B||B>100)printf("the input is error");。等我加了后還是同樣的提示,我就無語了。

按照我自己的思路就是錯,我請教了同學,他們跟我的思路不一樣。我真的花了好多時間去找,可是一無所獲,希望老師和助教看到后能給我一點啟發。

3,題目三:三天打魚,兩天曬網
1,實驗代碼

#include<stdio.h>
int main()
{
  int x,y;
  scanf("%d",&x);
  y=x%5;
  if(y>3||y==0)
       printf("Drying in day %d",x);
  else  
       printf("Fishing in day %d",x);
  
  return 0;
}

2,設計思路
(1)主要描述題目算法
第一步,寫好基本框架。
第二步,使用int 定義變量
第三步,采用scanf句型。確立x與y的關系。
第四步,采用if 句型進行篩選
第五步,結束;
(2)流程圖
3,本題調試過程碰到問題及解決辦法
<1>一開始按照我自己的思路是按照下圖所寫可是出現了一個小情況,然后我就發現是y的范圍寫錯了。

<2>我又換了另外一種方法,我的漏洞一下子就出來了,舉個例子,y大於等於0且小於等於3,應寫成y>=0&&y<=3.應注意其中等於號與大小於號之間的位置位置,否則就是錯。

4,題目四: 12-24小時制
1,實驗代碼

#include<stdio.h>  
int main()  
{  
    char c;  
    int a, b;  
    scanf("%d%c%d", &a, &c, &b);  
    if (a >= 12)  
    {  
  
        if (a >= 13)//計算大於等於13點的  
        {  
            if (a == 24)  
                printf("0:%d AM\n", b);  
            else  
            {  
                a = a - 12;  
                printf("%d:%d PM\n", a, b);  
            }  
        }  
        else  
            printf("%d:%d PM\n", a, b);//計算12點的  
    }  
    else//計算小於12點的  
        printf("%d:%d AM\n", a, b);  
    return 0;  
}  

(1)主要描述題目算法
第一步,寫好基本框架。
第二步,使用int 定義變量,還要使用字符型變量char。
第三步,采用scanf句型。
第四步,采用if 句型進行篩選
第五步,結束;
(2)流程圖
3,本題調試過程碰到問題及解決辦法
沒問題

5,題目五: 計算個人所得稅
1,實驗代碼

#include<stdio.h>
int main()
{
  int x;
  double y;
  scanf("%d",&x);
  if (x<=1600) y=0;
  if (x>1600&&x<=2500) y=(x-1600)*0.05;
  if (x>2500&&x<=3500) y=(x-1600)*0.10;
  if (x>3500&&x<=4500) y=(x-1600)*0.15;
  if (x>4500) y=(x-1600)*0.20;
  printf("%.2f",y);
  return 0;
}

2,設計思路
(1)主要描述題目算法
第一步,寫好基本框架。
第二步,使用int 和double定義變量
第三步,采用scanf句型。確立x與y的關系。
第四步,采用if 句型進行篩選
第五步,結束;
(2)流程圖
3,本題調試過程碰到問題及解決辦法
<1>我剛開始以為乘以百分之五是這樣的:5%。結果我發現是錯誤的。然后就用0.05代替了。暫時還沒有找到答案。

6,題目六: 階梯電價
1,實驗代碼

#include<stdio.h>
int main()
{
  int x;
  double y;
  scanf("%d",&x);
  if(x>=0&&x<=50) 
          y=x*0.53,
          printf("cost = %.2f",y);
  if (x>50)
          y=50*0.53+(x-50)*0.58,
          printf("cost = %.2f",y);
  if(x<0) 
          printf("Invalid Value!");
  return 0;
}

2,設計思路
(1)主要描述題目算法
第一步,寫好基本框架。
第二步,使用int 和double定義變量
第三步,采用scanf句型。確立x與y的關系。
第四步,采用if 句型進行篩選
第五步,結束;
(2)流程圖

3,本題調試過程碰到問題及解決辦法
終於碰到一個一個能在十分鍾內解決的問題了,這題沒問題。

7,題目七: 出租車計價
1,實驗代碼

#include<stdio.h>
int main()
{
  double a,c;
  int b;
  scanf("%lf %d",&a,&b);
  if(a<=3){if (b<5) c=10;
               else c=10+2*(b/5);
  }
  if(a>3&&a<=10){if (b<5) c=10+2*(a-3);
                        else c=10+2*(a-3)+2*(b/5);
  }
  if(a>10) {if (b<5) c=24+3*(a-10);
            else c=24+3*(a-10)+2*(b/5);
  }
  printf("%.0f",c);
  return 0;
}

2,設計思路
(1)主要描述題目算法
第一步,寫好基本框架。
第二步,使用int 和double定義變量
第三步,采用scanf句型。確立a,b,c之間的的關系。
第四步,采用if 句型進行篩選
第五步,結束;
(2)流程圖

3,本題調試過程碰到問題及解決辦法
終於碰到一個一個能在十五分鍾內解決的問題了,這題沒問題。

8,我的GIT賬號為
https://coding.net/u/AI1452349541/p/H.K.2.1/git
下面是上傳成功的截圖

9,本周學習內容總結
1,復習了if語句,對分段函數的編程有了更深入的了解。
2,學習了有關字符型變量的編程,了解了字符型與數字型編程的區別。
3,學會了一些C語言中數學符號的含義,比如a=2;b=a++則表示先將a的值賦給b,a再加1,則a=3,b=2.而b=++a則表示a先加1,,然后再將a的值賦給b。
4,學會了四舍五入的表示方法,%.0f就是表示將最后輸出的值四舍五入。

10,點評同學作業
http://www.cnblogs.com/gzk08-20/p/7709327.html
http://www.cnblogs.com/zxwd/p/7718920.html
http://www.cnblogs.com/1999-09-22/p/7745742.html

11,本周學習進度


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM