天天看點

初始C語言(3)

選擇語句(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;
}
      
下一篇: 公務員備考