C語言基礎知識(上)

#C語言基礎知識

一、簡單程序的的一般形式? #include//標準輸入輸出文件,讓當前文件有文件的功能

//main函數是程序的入口,一個程序有且只有一個main函數

二、基本數據類型

1、整型

(1)short 短整數類型,占兩個字節(jié),取值范圍,五位數

1)無符號類型(不包含負整數)

2)有符號類型(包含負整數)

(2)int 整數類型,占四個字節(jié),取值范圍,十位數

(3)long 長整型,32位的系統(tǒng)占四個字節(jié),64位的系統(tǒng)占八個字節(jié),取值范圍,超過十位數

2、浮點型

(1)float 單精度浮點數類型,占四個字節(jié),6位有效數字

(2)double 雙精度浮點類型,占八個字節(jié),15位有效數字

注:系統(tǒng)默認類型是double類型,在使用float類型時,需要在數字后面加f

3、字符型

(1)char占一個字節(jié),單引號括起來

(2)用以存儲字符或標點等字符

(3)字符在計算機中采用二進制的ASCII碼存儲,字符可以通過對應的ASCII碼值來比較大小

4、總結

(1)整型有四種類型,short兩個字節(jié),五位數 int四個字節(jié),十位數 long超過十位數

(2)浮點型有兩種,float四個字節(jié),6位有效數字 double8個字節(jié),15位有效數字(系統(tǒng)默認的是double類型)

(3)char用于存儲字符及標點

三、常量、變量

1. 常量:程序運行期間值不能被改變的值

比如:

3

5

2.3

'R'

2. 變量:程序運行期間值能被改變的值

1) 變量代表一個存儲區(qū)域

2) 存儲區(qū)域內存儲的內容就是變量的值

3) 變量的值可以在程序運行期間改變

3. 變量的定義

1) 變量定義

格式

數據類型 變量名 = 初始值;

int age = 25;

int 指整數類型

age 指變量名

=? 指將后面的初始值賦給變量

25? 指初始值

;? 指語句結束

2) 變量、常量命名規(guī)則

1. 只能由數字、字母、下劃線組成,并且不能以數字開頭

2. 不可以與系統(tǒng)保留字同名

3. 見名知意

4. 不能使用重復的變量名

5. 駝峰命名法(myTom)

四、運算符

1. 賦值運算符

用于給變量賦值,將等號右邊的值賦給等號左邊的變量

練習:如何交換兩個int型變量的值

int a=1,b=2,c;

c=a;

a=b;

b=c;

2. 算術運算符

+? -? *? /? %

1) 除號右邊的數字不能為0

2) 取余運算符兩邊必須都是整數

3) 兩個整數相除,得到的是整數

4) 小數和整數相除,得到的小數

++? --

1) ++或--在前,先執(zhí)行++或--,后運算(先加后用)

2) --或++在后,先運算,后執(zhí)行++或--(先用后加)

3. 復合運算符

+=? -=? *=? /=? %=

1) a += b; ==> a = a+b;

2) a -= b; ==> a = a-b;

....

4. 條件運算符

格式: 條件表達式 ? 真結果表達式 : 假結果表達式

比如:

int a = 3;

int b = 5;

int c = 0;

c = a > b ? a : b;

附加:

int a=1; (char result;)

(char)result =a == 1 ? 'b' : 'c';

printf("%c\n",result+a);

5. 總結:必須掌握的內容

1) =? ? +=

2) ++? --

3) 條件運算符

4) == 兩個等號是判斷

五. 表達式

1. 常量、變量、運算符的組合

2. 每個表達式都會有運算結果

3. 例如: 3+5, a+b

4. 語句,用結束處的一個分號表示,語句是程序執(zhí)行的最小單位

六. 輸入、輸出函數

1. 輸出函數 printf()

1) printf函數被設計用于顯示格式串,并在該串中的指定位置插入可能的值

2) 格式:

printf("格式串",表達式1,表達式2,...);

3) 格式串中包含普通字符和轉換說明

1. 轉換說明以字符%開頭。是用來表示打印過程中待填充的占位符,如果后面跟的是d,表明打印時要在這個位置打印出一個整形數據。

2. 普通字符,會將普通字符完整的打印出來

4) 轉換說明符

%d 整型

%hd 短整型

%ld 長整形

%f 單、雙精度浮點數

%c 字符

5) 格式轉換控制

printf("%04d",12) 最小字段占四個位置,不足用0補齊,如果不加0試試效果

printf("%-4d",112);最小字段寬度占四個位置,左對齊

printf("%4.2f",1.2345);

最小字段寬度占四個位置,保留小數點后兩位

注:

\n換行 %與d之間的數字,表明打印的這個數字要占相應的位數

int a=1;? ? char result;

result = a == 1 ? 'b' : 'c';

printf("%-3c\n",result);

//在float類型中,%與d之間的數字,整數部分代表總共占的位數,小數點后面的代表小數所占得位數

float a = 1.6f;

printf("%4.1f\n",a);

6) 轉義序列

\n? 回車符

\\? 打印\

%%? 打印%

\‘? 打印’

2. 輸入函數 scanf()

1) scanf以回車確定輸入結束,并且只接受大鍵盤的回車,不接受小鍵盤的回車

2) scanf("%d,%d",&num1,&num2); 輸入的時候兩個整型數之間必須有『,』,格式串中除了轉換說明的其他字符都要從控制臺輸入

3) 不要在格式串后面加『\n』字符,會抵消掉人工輸入的回車

#分支語句(布爾類型、關系運算符、邏輯運算符、if語句分支、switch語句、枚舉)

一.布爾類型 ? ? ? ??

1.只有兩種真和假? ??

?2.賦值true和非0的值 為真? ??

?3.賦值0 為假 (只有0和false為假)? ??

4.Xcode默認沒有布爾類型,需要導入文件,需要導入<stdboll.h>頭文件

例:

//? ? bool k = false;

//? ? printf("k = %d\n",k);

二.關系運算符

> >= < <= == !=

他們最終結果一般使用布爾類型的變量來接收

例:

//? ? bool result = 5==6;

//? ? printf("result = %d\n",result);

三.邏輯運算符

邏輯與 && (全真為真)

邏輯或 || (一真為真)

邏輯非 !? (取反值)

例:

//? ? bool result = 8>6 && 6>3;

//? ? printf("result = %d\n",result);

//

//? ? bool result1 = true;

//? ? result1 = !result1;

//? ? printf("result1 = %d\n",result1);

四.if語句分支

if(判斷條件){

執(zhí)行語句;(條件為真時執(zhí)行語句)

}

else if(判斷條件){

執(zhí)行語句;

}

else

執(zhí)行語句;

例:

char a = ' ';

printf("輸入一個字符:");

scanf("%c",&a);

if (48 <= a && a <= 57) {

printf("This is a number\n");

}

else if (97 <= a && a <= 122) {

printf("This is a lower\n");

}

else if (65 <= a && a <= 90) {

printf("This is a upper\n");

}

else{

printf("no know\n");

}

switch語句

/*

多重選擇,比if-else判斷條件多

格式:switch(表達式){

case 可能的值:{

執(zhí)行語句:

}break;

case 可能的值:{

執(zhí)行語句:

}break;

default:{

}break;

}

五.switch語句

多重選擇,比if-else判斷條件多

格式:switch(表達式){

case 可能的值:{

執(zhí)行語句:

}break;

case 可能的值:{

執(zhí)行語句:

}break;

default:{

}break;

}

六.枚舉

1.枚舉目的:提高程序的可讀性

2.枚舉一般放在頭文件下面,屬于全局常量

3.enum 枚舉名{ 枚舉值 = 0/a,枚舉值(默認1或b),枚舉值(默認2或c),枚舉值(默認3或d),}

例:

enum season{ sp=1, su, au, wi};

int a = 0;

printf("輸入一個數字:");

scanf("%d",&a);

switch (a) {

case sp :

printf("spring 春天\n");

break;

case su :

printf("summer 夏天\n");

break;

case au :

printf("autumn 秋天\n");

break;

case wi :

printf("winter 冬天\n");

break;

default:

printf("不知道是哪天\n");

break;

#.循環(huán)語句(while循環(huán)、do...while循環(huán)、break,continue、for循環(huán))

循環(huán):滿足條件時,反復執(zhí)行的某一動作

while(較常用)

do..while (不常用)

for (最常用)

1.while循環(huán)

格式:

while(判斷條件){

循環(huán)語句;

}

只要條件成立,循環(huán)體會一直執(zhí)行

循環(huán)體執(zhí)行結束,會重新判斷條件是否成立

例:

int a = 0;

scanf("%d",&a);

while (a > 6) {

printf("never give up");

}

2.do...while循環(huán) (直到型循環(huán))

先執(zhí)行一次循環(huán)體,再進行判斷,成立會繼續(xù)執(zhí)行

格式:

do{

循環(huán)體;

}while(判斷條件);

例:

輸出1到100

int i = 1;

do {

printf("%3d",i);

i++;

} while (i<=100);

3.break,continue

break: 跳出while循環(huán) (結束的是整個循環(huán),不再往下執(zhí)行)

continue: 結束本次循環(huán) (結束的是這次循環(huán),continue下面未執(zhí)行的循環(huán)語句也結束,重新判斷條件)

例:

int i = 0;

while (1) {

if (i==100) {

break;//結束整個循環(huán)

} i++;

if (i==9) {

continue;//結束的是本次循環(huán),及i=9時這次循環(huán)

}

printf("%d\n",i);

}

4.for循環(huán)

for(初始值;判斷條件;讓初始值自加或自減)

{

循環(huán)語句;

}

1.首先確定初始值,確定循環(huán)的起始點

2.看判斷條件,條件成立,執(zhí)行循環(huán)體;不成立,直接跳出for循環(huán)

3.循環(huán)體結束后,看自加或自減

4.自加或自減后,判斷條件是否成立;成立,執(zhí)行循環(huán)體,不成立,跳出循環(huán)

例:

打印9x9乘法表

外層循環(huán)i表示要打印多少行,內層循環(huán)j表示每行要打印多少個

for (int i = 1; i<10; i++) {

for (int j = 1; j<=i; j++) {

printf("%d*%d=%-3d ",j,i,i*j);

}

printf("\n");

}

例:S(n)=a+aa+aaa+aaaa+...+aaaa..(n個a)

int? a = 0, n = 0,S = 0,b = 0;

printf("輸入n和a的值:");

scanf("%d,%d",&n,&a);

for (int i = 1; i <=n;i++)

{

b = 10*b + a;

S +=b;

}

printf("%d",S);

printf("\n");

#一維數組,隨機數,宏定義,冒泡排序

1.一維數組

數組:能夠存放多個同類型的數值,相當于一個存放數值的容器

格式:int list[4] = {1,2,3,4};

數據類型 數組名 [數組容量] = {賦初值};

例:

通過for循環(huán)改變下標,從而有順序的輸出數組中的值

? int ageOfAll[6] = {1,2,3,4,5,6};

// int ageOfAll002 = ageOfAll[1];

ageOfAll[1] = 9;

//? printf("年齡是:%d\n",ageOfAll[1]);

for (int i =0; i<6; i++) {

int temp =ageOfAll[i];

printf("%d",temp);

}

例:

//創(chuàng)建一個數組,存放班里所有人的工號

? ?int number[12]={0};

printf("工號是:");

for (int i=0;i<12;i++) {

number [i]=i+1;

}

for (int i=0;i<12;i++) {

printf("%03d ",number[i]);

}

printf("\n");

2.宏定義

編譯時,系統(tǒng)會將宏定義的新值給宏定義的名字

格式:

#define 宏定義名字 宏定義要替代的內容

例:

#define NUMBER 9 (NUMBER 指代的內容就是9)

無參數的宏定義:

#define NUMBER 9

有參數的宏定義:

#define ADD(A,B) A+B

例:

#define TEST 90

#define? ADD(A,B) A+B

int a = TEST;

int sum = ADD(1,2);

printf("%d %d\n",a,sum);

3.隨機數? ? ?? ?

#define A 3? ??

int a[A] = {};? ??

printf("輸入數組a中的第一個值:");? ??

scanf("%d",&a[0]);? ??

printf("數組a中的第一個值是%d\n",a[0]);? ? ? ? ? ??

printf("輸入數組a中的第二個值:");? ??

scanf("%d",&a[1]);? ??

printf("數組a中的第二個值是%d\n",a[1]);? ? ? ??

printf("輸入數組a中的第三個值:");? ??

scanf("%d",&a[2]);? ??

printf("數組a中的第三個值是%d\n",a[2]);?


//通過for循環(huán)改變下標,往數組里面依次輸入值? ? ? ? ??

#define A 3? //(宏定義)

int a[A] ={};

for (int index =0; index<A;index++){

printf("輸入第%d個值:",index+1);

scanf("%d",&a[index]);

}

//依次輸出數組里面的值

for (int index =0; index<A;index++) {

printf("第%d個值是:%d\n",index+1,a[index]);

}

#include<stdlib.h>//隨機數頭文件

例:

在數組a中放10個0-9的隨機數

產生10隨機數,并打印出最大值

#define A 10? //(宏定義)

int a[A] ={};

//往數組里面放隨機值

for (int i=0; i<A;i++){

a[i] = arc4random()%10;

}

//找到數組中的最大值

int max =0;? ?

?for (int i =0; i<A;i++){

if (a[i]>max){

max=a[i];

}

}

//打印出數組

for (int i =0; i<A;i++){

printf("%4d",a[i]);

}

printf("\n最大值是:%d\n",max);

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 第1章 第一個C程序第2章 C語言基礎第3章 變量和數據類型第4章 順序結構程序設計第5章 條件結構程序設計第6章...
    小獅子365閱讀 10,723評論 3 71
  • 數組在程序設計中,為了處理方便, 把具有相同類型的若干變量按有序的形式組織起來。這些按序排列的同類數據元素的集合稱...
    朱森閱讀 4,007評論 2 13
  • 指針是C語言中廣泛使用的一種數據類型。 運用指針編程是C語言最主要的風格之一。利用指針變量可以表示各種數據結構; ...
    朱森閱讀 3,473評論 3 44
  • C語言的學習要從基礎開始,這里是100個經典的算法-1C語言的學習要從基礎開始,這里是100個經典的 算法 題目:...
    Poison_19ce閱讀 1,169評論 0 0
  • 一、框架 1、Mac系統(tǒng)及常用工具、進制;C數據類型、常量變量、運算符、表達式、格式化輸入輸出 2、關系運算符、邏...
    師景福閱讀 734評論 0 2