日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言编译器怎么用scanfkl,C语言一些笔记

發布時間:2024/1/23 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言编译器怎么用scanfkl,C语言一些笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

常用頭文件

math.h

常用函數

abs();// 求絕對值 返回值int

sqrt();// 求平方根 返回值double

sin()

stdio.h

printf();

scanf();

getc();

string.h

strlen();

strcpy();

strcmp();

無符號類型

unsigned

浮點數問題

浮點數無法精確存儲的原因

一個單精度的變量只能保證有效數位是7位。7位后面的數字是無意義的,并不準確表示該數

在C語言中盡量避免將一個很大的數和很小的數直接相加或相減,否則會丟失小數

輸出控制符

\t:制表符,輸出8個空格

\r:跳到一行初始位置

char類型的八進制

char c = '\729'; // 錯誤的代碼,以\開頭的是八進制,而八進制不能有9

%m.n問題

scanf()的問題

scanf("%2d %*3d %d", &a, &b);

如果輸入以下信息:

12 345 67

系統會將12賦給a,在%*3d表示讀入3位整數,但不賦值給任何變量,所以跳過345,將67給b

switch

switch與case常量表達式只能是整數類型、字符型;

case只能是常量表達式

二維數組

int a[3][4] = {0}; // 數組的初始化,每個元素都為0

int a[][4] = {1, 2, 3, ...}; // 合法的,可以這么玩

字符數組

可以理解為字符串,C語言中沒有字符串類型,但是可以是字符數組來模擬。

因此,每個字符數組的最后一位是\0

字符串的初始化

char ch[10] = {"xxx"};

char ch[] = "xxx"; // 和上面一樣都是等價的

// 只不過這樣的話,系統會自動在最后面加\0

字符數組與printf應用

char * p = "%d %d";

int a = 10, b = 20;

printf(p, a, b);

字符處理函數

puts(str); // 將一個以'\0'結束的字符串輸出的終端

gets(str); // 從終端輸入字符串到str并返回str首地址

strcat(str1, str2); // 把str2中字符串追加到str1后面,并刪除str1后的'\0'字符,并返回str1的首地址

strcpy(str1, str2); // 將str2中字符拷貝的str1中,最后的'\0'也會拷貝。前提是str1必須可以裝下str2

strcpy(str1, str2, size); // 將str2裝入str1中,指定復制的長度size

strcmp(str1, str2); // 按ASCII碼從左到右逐個比較字符串內容,直到出現'\0',然后返回結構

str1 == str2 返回值==0

str1 > str2 返回值>0

str1 < str2 返回值<0

strlen(str); //返回str的長度,不包括字符串結束符'\0'

strlwr(str); // 將字符串中大寫字母轉換為小寫字母

strupr(str); // 將字符串中小寫字符轉換為大寫字母

變量修飾符

auto : 定義變量默認就是這個

static : 定義靜態變量

register: 使用該關鍵字,變量會存放在寄存器里,有效提高運算速度

extern : 外部變量,放在靜態存儲區,意思就是說別的.c文件可以使用 默認函數就是該類型

宏定義

無參

#define 宏名 字符串(常數,表達式)

在使用的時候,當編譯器掃描到宏時,會直接替換

有參數

#define 宏名(參數表) 字符串

#define ADD(X, Y) (X+Y)

使用

int sum = ADD(5, 10); 展開后 int sum = (5, 10); // 注意替換的時候會有括號的,因為在定義時候就有括號

頭文件

<>:到存放C庫函數的頭文件所在目錄

"":現在當前目錄找,找不到時,回去C庫函數所在目錄找

條件編譯

滿足條件編譯,不滿足不編譯;條件編譯作用:直接在語法檢查的時候判斷是否編譯

使用格式一

#ifdef 標識符

程序段1

#endif

格式二:

#ifdef 標識符

程序段1

#else

程序段2

#end

格式三:

#if 常量表達式

程序段1

#else

程序段2

#endif

函數指針

格式:

類型說明符 (* 指針名)();

類型說明符:函數返回類型

() 表示是一個函數指針

指針數組

int * a[5]; 存放地址的數組

數組指針

指向數組的指針

int (*pl)[5];

數組關于數組名和&數組名

&a+1:是加整個數組的大小

&a[0] + 1:是一個元素的大小

逗號表達式

int a = (2, 3, 4);

// 先計算左邊的操作數,再計算右邊的操作數

// 右邊的操作數的類型的值作為整個表達式的結果

scanf()問題

如果在scanf()中有非輸入控制符,要原樣輸入

如:

scanf("m%d", &a); // 要想使用先輸入m,再輸入要給a的值

三目運算符

格式:A?B:C

等價于

if(A)

B;

else

C;

數據類型

int 、long int、 short int、 char 、 float、double

位運算

運算符

操作

優先級

~

按位取反

1

<<

左移

2

>>

右移

2

&

按位與

3

^

按位異或

4

|

按位或

5

注意事項:

~的運算操作數是1個,其余都是兩個

可以與賦值結合

<<=、>>=、&=、^=、|=

異或運算,相同為1,不同為0

<

操作數直接左移,高位丟掉,低位補0

>>右移

如果無符號右移,空位直接補0

如果是有符號右移,

如果是正數,右移補0

如果是負數,

左邊補1,稱為算數右移【實際上是使用這個】

左邊補0,稱為邏輯右移

動態內存

malloc(size); // 在內存申請開辟長度為size的連續空間

calloc(n, size); // 在內存范圍n個長度為size的連續空間,函數返回初始地址,若分配失敗則返回NULL

free(p); 釋放p指向的內存

共用體

union 共用體名

{

數據類型1 成員1;

數組類型2 成員2;

...

}

為共用體變量分為空間大小是以所有成員中占用空間字節數最大的成員為標準

如:

union Myunion

{

int age;

char names[20];

}

sizeof(union Myunion) == 20

共用體的初始化

只能對第一個成員初始化

共用體在使用的時候,會只保留最后一次對成員賦值的值

與結構體不同的是

只按空間最大的成員來分配空間

在同一時刻,只存放一個成員的值

枚舉

enum 枚舉名

{

枚舉元素

...

}

typedef

typedef 起別名

typedef int Num[100];

Num a; // 那么a就是一個數組,且元素有100個

文件

輸入:數據從文件到內存

輸出:數據從內存到文件

文件分類

按存儲介質分

普通文件

設備文件:鍵盤、鼠標

按數據組織分

文本文件:ASCII碼文件

二進制文件

C語言中文件的操作類型FILE是C為我們定義好的文件結構體

FILE * fp1, *fp2, *fp3;

文件常用函數

fopen(); 打開文件

fclose(); 關閉文件

系統自動打開和關閉的三個標準文件

標注輸入 --- 鍵盤 stdin

標準輸出 --- 顯示器 stdout

標出錯輸出 --- 顯示器 stdern

fopen作用

建立文件信息區

建立文件緩沖區

FILE * fopen(char * name, char * mode);

name: 文件路徑

mode: 打開文件方式

返回值:如果正常打開文件會返回文件結構體地址,反之返回NULL

文件的打開方式

r

打開文件必須存在,且每次都會覆蓋 讀

w

沒有文件立刻建立;有文件覆蓋該文件 寫

rb

二進制

wb

二進制

a

向文件末尾添加新的數據,且文件必須存在

ab

二進制

r+

既讀既寫,文件必須存在

w+

新建一個文件,既讀既寫

a+

源文件不刪除,末尾添加數據,既讀既寫

rb+

ab+

wb+

文本文件:回車 轉換為 換行符

二進制文件:不會轉換

讀寫函數-字符

讀取字符

fgetc(fp):從fp指向文件讀入一個字符并返回,讀成功返回。讀失敗返回EOF既-1

fputc(ch, fp):把字符ch寫到文件指針變量,所指向的文件中

寫成功:返回輸出字符

寫失敗:返回EOF既-1

feof():對于二進制文件讀取時判斷文件是否結束,返回值文件結束為1,否則為0

讀取字符串

fgets(str, n, fp):從fp文件讀入長度為(n-1)的字符串,存入str數組中

返回值:

成功返回str首地址

失敗返回NULL

讀完n-1之前遇到\n或EOF字符,讀入既結束,但也將\n按字符讀入

fputs(str, fp):str所指向的字符數組寫入文件中

返回值:

成功返回0

失敗返回非零

讀寫函數-二進制

fread(buffer, size, count, fp)

fwrite(buffer, size, count, fp)

buffer:要讀/寫首地址

szie:要讀/寫文件大小(長度)

count:要讀/寫數據塊的個數

fp:文件指針

隨機讀寫

rewind(fp):讓文件指針重新指向文件開頭

fseek(fp, 位偏移, 起始點):

起始點:0:文件開始位置;1:當前位置;2:文件末尾

位偏移:long類型加L

fseek(fp, 100L, 0); // 文件開始偏移100個字節

fseek(fp, -10L, 2); // 文件末尾往前偏移10個字節

ftell():獲取文件標記當前指向的位置

ferror(fp):文件讀寫的出錯檢測,0是沒有出錯,非0是出錯;每次讀寫時都會有新的ferror()函數

clearerr():使文件錯誤標志和文件結束標志為0

二進制讀寫2個字節

putw

getw

ASCII碼表

優先級表

總結

以上是生活随笔為你收集整理的c语言编译器怎么用scanfkl,C语言一些笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。