【計算機二級】C語言程序設計2022年3月計算機等級考試二級通關課程

- %m.nf的含義是對輸出值進行位數(shù)取舍,具體取舍方式為小數(shù)點前面的位數(shù)為m-n-1(位數(shù)不足時在最高位加上相應數(shù)量空格),小數(shù)點后面保留n位(不會四舍五入).
- 需要注意的是,%m.nf中的m必須大于n
scanf函數(shù)注意事項
- scanf函數(shù)中的所有非轉(zhuǎn)義字符必須原樣輸入
- 例如:對于scanf("input:%d",&a),如果要輸入一個值10給a,在輸入時就必須加上非轉(zhuǎn)義字符input:,即input:10
四舍五入
- 要想做到四舍五入,需要用到強制類型轉(zhuǎn)化(int),例如:小數(shù)位第3位的取整 (int)(x*1000+0.5)/(double)1000
復合運算符
- 復合運算符是對符號右邊的自變量進行的運算
- x%=a ==> x=x%a
- x+=a ==> x=x+a
- x-=a ==> x=x-a
- x*=a ==> x=x*a
- x/=a ==> x=x/a
- 關于輸出格式,允許出現(xiàn)混用的情況即double型數(shù)值可以輸出為float型,輸入則不允許出現(xiàn)混用
- 注釋語句不能嵌套

此題易錯項為D,因為操作者會誤以為x++,y++,++y會先后影響z的取值。實際上,因為賦值運算符的優(yōu)先級高于逗號運算符,因此將x++賦值給z后z=x++就看成一個整體,y++,++y對z的值不會再產(chǎn)生影響。如果要達到D選項的結果,就需要將程序的第4行改為z=(x++,y++,z++).
存儲
整型數(shù)存放在實型變量中時,會自動將整型數(shù)轉(zhuǎn)化為實型數(shù)。例如
float a;
a=10;
中的10在儲存單元中以實型的形式10.000000存儲在實型變量a中
優(yōu)先級
- 逗號運算符的優(yōu)先級最低
- 賦值運算符僅僅比逗號運算符高一點(需要注意的是復合賦值運算符的優(yōu)先級和賦值運算符一樣)
case是關鍵字,不能拿來定義
這道題的答案選D,關于選項中的空格,老師的解釋是在C語言中輸入時對空格的管控不是很嚴格,可以自己再好好看一下相關視頻,再加深一下印象

這個題可以和上面的例題聯(lián)系在一起看,在上一個例題中老師給出的解釋是c語言中輸入時對空格的管控不嚴格,但在下面這道題中老師卻說空格影響了最后a,b的值??此葡嗷ッ埽斘覍Ρ冗@兩道題后發(fā)現(xiàn)上面的題中scanf函數(shù)的雙引號中含有逗號,下面的題中的scanf函數(shù)中雙引號中不含有逗號。以此我推斷逗號時分隔數(shù)據(jù)的關鍵,當scanf函數(shù)中用逗號來分隔時,輸入數(shù)據(jù)時數(shù)據(jù)的分隔以逗號為準,此時空格不會影響數(shù)據(jù)的存儲;當輸入數(shù)據(jù)時沒有逗號等明顯的分隔符號時,空格會充當分隔數(shù)據(jù)的作用

%nd的含義是取n位數(shù)
scanf的輸入問題(以輸入數(shù)字6和7為例)
- scanf("%d,%d",&a,&b) ==> 在輸入時應該為 6,7
- scanf("%d;%d",&a,&b) ==> 在輸入時應該為 6;7
- scanf("%d%d",&a,&b) ==> 在輸入時應該為 6 7
應該注意的是,對于1和2中的scanf函數(shù)中空格不會影響存儲的a,b的值,即" 6 , 7 與6,7的效果是一樣的".