總得讓她開心吧
helloworld
#include <stdio.h>int main()
{printf("hello world!\n");return 0;
}
程序框架
#include <stdio.h>
int main
{return 0;
}
輸出
printf("hello world!\n");
"'里面的內容叫做“字符串”,printf會把其中的內容元豐不動的輸出
\n表示需要在輸出的結果后面換一行
?做計算
printf("%d\n",23+43);
%d說明后面有一個整數要輸出在這個位置上。
printf("23+43=%d\n",23+43);
%d是把后面的值填到這個地方去
輸入
#include <stdio.h>int main()
{int price=0;printf("請輸入金額(元)");scanf("%d",&price);int change = 100 - price;printf("找您%d元\n",change);return 0;
}
int price=0;
這一行,定義了一個變量。變量的名字是price,類型是int,初始值是0;
變量是一個保存數據的地方,當我們需要在程序里保存數據時,比如上面的例子中要記錄用戶輸入的價格,就需要一個變量來保存它。用一個變量保存了一個數據,它才能參加到后面的計算中,比如計算找零。
?變量定義
變量定義的一般形式就是:
<類型名稱><變量名稱>;
int price;
int amount;
int price,amount;
變量名
變量需要一個名字,變量的名字是一種“標識符“,意思是它是用來識別這個和那個的不同的名字。”
標識符有標識符的構造規則。基本的原則是:標識符只能由字母、數字和下劃線組成,數字不能出現在第一個位置上,C語言的關鍵字(保留字)不可以用做標識符。
賦值
a=b表示要求計算機做一個動作:將b的值賦給a。
關系是靜態的,而動作是動態的。所以a=b和b=a是完全相反的
初始化
所有變量在定義的地方可以不做初始化,但是所有的變量在第一次被使用之前應該賦值一次?
變量初始化
<類型名稱><變量名稱>=<初始值>;
int price=0;
int amount=100;
組合變量定義的時候,也可以在這個定義中單獨給單個變量賦初值,如:
int price=0,amount=100;
?變量類型
C語言是一種有類型的語言,所有的變量在使用之前必須定義或聲明,所有的變量必須具有確定的數據類型。數據類型表示在變量中可以存放什么樣的數據,變量中只能存放指定類型的數據,程序運行過程中也不能改變變量的類型
?第二個變量
int chage=100-price;
定義了第二個變量change
并且做了計算
在C99中可以這樣定義
?ANSI C
只能在代碼開頭的地方定義變量
?
讀整數
scanf("%d",&price);
要求scanf這個函數讀入下一個整數,讀到的結果賦值給變量price
小心price前面的&
Scanf?
int main()
{
int a;
int b;
scanf("%d %d",&a,&b);
printf("%d %d\n",a,b);
return 0;
}
運行正常。
int main()
{
int a;
int b;
scanf("%d,%d",&a,&b);
printf("%d %d\n",a,b);
return 0;
}
也就是說scanf里的,你輸入的時候也要輸入
常量
int chage=100-price;
固定不變的數,是常數。直接寫在程序里,我們稱作直接量。
更好的方式,是定義一個常量:
const int AMOUNT = 100;(C99寫法)
const
const是一個修飾符,加在int的前面,用來給這個變量加上一個const的屬性。這const的屬性表示這個變量的值一旦初始化,就不能再修改了。
int change =AMOUNT-price;
如果你試圖對常量做修改,把它放在賦值運算符的坐標,就會背編譯器發現,指出為一個錯誤。?
?try
讓用戶輸入變量AMOUNT的值,而不是使用固定的初始值。
#include <stdio.h>int main()
{int price=0;int amount=0;printf("請輸入金額(元)");scanf("%d",&price);printf("請輸入原始(元)");scanf("%d",&amount);int change = amount - price;printf("找您%d元\n",change);return 0;
}
浮點數
一個美國人告訴你他是5英尺7寸,他的身高應該是1米幾?
(5+7/12)*0.3048=1.7018米
帶小數點的數值。浮點這個詞的本意就是指小數點是浮動的,是計算機內部表達非整數(包含分數和無理數)的一種方式。另一種方式叫做定點數,不過在C語言中你不會遇到定點數。人們借用浮點數這個詞來表達所有帶小數點的數。?
計算身高的程序?
#include <stdio.h>int main()
{
printf("請分別輸入身高的英尺和英寸,"
"如輸入\"5 7\"表示5英尺7英尺:");
int foot;
int inch;
scanf("%d %d",&foot,&inch);
printf("身高是%f。\n",((foot+inch/12)*0.3048));
return 0;
}
但是似乎不對
因為兩個整數的運算的結果只能是整數
10/3*3=>?
10和10.0在C中是完全不同的數
10.0是浮點數
?
把前面的d改成f
改進
當浮點數和整數放到一起運算時,C會將整數轉換成浮點數,然后進行浮點數的運算。
?double
inch是定義為int類型的變量,如果把int換成double,我們就把它改為double類型的浮點數據變量了。
double是雙精度浮點數,float表示單精度浮點數
#include <stdio.h>int main()
{
printf("請分別輸入身高的英尺和英寸,"
"如輸入\"5 7\"表示5英尺7英尺:");
double foot;
double inch;
scanf("%lf %lf",&foot,&inch);
printf("身高是%f。\n",((foot+inch/12)*0.3048));
return 0;
}
整數
? ? ? ? int
? ? ? ? printf("%d",....)
????????scanf("%d",.....)
帶小數點的數
? ? ? ? double
? ? ? ? print("%f",......)
? ? ? ? print("%lf",......)
?表達式
一個表達式是一系列運算符和算子的組合,用來計算一個值
amount=x*(1+0.033)*(1+0.033)*(1+0.033);
total=57;
count=count+1;
value=(min/2)*lastValue;
?運算符
運算符是指運算的動作,比如加法運算符”+“,減法運算符”-“。
算子是指參與運算的值,這個值可能是常數,也可能是變量,還可能是一個方法的返回值。
?計算時間差
輸入兩個時間,每個時間分別輸入小時和分鐘的值,然后輸出兩個時間之間的差,也以幾小時幾分表示
#include <stdio.h>int main()
{
int hour1,minute1;
int hour2,minute2;
scanf("%d %d",&hour1,&minute1);
scanf("%d %d",&hour2,&minute2);
int t1=hour1*60+minute1;
int t2=hour2*60+minute2;
int t=t2-t1;
printf("差%d小時%d分",t/60,t%60);
return 0;
}
?
運算符優先級
寫一個程序,輸入兩個整數,輸出它們的平均值
int a,b;
scanf("%d %d",&a,&b);
double c=(a+b)/2.0;
print("%d和%d的平均值=%f\n",a,b,c);
?
賦值運算符
賦值也是運算,也有結果
a=6的結果是a被賦予的值,也就是6
a=b=6->a=(b=6)
? 交換兩個變量
int a=5;
int b=6;
?不能直接寫
a=b;
b=a;
這樣就會使最后的結果都變為b;
所以我們需要再引入一個變量t
int t;
t=a;
a=b;
b=t;
#include <stdio.h>int main()
{
int a=5;
int b=6;
int t;
t=a;
a=b;
b=t;
printf("a=%d,b=%d\n",a,b);
return 0;
}
?復合賦值
5個運算符形成符合運算
”+=“ “-=” “*=” “/=“ ”%=“
遞增和遞減
++ -- (+1 -1)
前面只能是變量
前綴后綴
++和--可以放前面
a++的值是a加1以前的值,而++a的值是加1以后的值,無論哪個,a自己的值都加了1.