C语言程序设计第三次作业——选择结构(1)
(一)改錯題
將源程序進行編譯,發現有錯誤信息:
錯誤信息1
錯誤原因:scanf語句中沒有用“&”
改正方法:在x前加上“&”
錯誤信息2
錯誤原因:第七行if語句后面多加了;
改正方法:去掉;
錯誤信息3
錯誤原因:第九行語句后面沒有;
改正方法:在句尾加上;
錯誤信息4
錯誤原因:第11行else語句后面不應該加條件
改正方法:去掉else語句后的條件
錯誤信息5
錯誤原因:第15行printf語句里的引號后面和x y之間均未加“,”
改正方法:在引號和x y間均加上,
編譯成功但運行結果有誤
錯誤信息6
錯誤原因:輸入格式不對,因為scanf語句中加了換行語句“\n”
改正方法:去掉“\n”
錯誤信息7
錯誤原因:第15行語句中的%.2f和%.lf表達有誤
改正方法:將%.2f和%.lf均改為%.1f
錯誤信息8
錯誤原因:第7 行if語句中一個=是賦值兩個=才表示等于
改正方法:將=改成==,同時將scanf語句中的=%f改成%lf
編譯及運行結果
改正后的程序
(二)學習總結
1.if(a)if(b) x=x+1;else y=y+1;的確切含義是先判斷是否符合a和b條件,若果符合則執行x=x+1語句 ,若果不符則執行y=y+1語句。該語句的else應與第二個if配對。若要明確表達這種語句要在語句后面加“{ }”,而且else只與離它最近的未配對的一個if配對。代碼段為
2.c語言表達:表達式(-10< x <10)不能表達x在區間(-10,10)內,因為c語言中邏輯運算符的運算都是從左往右的,且運算結果為真得1 為假得0,所以任意輸入一個數,先和左邊的-10比較結果不是1就是0,然后都比10小,所以無論輸入誰都可以。所以此表達不成立。正確的表達式為
3.不能表達
運行程序一,輸入123a得到如下結果
因為輸入的a并沒有被定義,所以系統認為是非法字符,輸入停止,非法字符后面的被自動舍棄。修改程序,定義一個字符型變量,程序如圖
再次運行,結果為
4.關于scanf:
運行程序二,分別輸入123 45和123a,結果如下
原因如下:
因為scanf()函數的返回值是成功讀入數據的個數,此程序中,定義a,b均為整型變量,所以輸入123,45,均為整型數據,均合法,所以返回值為2,而輸入123,a,a為非法字符,所以只有123被賦值了,所以返回值為1,也是正確的。
修改程序(1)
運行結果如下
4.內容總結
通過這一塊的學習,我想強調一些細節性的問題。例如,要正確區分“==”和“=”的含義并能正確運用,還有就是老師一再強調的細節問題,千萬要注意那些標點!標點!標點!(重要的事情說三遍)再有就是不要想當然的把數學性思維運用到這里面。平時寫編程什么的要注意總結錯誤,養成良好習慣。
(三)實驗總結
(1)題目:計算分段函數[2]
(2)流程圖:
(3)源代碼
(4)測試數據及運行結果
(5)實驗分析
問題:
原因:編寫中用到了函數符但是開始時沒有標注
解決方法:在開始標注上#include<math.h>
(1)題目:算術入門之加減乘除
(2)流程圖:
(3)源代碼
(4)測試數據及運行結果
(5)實驗分析
問題:輸入8/6的輸出結果不對
原因:雖然一開始標注了個g為double類型但是執行時沒有標注,應該強制轉換一下
解決方法:在a/b處強制轉換一下
(1)題目:輸出三角形面積和周長
(2)流程圖:
(3)源代碼
(4)測試數據及運行結果
(5)實驗分析
問題:這道題沒多大問題,要真說問題可能就是數學公式沒學好吧。
解決方法:問了同學一下普通三角形的面積公式
4
(1)題目:出租車計價
(2)流程圖:
(3)源代碼
(4)測試數據及運行結果
(5)實驗分析
問題:計算結果總是不對
原因:這道題看似邏輯很復雜,但理清之后其實還可以,但是在表述方面出現了點問題,沒有注意階級運算法則
解決方法:詢問同學后,一起發現問題并改正了
(四)PTA提交列表
轉載于:https://www.cnblogs.com/hbnydx/p/7746968.html
總結
以上是生活随笔為你收集整理的C语言程序设计第三次作业——选择结构(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: flex 布局实现 横穿线效果 自适应文
- 下一篇: node封装mysql模块