1. 程式人生 > >C語言筆記一(概念)

C語言筆記一(概念)

C語言結構特點

一,概念

  • C語言識別符號只能是字母、數字、下劃線組成,且必須以字母或下劃線作為首字母。
  • 庫函式是C語言本身就存在的函式,如格式化輸入函式scanf,格式化輸出函式printf,還有putchar等等,這些函式不需要定義,可以直接呼叫
  • C語言是由函式構成的,函式是C語言的基本單位,一個C語言總是從主函式開始執行的,一個函式是由兩部分組成:函式的首部和函式體。
  • C語言可以有零個或者若干個子函式。這些子函式可以是庫函式也可以是自定義函式
  1. 一個C語言源程式可以由一個或多個原始檔組成。
  2. 每個原始檔可以由一個或多個函式組成。
  3. 源程式有且僅有一個main函式,即主函式。
  • 演算法:解決問題的方法和步驟。

二、註釋

  1. 單行註釋 //…
  2. 多行註釋 /*…*/ (/和*之間不能有空隔)

三.用當型求12345的乘積

當型求乘積

四、進位制

  • 十進位制:由0~9的數字組成。

  • 八進位制:以0開頭,由0~7的數字序列構成,如0123表示八進位制,換成十進位制:

    1x82 +2x81 +3x80 =83

  • 十六進位制:以0x或0X開頭(這裡0是阿拉伯數字零),可以由數字0~9和字母A ~F或a ~f構成,A ~F字母表示10 ~15。例如,0x2F表示

    2x161 +15x160 =47 即十進位制的47

八進位制 0123 十進位制1x82 +2x81 +3x80 =83
十六進位制0x2F
十進位制2x161 +15x160 =47
若要在函式中輸出轉換進位制,需要在定義時加反斜槓\ | char a=’\x41’ 這裡x41是0x41即十六進位制,0要去掉,此時若putchar(a) 則是輸出十進位制的A

五、指數

  1. 它由數字0~9、字母e或E和+、—組成,它的形式為 aEn,意為aX10n,其中a為十進位制整數或小數n為十進位制整數。例如 2.5e3,表示2.5 x103—3.5e—2 表示 —3.5x10—2

  2. 注意:以指數形式表示實數時,a和n不能省**,n必須為整數。如:e5、 3e2.5都是不合法的。

  3. 以十進位制小數形式表示實數時,整數和小數部分可省略其中一個。如: .35

    、**26.**這兩個都可以。

2. 在ASCLL中小寫字母比大寫字母多32,如a—A=32。

  1. 字串常量是由一對雙引號括起來的字元序列,字串中可以包含任何字元、漢子等等,字串在機記憶體儲時,所佔位元組數等於字串常量中的字元個數加1那加的1個位元組便是用於存放‘\0’(空字元,ASCLL碼為0),它是字串的結束標誌,例如“wei”在記憶體中儲存形式是: wei\0,共佔了四個位元組。(字串常量可以是O個或者多個)
  2. 符號常量,即放在main函式上面的常量,格式為:#define 識別符號 常量
#include <stdio.h>
#define PI 3.14 定義一個圓周率的符合常量
int main() 這個符合常量在main函式之前
**優點**如果這個常量在程式中多次出現,需要更改時,只需在符合常量這裡改,一改全改,****

六、絕對值函式abs、fabs、labs

int abs(int x) 適用於整數
double fabs(double x) 適用於浮點數
long labs(long x) 適用於長整型數
     |abs(—10)等於10  |   | fabs(—5.6)等於5.6 |   | labs(—9999)等於9999 |

七、exp和pow函式

double exp (double x) 表示e為底。引數為X的指數值為ex
double pow (double x,double y) 表示返回x的次冪X^y^
exp(2.0)等於e^2^ =7.389056 pow(2.0 ,3.0 )等於2^3^ =8.0

八、使用fflush (stdin); 來清除輸入緩衝區的內容。

int i;
char c; scanf (“%d”,&i);

scanf(“%c”,&c);
printf(“i=%d,c=%d”,i,c);
return o;
這個程式執行時,正常應該輸入兩個內容,第一個是整數,回車確認後,再輸入第二個內容。然而實際是,如果我們輸入100,
然後按回車鍵確認後,程式隨機結束執行,程式預設把回車鍵當成了一個輸入。打印出i=100,c=10。
出現c=10是因為第二個scanf是輸入%c,因為ASCll碼值10就是回車。為了避免這樣的情況,
當有多個輸入scanf時,可用fflush (stdin);來清除緩衝區的內容。

int i;
char c;
scanf (“%d”,&i);
fflush (stdin); //消除緩衝區內容
scanf(“%c”,&c);
printf(“i=%d,c=%d”,i,c);
return o;

九、字元輸入函式getchar。

#include<stdio.h>

int main()

{

char ch;
ch=getchar(); //getchar函式得到輸入字元,並賦值給字元變數ch

putchar(ch); //輸出字元
return 0;

}

十、算術運算子*、/、%、+、—

  • 用%求餘時,兩個數都必須是整型資料,如下:
8%2 表示式的值為0
5%3 表示式的值為2
5.5%3 編譯錯誤,運算元不能為實數,必須為整型資料
—5%4 表示式的值為—1還是1,具體看編譯器。有的編譯器顯示為1
  • 整數除:兩個整數相除後的結果為商的整數部分,小數部分被捨棄,沒有進行四捨五入的操作。如:1/2的值為0,而不是0.5;再比如15/4的值為3。
  • 實數除:只要相除兩個數中有一個為實數,則結果是實數。如:1.0/2=0.515/4.0=3.75
  • 資料型別轉換原則:低資料型別向高資料型別轉換。
    在這裡插入圖片描述

十一、隨機函式srand和rand

  1. 注意:使用隨機函式時,必須在標頭檔案中包含宣告 #include<stdlib.h>

如圖1: 在這裡插入圖片描述

  • srand函式以時間作為隨機數種子,每次重新整理到的數都會不同,現在是2,2,10,下次重新整理可能會是別的三個數。[提示:在使用srand函式時,若以時間作為隨機數種子,則需要頭部包含宣告 #include <time.h> ]
  • 如圖2:
    在這裡插入圖片描述
  • srand函式以數字1或者其他數字作為隨機數種子,每次儲存重新整理到的數都是一樣的。

十二、型別轉換

  • (double)i——————————表示將i的值轉換成double型。
  • (int)(x+y)————————將x+y的值轉換成int型。
  • (double)1/2————————(double)江湖整數1轉成1.0(雙精度),1.0/2值為0.5。
  • 整數除:若兩個數都是整數,則商為整數部分,如1/2=0而不是0.5。
  • 實數除:兩個數其中一個為實數,則結果為實數,如1.0/2=0.5

十三、

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

十四、 10進位制轉換為2進位制

公式如圖在這裡插入圖片描述