常量和變量
1.常 量: 程序執(zhí)行過程中,值不變的量。 3 ,'a'
變 量:值可以改變的量。
一個變量有一個名字,在內(nèi)存中有一定的存儲單元,存放變量的值。
2.常量類型:
a.整 型:12,0,-3
b.實 型:4.6,-1.2
c.字 符 型: 'a','d'
d.符號常量: #define PRICE 30 (PRICE不能再被賦值且要大寫)
3.變 量: 先定義,后使用。一個變量只能被指定為一確定類型。
4.標識符:標識變量名,符號常量名,函數(shù)名,數(shù)組名,類型名,文件名的有效字符數(shù)列。
a.由字母、數(shù)字、下劃線三種字符組成,第一個字符必須為字母或下劃線。
b.大寫字母、小寫字母被認為是兩個不同的字符。
c.長度一般小于8個。
數(shù)據(jù)類型
一.整 型:
1.整型常量
a.十 進 制:12,-3,0
b.八 進 制:以0開頭。
c.十六進制:以0x開頭。
2.整型變量
a. int -32768——32767
b. short int -32768——32767
c. long int
d. unsigned int 0——65535
e. unsigned short 0——65535
f. unsigned long
int、short int、long int 第一位為符號位 0000001 (0為正,1為負)
unsigned 第一位不是符號位 0000001
所以int型和unsigned型的000001不是同一個值。
二.實 型:
1.實型常量:
a.十進制數(shù):數(shù)字和小數(shù)點組成。0.12,.12,12.0,0.0
b.指 數(shù):e之前必須有數(shù)字,e后面必須為整數(shù)。12e3
2.實型變量:
a.單精度:float 7位有效數(shù)字 111111.1可,111111.11不可。
b.雙精度:double 15—16位有效數(shù)字 。
三.字符型:
1.字符常量:
a. 'a' , 'x' , '*' ,'$' 。
b. 轉(zhuǎn)義字符:‘\n'換。 '\t'從第九列開始。'\r'回車。 '\b'退一格。
2.字符變量:
char char='a' 一個字符變量在內(nèi)存占一個字節(jié)。
。將一個字符常量放到一個字符變量中,并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的ASC碼
放到存儲單元中,所以字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。一個字符型數(shù)據(jù)既可以以字符形式輸出,
又可以以整數(shù)形式輸出。
四.字符串常量:
"how are you", "a","&12"
。不能把一個字符串賦給一個字符變量。 char c='a'對,char c="how" 錯。
。'a' :在內(nèi)存中存a。
“a”:在內(nèi)存中存a\0。
‘\0’是C語言中判斷字符串是否結(jié)束的標志。
變量賦初值
a. int a=3;
float f=7.2;
char c='a';
b. int a,b,c=5;
相當于 int a,b,c;
c=5;
c. int a=3;b=3;c=3; 不可寫: int a=b=c=3;
各類數(shù)值型數(shù)據(jù)間的混合運算
整型、實型、字符型數(shù)據(jù)可以混合運算:10+'a'+1.5-8765.4321*'b'
double<--float
long
unsigned
int <--char,shot
float型轉(zhuǎn)晃?double型
char型,shot型轉(zhuǎn)換為 int型
int型 轉(zhuǎn)換為double型 等等
算術(shù)運算符和算術(shù)表達式
1.基本算術(shù)運算符
+ 加
- 減
* 乘
/ 除 5/3=1
% 摸(MOD) 5%3=2
2.強制類型轉(zhuǎn)換運算符:將一個表達式轉(zhuǎn)換成所需類型
(類型名)(表達式)
(double)a 將a轉(zhuǎn)換為double型
(int)(x+y) 將x+y轉(zhuǎn)換為int型
(float)(5%3) 將5%3轉(zhuǎn)換為float型
putchar函數(shù):輸出一個字符
#include "stdio.h"
a. char a;
a='C';
putchar(a);
b. putchar('\n');
c. putchar('\102');
getchar函數(shù):輸入一個字符
#include "stdio.h"
a. char c;
c=getchar();
putchar(c);
b. putchar(getchar());
c. printf("%c",getchar());
putchar函數(shù):輸出若干個任意類型的數(shù)據(jù)
a. printf("%d,%d",a,b);
b. printf("a=%d b=%d",a,b);
1.d 輸出十進制整數(shù)
a. %d:
b.%md: 指定輸出的寬度。數(shù)據(jù)位數(shù)小于m,左端補空格;大于m,按實際位數(shù)輸出。
a=123;b=12345;
printf("%4d,%4d",a,b);
輸出結(jié)果為:_123,12345
c.%ld: 輸出長整型數(shù)據(jù)。
long a=123456;
printf("%ld",a); 用%d,錯。
printf("%9ld",a); 輸出結(jié)果為:___123456
2. o 輸出八進制數(shù)
3. x 輸出十六進制數(shù)
4. u 輸出unsigned型數(shù)據(jù)
5. c 輸出一個字符
6. s 輸出一個字符串
a.%s printf("%s"."how");
b.%ms
c.%-ms
d.%m.ns
e.%-m.ns
7. f 以小數(shù)形式輸出實數(shù)
a.%f
b.%m.nf
c.%-m.nf
8. e 以指數(shù)形式輸出實數(shù)
a.%e
b.%m.ne
c.%-m.ne
scanf函數(shù):輸入任意類型的多個數(shù)據(jù)
scanf("%d%d%d",&a,&b,&c); &a指a在內(nèi)存中的地址。
——按a,b,c在內(nèi)存的地址將a,b,c的值存入。
if語句
1. if (A) B;
如果條件A滿足,執(zhí)行B,否則執(zhí)行下一句。
2. if (A) B
else C;
如果條件A滿足,執(zhí)行B,否則執(zhí)行C。
3. if (A)
if (B) C
else D;
else
if (F) H
else K;
輸入三個數(shù),按小到大輸出。
main()
{ float a,b,c,t;
scanf("%f,%f,%f",&a,&b.&c); 4 2 1
if (a>b)
{t=a;a=b;b=t;} 2 4 1
if (a>c)
{t=a;a=c;c=t} 1 4 2
if (b>c)
{t=b;b=c;c=t;} 1 2 4
printf("%f,%f,%f",a,b.c);
}
switch 語句
switch(a)
{
case A : B; break;
case C : D; break;
default : F; break;
}
如果變量a=A,執(zhí)行B;執(zhí)行break語句,跳出swith語句。如果沒有break語句,D,F(xiàn)語句也會執(zhí)行。
如果變量a=C,執(zhí)行B;其它情況執(zhí)行F。
while 語句
while(A)
{
B;
}
如果條件A滿足,執(zhí)行B,否則執(zhí)行下一句。(先判斷,后執(zhí)行。)
while(i<-5)
{
s=s+1;
i++;
}
如果i=1,則不滿足i<-5,執(zhí)行下一句。i值不變。
do-while 語句
do
{
A;
}
while(B);
先執(zhí)行A,再判斷B;如果B滿足,再執(zhí)行A,否則執(zhí)行下一句。(先執(zhí)行,后判斷)
do
{
s=s+1;
i++;
}
while(i<-5);
如果i=1,執(zhí)行i++,i=4;不滿足i<-5,執(zhí)行下一句。
for 語句
for( A ; B ; C ) D;
A:為變量賦初值;
判斷是否滿足條件B;滿足則執(zhí)行D再執(zhí)行C再判斷B;
不滿足則執(zhí)行下一句。
for(i=1;i<=5;i++) s=s+1;
for(i=1,s=0;i<=5;i++) s=s+1;
for( ;i<=5;i++) s=s+1;
for( ;i<=5; ) { s=s+1; i++;}
break 語句
break 語句:終止循環(huán)。用于循環(huán)語句,switch語句。
while(A)
{
if (B) C; break;
......
}
執(zhí)行break語句,跳出循環(huán),執(zhí)行后面的語句。
continue 語句
continue 語句:只結(jié)束本次循環(huán),而不是終止整個循環(huán)。
while(A)
{
if (B) C; continue;
......
}
執(zhí)行break語句,跳出循環(huán),再判斷A,繼續(xù)執(zhí)行循環(huán)。