第二週 資料計算實現與順序程式設計(一)

Carb_5683發表於2016-10-27

看課件的時候,沒有真的很用心去聽,有點急於求成,求量不求質,沒有真正的思考,具體該如何解決的!

沒有指定詳細的計劃,每天的收穫很少,學習能力有待提高

第二章 資料計算實現與順序結構程式設計

2.1 算術運算的C程式實現 + - * / %
2.2 關係運算的C程式實現 >、 >=、 <、 <=
2.3 邏輯運算的C程式實現 && || !
2.4 位運算的C程式實現 & | ^
2.5 幾種很個別的運算 , () []
2.6 混合運算及資料型別轉換
2.7 一個順序結構程式例項

通過這一章學習,我們能夠該知道

  • C程式中都可以實現什麼計算
  • 這些計算解決什麼實際問題
  • 用C程式實現這些計算的思維方式
  • 簡單計算問題的順序結構程式設計

2.1 算術運算的C程式實現

算術運算-整數相除
算術運算-求餘
算術運算-複合運算的作用
算術運算-自增與自減運算
數學算式的C語言表達-算術運算優先順序

2.1算術運算(C程式中的算術表達)

程式設計語言的基本規則包括

  • 常量:在程式執行期間,其值會發生變化的
  • 變數:在程式執行期間,其值不變的量
  • 運算子
  • 表示式
  • 函式

    計算一元二次方程

討論1:檢視d的值是否>=0?

討論2:如果a,b,c為整型,結果如何?

整數相除結果只取整數,小數部分丟失,造成後續運算結果錯誤(編輯器檢查不出這個錯誤)(出現問題,但又不易查到)
1.0/3:浮點型與整型相除的時候,編譯器會先把整數型轉化為浮點型

討論3:如果x1,x2為實型,結果如何?

關於實型和整形資料的在說明

基於計算機的計算思維的一個重要方面:
1. 計算機的基本儲存原理
2. 儲存資源的合理使用
3. 實說有效位:單精度7位
4. 實數不是精確數,將產生累計誤差

整型
實型
字元型
字串

超出表示範圍的數機器如何處理?

實型數的解析度:
最小正數:10-38 小於該數時處理為0 下溢
最大正數;10-38 大於該數時提示出錯 上溢

  1. 實型數在計算機內部都按指數形式存放
  2. 實型數在運算器中都按雙精度計算
  3. 記憶體的儲存精度取決於對變數的定義
  4. 數的有效位限制在最後輸出時是按儲存結構和輸出格式確定的

輸出格式造成的計算錯誤

討論:如果scanf()中使用了(“%4.2f“,&a);結果如何?

scanf()不可以指定資料格式 ”%4.2f”指定了將導致語言系統的不理解,造成原始資料錯誤。 注意:編譯器的錯誤引導

有些錯誤編譯器不告訴你,錯了你都不知道你錯啦

算數運算 – 小結

  1. 運算依賴正確的C語言表示式實現
    1. 整數相除可能得到實型結果,自動丟棄小數部分
    2. scanf()不可以指定資料格“%m.nf”(不允許規定精度,可以指定域寬)

求餘運算

求餘運算:a % b a除以b取餘數
作用:能整除嗎?
例如:一組數X中能被3整除的數有哪些?
判斷方法:X%3為0嗎?

main()
{
    printf("%d,%d,%d,%d\n",13%2,-13%2,247%-58,-66%-15);
}

說明: 求餘運算子的物件必須是整數 為什麼?

得分

自增、自減運算

變數自身加(減)1(自增自減運算)

i++;++i 等價於 i = i+1
i–;–i 等價於 i = i -1

i=3;printf("%d",i++);
i=3;printf("%d",++i);

輸出原來的值3,之後I的值變為4;
i 的值先變為4,之後再輸出4;

  • 求餘多用於判斷整除問題
  • 自增自減於用於計數,控制迴圈
  • 複合運算只是為了簡化程式程式碼

關係運算的C程式實現

關係比較問題與C語言關係表示式

算數式 關係運算子   算數式
  關係運算子 >   >=  <  <=  !=   ==

關係運算子的優先順序高於賦值,低於算術
關係運算子的優先順序低於算數運算

例子: a == x >= 90

比較運算子高於 恆等於運算子

例子: int i =2,j=7,a;
a=i+j%4!=0
a 的值?

算術運算子 的取模運算子的優先順序高於 加法的優先順序 算術運算的優先順序高於關係運算子

a = 18>5>1<1<1/2
a的值?

我的理解是:
算數運算子的優先順序高於關係運算子
1/2 == 0;
同級之間的關係運算子根據其結合方向
18>5嗎? 假的 false 0
0>1 嗎?假的 false 0
0 < 1嗎?真的 ture 1
1 <0 嗎?假的 false 0
a = 0;

a = 18 > 5 +1 <1 < 1/2

算術運算子的優先順序高於比較運算子的

例子 x=10,y=2;表示式x-5<= x+y的值
答案:1真(true)

相關文章