選擇語句(if語句)
#include <stdio.h>
int main()
{
int input = 0;
printf("你要好好學習嗎?(1/0):>");
scanf("%d",&input);
if(1 == input)
printf("好offer\n");
else
printf("賣蕃薯\n");
return 0;
}
循環語句(while語句/for語句/do...while語句)
//while循環
#include <stdio.h>
int main()
{
int line = 0;
printf("加入比特\n");
while(line<20000)
{
printf("敲一行代碼:%d\n",line);
line++;
}
if(line>=20000)
printf("好offer\n");
return 0;
}
函數
分為 自定義函數 /庫函數
#include <stdio.h>
int Add(int x,int y) //自定義函數
{
int z = x+y;
return z;
}
int main()
{
int num1 = 10;
int num2 = 20;
int sum = 0;
//sum = num1 + num2;
sum = Add(num1,num2);
printf("sum = %d\n",sum);
return 0;
}
數組
#include <stdio.h>
int main()
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10}; //定義一個存放10個整型數字的數組
int i = 0;
while(i<10)
{
printf("%d",arr[i]);
i++;
}
printf("%d\n",arr[4]); //用下标的方式通路元素
return 0;
}
/*arr
1 2 3 4 5 6 7 8 9 10
下标 0 1 2 3 4 5 6 7 8 9
下标預設是從0開始*/
操作符
算數操作符
+ - * / %
// %取模(取餘)
#include <stdio.h>
int main()
{
int a = 5%2; //取模
printf("%d\n",a);
return 0;
}
移位操作符
<< >>
#include <stdio.h>
int main()
{
//移位(二進制位)操作符
//<<左移 左邊丢棄,右邊補零
//>>右移 右邊丢棄,左邊補零
int a = 1; //整型1 占四個位元組 -32個bit位 00000000000000000000000000000001
int b = a<<2; //00000000000000000000000000000100
printf("%d\n",b);
printf("%d\n",a);
return 0;
}
位操作符
& ^ |
//(二進制位)位操作符
// & 按位與
#include <stdio.h>
int main()
{
int a = 3;
int b = 5;
int c = a & b;
printf("%d\n",c);//輸出位十進制
return 0;
//a=0011
//b=0101
//a&b=0001
}
// | 按位或
#include <stdio.h>
int main()
{
int a = 3;
int b = 5;
int c = a | b;
printf("%d\n",c);//輸出位十進制
return 0;
//a=0011
//b=0101
//a|b=0111
}
// ^ 按位異或
#include <stdio.h>
int main()
{
int a = 3;
int b = 5;
int c = a ^ b; //不是次方,是異或
//異或的計算規律:對應的二進制位相同則為0,相異則為1
printf("%d\n",c); //輸出位十進制
return 0;
//a=0011
//b=0101
//a^b=0110
}
複合指派符
= , += , -= , *= , /= , &= , ^= , |= , >>= , <<=
#include <stdio.h>
int main()
{
int a = 10;
a = 20; // =指派,==判斷相等
a = a+10; //a += 10;
a = a-20; //a -= 20;
a = a & 2; //a &= 2;
return 0;
}
雙目操作符
#include <stdiol.h>
int main()
{
int a = 10;
int b = 20;
a + b; // + 雙目操作符 (有兩個操作符)
return 0;
}
單目操作符
! -邏輯反操作符/- 負值/+ 正值/& 取位址/sizeof 操作數的類型長度(以位元組為機關)/~按位取反
/-- 後置、前置--/++ 前置、後置++/* 間接通路操作符(解引用操作符)/(類型)強制類型轉換
// ! -邏輯反操作符
//C語言中表示真假 0 -假 非0 -真
#include <stdio.h>
int main()
{
int a = 0;
printf("%d\n",a);
printf("%d\n",!a);
return 0;
}
// -負值
#include <stdio.h>
int main()
{
int a = -2; //- 單目操作符(隻有一個操作數)
int b = -a;
int c = +3; //+正号都會省略
return 0;
}
//sizeof 操作數的類型長度(以位元組為機關)
//sizeof 計算的是變量/類型所占空間的大小,機關是位元組
#include <stdio.h>
int main()
{
int a = 10;
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(int));
printf("%d\n",sizeof a);
return 0;
}
//sizeof 操作數的類型長度(以位元組為機關)
#include <stdio.h>
int main()
{
int arr[10] = {0};
int sz = 0;
printf("%d\n",sizeof(arr)); //10*sizeof(int) = 40;
//計算數組的元素個數
//個數 = 數組總大小/每個元素的大小
sz = sizeof(arr)/sizeof(arr[0]);
printf("sz = %d\n",sz);
return 0;
}
// ~按(二進制)位取反
#include <stdio.h>
int main()
{
int a = 0; //4個位元組
int b = ~a; //b是有符号的整型
//a = 0(最高位是符号位,0表示是一個正數)0000000000000000000000000000000
//b = 1(最高位是符号位,1表示是一個負數)1111111111111111111111111111111
//原碼,反碼,補碼
//原碼符号位不變,其他位按位取反得到反碼,反碼加一得到補碼
//負數在記憶體中存儲的時候,存儲的是二進制的補碼
//1111111111111111111111111111111 補碼
//1111111111111111111111111111110 反碼
//1000000000000000000000000000001 原碼
printf("%d\n",b); //使用的,列印的是這個數的原碼
return 0;
}
隻要是整數,記憶體中存儲的都是二進制的補碼
正數 --原碼,反碼,補碼相同
負數:
原碼 --> 反碼 --> 補碼
直接按照正負寫 原碼的符号位不變 反碼+1
出的二進制序列 其他位按位取反得到
-2
原碼:10000000000000000000000000000010
反碼:11111111111111111111111111111101
補碼:11111111111111111111111111111110
// -- 前置、後置-- ;++ 前置、後置 ++
#include <stdio.h>
int main()
{
int a = 10;
//int b = a++; //後置++,先使用,再++ //a=11,b=10
//int b = ++a; //前置++,先++,再使用 //a=11,b=11
//int b = a--; //後置--,先使用,再-- //a=10,b=9
int b = --a; //前置--,先--,再使用 //a=9,b=9
printf("a = %d b = %d\n",a,b);
return 0;
}
//(類型)強制類型轉換
#include <stdio.h>
int main()
{
int a = (int)3.14;
return 0;
}
// & -取位址, * -解引用操作符 --常用于指針中
#include <stdio.h>
int main()
{
int a = 10;
int* p = &a; //& 取位址
//有一種變量是用來存放位址的 --指針變量
printf("%p\n",&a);
printf("%p\n",p);
*p = 20; //* -解引用操作符
printf("a = %d\n",a);
return 0;
}
邏輯操作符
&& 邏輯與
|| 邏輯或
//&邏輯與
//假 -0
//真 -非0
#include <stdio.h>
int main()
{
int a = 1;
int b = 3;
int c = a && b;
printf("c = %d\n",c);
return 0;
}
// ||邏輯或
#include <stdio.h>
int main()
{
int a = 1;
int b =3;
int c =a||b;
printf("c = %d\n",c);
return 0;
}
關系操作符
/>=/</<=/!=用于測試不相等/==用于測試相等
條件操作符 (三目操作符 -有三個操作數)
exp1?exp2:exp3 -如果exp1成立,則執行exp2如果exp1不成立,則執行exp3
#include <stdio.h>
int main()
{
int a = 10;
int b = 20;
int max = 0;
max = (a>b?a:b);
printf("較大值 = %d\n",max);
return 0;
}
下标引用、函數調用操作符
// ()-函數調用操作符
#include <stdio.h>
int Add(int x ,int y)
{
int z = 0;
z = x + y;
return z;
}
int main()
{
int a = 10;
int b = 20;
int sum = Add(a,b); //()-函數調用操作符
return 0;
}
#include <stdio.h>
int main()
{
int arr[10] = {0};
arr[4]; //[] --下标引用操作符
return 0;
}
求兩個數的較大值
#include <stdio.h>
int main()
{
int num1 = 0;
int num2 = 0;
scanf("%d%d",&num1,&num2);
if(num1>num2)
{
printf("%d\n",num1);
}
else
{
printf("%d\n",num2);
}
return 0;
}
#include <stdio.h>
int MAX(int x,int y)
{
if(x>y)
return x;
else
return y;
}
int main()
{
int num1 = 0;
int num2 = 0;
int max = 0;
scanf("%d%d",&num1,&num2);
max = MAX(num1,num2);
printf("較大值是 %d\n",max);
return 0;
}