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,本周學習進度