【C语言督学训练营 第二天】C语言中的数据类型及标准输入输出
文章目錄
- 一、前言
- 二、數據類型
- 1.基本數據類型
- ①.整形
- ②.浮點型
- ③.字符型
- 2.高級數據類型
- 3.數據分類
- ①.常量
- ②.變量
- 三、標準輸入輸出
- 1.scanf
- 2.printf
- 四、進制轉換
- 1.進制轉換簡介
- 2.十進制轉其他進制
- 3.其他進制轉換
- 五、OJ網站的使用
一、前言
王道2024考研408C語言督學營第二天,今天介紹的是C語言的基礎語法,雖然是基礎語法但還是值得我們的注意的,有些細節像我這種練習兩年半的ikun都不知道,當然了基礎知識也并不需要全部掌握,講課的老師都給出了考與不考的提示。
二、數據類型
什么是數據類型呢?舉個栗子裁縫做衣服時需要用到化纖、純棉、絲綢等不同類型的布料,經過裁縫的巧織最終做出了一件非常完美的衣服,那么程序員在編寫程序時也一樣,數據類型就相當于做衣服用到的化纖、純棉、絲綢等不同類型的布料,那么C語言中需要用到哪些數據類型呢?數據類型的分類如下圖所示。
1.基本數據類型
①.整形
整形可以分為短整型、整形、長整形三類,定義時的關鍵字分別是 short、int、long、long long 幾種類型的區分最明顯的特征就是占用的字節數不同。那么說到這里什么是關鍵字呢?關鍵字就是C語言編譯器已經占用了的英文單詞,可以使用這些英文單詞告訴編譯器我們需要讓他做什么。講課的講師也給出了詳細的解釋,C語言中的關鍵字有以下幾種,考試不會考、寫代碼時集成開發環境會有提示(也就是不用記),大家只需了解即可。
說完關鍵字就要開始說整形的概念了:整形可以通俗的理解為整數,可以分為整形符號常量、整形變量。可以使用以下代碼體會一下整形。
整形符號常量,僅僅做位置的替換,并不會直接參與運算,可以從以下一個例子體會到
#include <stdio.h> #define PI 3+2 int main(){printf("Hello!PI*2=%d,2*PI=%d",PI*2,2*PI);return 0; }
體會一下整形變量的使用:這里捎帶介紹一下整除,兩個整形相除會向下取整。體現在了下面例子
要想得出正確的結果需要進行強制類型轉換:
②.浮點型
浮點型可以分為單精度浮點型與雙精度浮點型,定義時使用的關鍵字是float、double。明顯的區別是小數點后面位數不同(精度不同)。
-
浮點型常量
表示浮點型常量的形式有兩種,如下表所示,其中e代表10的冪次,冪次可正可負.
注意:字母e之前必須有數字才是科學計數法,否則會報錯! -
浮點型變量
使用float、double聲明的變量。
③.字符型
- 字符型常量
用單引號括起來的一個字符是字符型常量,且只能包含一個字符! 例如, ‘a’、‘A’、‘1’、’ ‘是正確的字符型常量,而’abc’. “a”、""是錯誤的字符型常量.下表中給出了各種轉義字符及具作用。以“\”開頭的特殊字符稱為轉義字符,轉義字符用來表示回車、退格等功能鍵。
- 字符型變量
使用char關鍵字定義,占用一個字節大小的空間。常用的字符都會對應ASCII碼表中的一個數值,ASCII (American Standard Code for Information Interchange):美國信息交換標準代碼是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言。它是最通用的信息交換標準,并等同于國際標準 ISO/IEC 646。ASCII第一次以規范標準的類型發表是在1967年,最后一次更新則是在1986年,到目前為止共定義了128個字符,下圖列明了ASCII碼。說這個的目的是因為字符變量可以進行相應的代數運算,比如a+32=A。比較簡單大家可以自行嘗試!
- 字符串C語言沒有字符串類型,所以也就不存在字符串變量了!
2.高級數據類型
這幾種數據類型是C語言的精髓,特別是指針,學會了指針可以用C語言走遍天下!后面會詳細介紹,這里僅僅是提一嘴。
- ①.數組
- ②.結構體
- ③.指針
3.數據分類
這里就直接列概念了,不理解的評論區留言吧!
①.常量
②.變量
三、標準輸入輸出
這里的輸入輸出都是標準庫中的格式化輸入輸出,所以在使用的時候一定要著重注意格式化三個字。
1.scanf
如下圖所示,程序員可以給程序輸入數據,程序處理后會返回一個輸出,C語言通過函數庫讀取標準輸人,然后通過對應函數處理將結果打印到屏幕上。
C語言未提供輸入/輸出關鍵字,其輸入和輸出是通過標準函數庫來實現的,C語言通過scanf函數讀取鍵盤輸入,鍵盤輸入又被稱為標準輸入,當scanf 函數讀取標準輸入時,如果還沒有輸入任何內容,那么scanf函數會被卡住(專業用語為阻塞)。想要將緩沖區的內容讀進變量,需要將變量的地址傳進去,簡單類型的變量要進行取地址,復雜的直接寫變量名即可(需要自己后期注意),下面給一些使用的例子:
-
不寫取地址符
- 沒有取地址,輸入之后并未返回0,程序異常退出。
- 取地址之后,返回值為0
- 沒有取地址,輸入之后并未返回0,程序異常退出。
-
不按格式化輸入輸出
-
不按格式化輸入輸出(數據異常)
-
按照格式化輸入輸出(正常)
-
-
吞掉回車(緩沖區原因)
-
異常情況(可以看出,輸完兩個1沒有讓那個我們對c進行數據輸入)
-
修改之后(使用fflush清空緩沖區,或者使用scanf吞掉回車符)
-
原因分析:scanf在讀取整形、浮點數、字符串時會忽略緩沖區的\n,但是在讀取字符c時并不會忽略,所以在使用的時候尤其要注意%c的位置,以防因為格式或者緩沖區問題出錯。本樣例就是因為字符型在沒有清空緩沖區情況下讀取到了第一次輸入到緩沖區的換行符。先讀取整形后讀取字符串也會受換行符的影響!
-
小結:使用scanf一定要注意&取地址符、格式化輸入、字符型數據的讀取!
2.printf
printf函數可以輸出各種類型的數據,包括整型、浮點型、字符型、字符串型等,
實際原理是printf函數將這些類型的數據格式化為字符串后,放入標準輸出緩沖區,然后將結果顯示到屏幕上。
函數原型:int printf(const char *format,...)
字符串格式(format)由兩部分組成:顯示到屏幕上的字符和定義printf函數顯示的其他 參數.我們可以指定一個包含文本在內的format字符串,也可以是映射到printf的其他參數的 “特殊”字符,如下列代碼所示:
其中,%s表示在該位置插入首個參數(一個字符串),%0表示第二個參數(一個整數)應該 放在哪里.不同的%codes表示不同的變量類型,也可以限制變量的長度.printf函數的具體代 碼格式如下表所示:
| %c | 字符 |
| %d | 整形 |
| %f | 單精度浮點數,lf雙精度浮點數 |
| %s | 字符串 |
| %u | 無符號整數 |
| %x | 無符號十六進制數 |
| %X | 無符號十六進制數 |
| %p | 一個指針 |
| %% | 一個%,符號 |
位于%和格式化命令之間的一個整數被稱為最小字段寬度說明符,通常會加上空格來控制格式使用方法如下:
其中負整數代表左對齊,正整數代表右對齊。
四、進制轉換
1.進制轉換簡介
計算機只認識0與1,是因為我們編寫的代碼編譯之后每一個操作都將會以高低電平的方式進行傳輸,這個高低電平并不是絕對的低電平相同,高電平相同,而是低電平處于一個范圍,高電平處于一個范圍。而只包含0與1的數據就是二進制所以在進行進制轉換時常常與二進制脫不開關系。
2.十進制轉其他進制
這里用到的是初中或者小學學到的知識好像。可以根據這個方法可以將十進制轉換其余進制進行推廣。
3.其他進制轉換
- 二進制轉其余進制(這里可以很方便的轉向2的指數函數進制),思想是整體化局部
- 其余進制轉10進制一般先轉為二進制,再使用二進制轉10進制的方法轉換(一眼看出答案請忽略)。
五、OJ網站的使用
今天這節課,老師還分享了一個OJ網站,但是從老師的語氣中聽出并不是推薦大家在考研期間報藍橋杯,所以我認為老師的OJ網站應該不會出太難的算法題,應該會以基礎語法或者輸入輸出格式為主,這里我看到老師使用的OJ是通過Github上一個開源項目搭建的,我也嘗試搭建了一下,搭建成功但是只進行了測試,判題機也可以使用,希望后期我可以有測試用例,然后供大家使用,大家感興趣的話也可以去試試。傳送門
如果大家有什么疑問,歡迎評論區留言或者私信博主!
總結
以上是生活随笔為你收集整理的【C语言督学训练营 第二天】C语言中的数据类型及标准输入输出的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue.js移动端记账本完成的总结(未完
- 下一篇: 玩客云刷home assistant(2