第一篇:C語言程序設計基礎知識要點
01.C程序基本結構
一、C語言的特點:
1、C語言源程序的基本組成單位是函數;一個C程序可由若干個函數組成,其中必須有且僅有一個以main命名的主函數,其余的函數名稱可由編程者自行設定。,2、C程序的執行總是由main()函數的第一個可執行語句開始,到main()函數的最后一個可執行的語句結束;而其他函數都是在main()函數開始執行以后,通過其他函數的調用才得以運行。
3、C語言系統提供了豐富的庫函數,用戶在程序中需要調用某個庫函數時,必須用#include編譯預處理命令將描述該庫函數的頭文件包含進去。
二、C程序的書寫格式:
1、語句可從分開放在任意多行內;
如:printf(“To C,”);
printf(“ or not to C:”);
與printf(“To C , or not to C:”);是等價的2、一行中可以有若干個語句;
如:a=123;b=345;
3、每個語句和數據定義的最后必須有一個分號;
三、C語言程序的運行:
1、編譯(Compile):將C源程序文件翻譯成能被計算機識別的二進制形式的“目標”文件;編譯時,編譯器將檢查源程序每一條語句的語法錯誤。
2、建造(Bulid):
C語言程序示例:顯示“Hello”
#include
int main(void)
{
printf(“Hello.n”);
return 0;
}
說明:#include
printf函數來自”標準輸入輸出庫”,可以產生格式化輸出;
n 告訴printf函數執行完信息顯示后要進行換行操作;
return 0 表明程序終止時會向操作系統返回值0;
{ }來標出main()函數的起始和結束。
02.數據類型
一、C語言的特點:
1、C語言源程序的基本組成單位是函數;一個C程序可由若干個函數組成,其中必須有且僅有一個以main命名的主函數,其余的函數名稱可由編程者自行設定。
2、C程序的執行總是由main()函數的第一個可執行語句開始,到main()函數的最后一個可執行的語句結束;而其他函數都是在main()函數開始執行以后,通過其他函數的調用才得以運行。
3、C語言系統提供了豐富的庫函數,用戶在程序中需要調用某個庫函數時,必須用#include編譯預處理命令將描述該庫函數的頭文件包含進去。
二、C程序的書寫格式:
1、語句可從分開放在任意多行內;
如:printf(“To C,”);
printf(“ or not to C:”);
與printf(“To C , or not to C:”);是等價的2、一行中可以有若干個語句;
如:a=123;b=345;
3、每個語句和數據定義的最后必須有一個分號;
三、C語言程序的運行:
1、編譯(Compile):將C源程序文件翻譯成能被計算機識別的二進制形式的“目標”文件;編譯時,編譯器將檢查源程序每一條語句的語法錯誤。
2、建造(Bulid):
C語言程序示例:顯示“Hello”
#include
int main(void)
{
printf(“Hello.n”);
return 0;
}
說明:#include
printf函數來自”標準輸入輸出庫”,可以產生格式化輸出;
n 告訴printf函數執行完信息顯示后要進行換行操作;
return 0 表明程序終止時會向操作系統返回值0;
{ }來標出main()函數的起始和結束。
03,運算符和表達式
1、算術運算符和表達式
+:加法運算符,如 3+5;
-:減法運算符,如 5-3;
*:乘法運算符,如 5*8;
/:除法運算符,如 3/6;參與運算量均為整型時,結果也為整型,舍去小數;若運算量中有一個是實型,則結果為雙精度實型。
%:模運算符,也稱“取余運算符”,用于計算兩數相除后的余數,如 5%3=2;
2、賦值運算符和賦值表達式
賦值運算符:”=”,其作用是將一個表達式的值賦給一個變量;
其一般形式為:變量=表達式
如:
x=a+b;賦值表達式的功能是計算表達式的值再賦予左邊的變量。賦值運算符具有右結合性。因此
a=b=c=5 可理解為
a=(b=(c=5));復合賦值運算符:+=、-=、*=、/=、%=、>>=、<<=、&=、^=、|=
構成復合賦值表達式的一般形式為:變量
雙目運算符=表達式
它等價于:變量=變量 運算符 表達式
如:
a+=5
等價于a=a+5
x*=y+7
等價于x=x*(y+7)
r%=p
等價于r=r%p
3、類型轉換
如果賦值運算符兩邊的數據類型不相同,系統將自動進行類型轉換,即把賦值號右邊的類型換成左邊的類型。具體規定如下:
1)實型賦予整型,舍去小數部分。前面的例子已經說明了這種情況。
2)整型賦予實型,數值不變,但將以浮點形式存放,即增加小數部分(小數部分的值為0)。
3)字符型賦予整型,由于字符型為一個字節,而整型為二個字節,故將字符的ASCII碼值放到整型量的低八位中,高八位為0。整型賦予字符型,只把低八位賦予字符量。
4、自增、自減運算符:
自增運算符:“++”,功能是將變量的值加1; 自減運算符:“--”,功能是將變量的值減1;
可有以下幾種形式:
++i
i自增1后再參與其它運算。
--i
i自減1后再參與其它運算。
i++
i參與運算后,i的值再自增1。
i--
i參與運算后,i的值再自減1。
注:
(1)”++”、”--“的操作對象只能是變量;
(2)”++”、”--“運算優先級相同,且結合方向自右向左;-i++應理解為-(i++),【例】自增、自減運算、#include
main()
{
int i=8;
printf(“%dn”,++i);/* i先加1,再輸出i,輸出結果為9 */
printf(“%dn”,--i);
/* i先減1,再輸出i,結果為8 */
printf(“%dn”,i++);/* 先輸出i,輸出結果為8,i再加1,*/
printf(“%dn”,i--);/* 先輸出i,輸出結果為9,i再減1,*/
printf(“%dn”,-i++);/* 先加輸出-i,輸出結果為-8,i再加1 */
printf(“%dn”,-i--);/* 先輸出-i,輸出結果為-9,i再減1 */
}
5、求字節運算符
計算表達式的結果所占字節數或某種數據類型的定義字節數。
一般格式:sizeof(數據類型標識符)或
sizeof(表達式)
如: sizeof(float)的值為4,占4個字節;
sizeof(2*3)的值為2,占2個字節;
6、關系運算符和關系表達式
關系運算符:“<”(小于)、“<=”(小于等于)、”>”(大于)、”>=”(大于等于)、”==”(等于)、“!=”(不等于)關系表達式:若關系表達式成立,其值為“真”,否則為“假”;在C語言中,用0代表“假”,用1代表“真”;
7、邏輯運算符和邏輯表達式: 邏輯運算符: “!”(非)、“&&”(與)、“||”(或);運算優先級:!>&&>|| 邏輯表達式:用邏輯運算符將表達式連接起來的式子;邏輯表達式的結果仍然是邏輯量(“真”或“假”)
8、條件運算符:
一般格式: <表達式1>?<表達式2>:<表達式3>
先計算表達式1,若表達式1的值為真,則計算表達式2的值,且表達式2的值為整個條件表達式的值;否則,計算表達式3的值,且表達式3的值即為整個條件表達式的值。
9、逗號運算符和逗號表達式
逗號運算符:”,”作為運算符,其功能是將多個表達式組成一個表達式;
一般形式:表達式1,表達式2,…,表達式n
求解過程:先計算表達式1,再計算表達式2,依此計算表達式n,最終,表達式n的值即為整個表達式的值。
04.順序結構
一、概述:
順序語句按照語法形式分為:表達式語句、函數調用語句、復合語句、流程控制語句和空語句。
1、表達式語句:
語法格式:表達式;
如:a+4;
其中賦值語句為最典型的表達式語句,如:
a=5;
a=b+3;
特別提示:分號(;)是表達式語句中不可缺少的一部分。
2、函數調用語句:
如:printf(”I am a student!”);
其中:printf()為系統提供的函數,用于顯示信息。
3、復合語句:
所謂“復合語句”即由一對“{}”括起來的一組語句,也稱“塊語句”或“分程序”。
一般形式為:
{
語句1
語句2
...語句n
}
如:
{
i++;
j=a+3;
printf(“%d,j=”,i,j);
}
特別提示:復合語句中的最后一條語句的分號不得缺少;復合語句的“}”之后不得有分號。
4、空語句:
“空語句”即為一個獨立的分號。
如:
main()
{
...;
...}
二、數據的輸入輸出
C語言提供了一些輸入輸出函數,如printf()和scanf(),在程序中調用這些輸入輸出函數時,必須將標準輸入輸出頭文件“stdio.h”包含到用戶所編寫的源程序中。
如:#include
其中:#include命令一般寫在程序的開頭位置。
1、格式輸入輸出
1、格式輸出函數printf()
(1)一般格式: printf(格式字符串,輸出列表)
其中:“格式字符串”包括“輸出字符”和“格式控制字符”(由%和格式字符組成,指定輸出項的輸出格式)。
? d格式符:用于輸出十進制整數;
%d:以十進制形式顯示輸出變量的值;
%5d:以十進制形式顯示變量的值,且至少占用5個字符的空間,若不夠5位數字,則左側補空格;
%-5d:以十進制形式顯示變量的值,且至少占用5個字符的空間,左對齊;
%5.3d:以十進制形式顯示變量的值,且至少占用5個字符的空間并至少有3位數字,若不夠3位數字,則左側補0;
如:#include
main()
{
int i;
i=40;
printf(“%dn”,i);
printf(“%5dn”,i);
printf(“%-5dn”,i);
printf(“%5.3dn”,i);
}
? f格式符:用于以小數形式輸出實數;
%10.3f:以定點十進制形式顯示變量的值,且總共用10個字符,其中,整數位6位,小數位3位,小數點1位;
如:#include
main()
{
float x;
x=839.21f;
printf(“%10.3fn”,x);
}
? c格式符:用于輸出一個字符;
如:
x=”a”,y =”b”,則 printf(%c %c“,x,y)的輸出結果為:a b
若變量的值為整數,則輸出該整數值為ASCII碼的字符:
如 x=65,y=98,則 printf(“%c, %c”,x,y)的輸出結果為: A, b;
同理,一個字符的數據也可以以整數的形式輸出;
如 x=’a’,y=’B’,則printf(“%d,%d”,x,y)的輸出結果為:97,66
? s格式符:用于輸出一個字符串。
如:printf(“%s”,”I am a student!”)
? e,E格式符:用于以指數形式輸出實數。
如:printf(“%e”, 123.456),則輸出結果為:1.234560e+002;
? g,G格式符:用于輸出實數,根據數值的大小自動選擇f格式或e格式。
2、格式輸入函數scanf()
(1)一般格式:
scanf(格式字符串,變量地址表)
其中:格式字符串使用雙引號括起來的字符串,包括“普通字符”(按原樣輸入)、“格式控制字符”(由%和格式字符組成,用來標定輸入數據的格式)。
變量地址表是由若干個變量地址組成的表列,可以是變量的地址,也可以使字符串的首地址。
? d格式:用于輸入十進制整數;
如:scanf(“%d,%d”,&x,&y);則輸入格式為:123,3456
?u格式:用于輸入十進制無符號整數;
?f格式:用于輸入以小數形式的實數;
如:scanf(“%f,%f”,&x,&y);則輸入格式為:123.23,23.456
?c格式:用于輸入一個字符;
如:scanf(“%c,%c”,&x,&y);則輸入格式為:a,b
?s格式:用于輸入一個字符串;
如:scanf(“%s”,a);假定a為字符數組,則輸入格式為:abcdef
注:輸入的字符串中間不能包含空格。
特別說明:
? 對于變量,”&”加變量名即為該變量的地址;如:&a、&b等分別表示變量a和變量b的地址;
?對于字符串數組或字符指針型變量,數組名和指針變量名本身即為其地址;
?可以在%和格式字符之間加表示位數的數字;如:scanf(“%5s”,p);表示只能輸入5個字符給字符串指針p;
3、字符數據的輸入輸出:
(1)putchar()函數:是向標準輸入輸出設備輸出一個字符;
其調用格式為:putchar(ch);其中:ch為一個字符變量或常量;
putchar()函數作用等同于 printf(“%c”,ch);
(2)getch()getche()和getchar()函數:
?getch():從鍵盤上讀入一個字符,但不顯示在屏幕上;
?getche():從鍵盤上讀入一個字符,顯示在屏幕上;
?getchar():從鍵盤上讀入一個字符,并顯示在屏幕上,但直到輸入回車鍵時才結束輸入,第一個字符為其函數的返回值。
05.選擇結構
一、if語句:
一般格式:
if(表達式)語句;
表示:當“表達式”成立時,則執行“語句”;否則跳過“語句”;
如:if(a>b)printf(“a>b!”);
例:若用戶輸入的數為3的倍數,則顯示”OK”
#include
main()
{
int a;
scanf(“%d”,&a);
if(a %3==0)printf(“OK”);
}
二、if-else 語句:
一般格式:
if(表達式)
語句1;
else
語句2;
例:給出用戶輸入的兩個整數的較大者
#include
main()
{
int a,b;
scanf(“%d,%d”,&a,&b);
if(a>b)
printf(“the max=%d”,a);
else
printf(“ the max=%d”,b);
}
三、if語句的嵌套
1、if子句中嵌套:
? if(表達式1)
if(表達式2)語句1;
else 語句2;
else 語句3;
? if(表達式1)
{ if(表達式2)語句1;}
else 語句2;
2、else子句中嵌套
? if(表達式1)語句1;
else
if(表達式2)語句2;
else 語句3;
? if(表達式1)語句1;
else
if(表達式2)語句2;
3、嵌套一般格式:
if(表達式1)語句1;
else if(表達式2)語句2;
else if(表達式3)語句3;
…
else if(表達式n)語句n;
else 語句n+1;
例:將用戶輸入的成績按以下規則轉換成等級成績:
分數: 90~100
等級:優
分數: 80~89
等級:良
分數: 70~79
等級:中
分數: 60~69
等級:及格
分數: 60以下
等級:不及格
# include
main()
{
int d;
printf(“輸入分數:”);
scanf(“%d”,&d);
if(d>=90)printf(“優”);
else if(d>=80)printf(“ 良”);
else if(d>=70)printf(“ 中”);
else if(d>=60)printf(“ 及格”);
else printf(“ 不及格”);
}
四、條件語句:
表達式1 ? 表達式2 :表達式3
執行的過程:若表達式1的值為非0時,該條件語句的職位表達式2,否則為表達式3;
例:求一個整數的絕對值
#include
main()
{
int i,absi;
scanf(“%d”,&i);
absi=i>0 ? i :-i;
printf(“%d絕對值是%dn”,i,absi);
}
五、switch語句
switch(表達式)
{
case 常量表達式1:
語句1;
break;
case常量表達式2:
語句2;
break;
…
case常量表達式n:
語句n;
break;
default:
語句n+1;
}
例:商店賣貨物,每一件3.5元,按購買的數量給與優惠:
購買100件,優惠5%;
購買200件以上,優惠6%;
購買300件以上,優惠8%;
購買400件以上,優惠10%;
購買500件以上,優惠15%;
#include
main()
{
int n;
float p,price;
scanf(”%d“,&n);
switch(n/100)
{
case 1:
p=0.05;
break;
case 2:
p=0.06;
break;
case 3:
p=0.08;
break;
case 4:
p=0.10;
break;
case 5:
p=0.15;
break;
}
price=3.5*n*(1-p);
printf(”%應付款=%7.2fn“,price);
}
06.循環結構
一、for語句:
一般格式: for(表達式1;表達式2;表達式3)語句;
表示:先計算表達式1的值,再計算表達式2的值,若表達式2的值為0,則跳出循環體,轉去執行循環體后面的程序命令;若表達式2的值非0,則執行循環體中的語句,接著計算表達式3的值;而后,再從計算表達式2的值開始重復上訴操作,直到表達式2的值為0時結束。
例:計算sum=1+2+3+…+100的值”
#include
main()
{
int i,sum;
sum=0;
for(i=1;i<=100;i++)
sum=sum+i;
printf(“sum=%d”,sum);
}
二、while 語句:
一般格式:
while<表達式>
語句;
表示:先計算表達式的值,若為非0,則執行循環體語句,然后再計算表達式的值,重復上述過程,直到計算表達式的值為0時結束循環。
例:計算sum=1+2+3…+100的值
#include
main()
{
int i,sum;
i=1;
sum=0;
while(i<=100)
{
sum=sum+i;
i++;
}
printf(“sum=%d”,sum);
}
三、do-while語句
1、一般格式:
Do
語句;
While<表達式>;
表示:先執行一次循環語句,然后計算表達式的值,若表達式的值非0,則再執行循環語句,然后從計算表達式的值開始重復上述過程,直到計算表達式的值為0,循環結束。
例:計算sum=1+2+3…+100的值
#include
main()
{
int i,sum;
i=1;
sum=0;
do
{
sum=sum+i;
i++;
}while(i<=100);
printf(“sum=%d”,sum);
}
四、break和continue語句:
1、break語句:
使用break語句可以提前結束由while、for、do-while語句構成的循環,而去執行循環下面的語句。
例:判定用戶輸入的一個數是否為素數
#include
main()
{
int a,d;
printf(“請輸入一個整數:”);
scanf(“%d”,&a);
for(d=2;d if(a%d==0) break;// 跳出當前的循環,執行循環后面的語句 if(d printf(“%d 不是素數”, a); else printf(“%d 是素數 “,a); } 2、continue: continue語句用于for、while、do-while語句中,其作用是結束本次循環,接著進入下一次是否執行循環的判斷。例:輸入10個非0的整數并求和。 #inclu de main() { int i,n=0,sum=0; while(n<10) { printf(“ 請輸入整數:”); scanf(“%d”,&i); if(i==0) continue;// 若為0,則繼續輸入下一個數 sum+=i; n++; } printf(“%d”,sum); } 五、三種循環的比較: 1、三種循環可以處理同一個問題,一般情況下可以相互代替; 2、while和do-while循環語句只在while語句之后指定循環條件,在循環體內應包含使循環趨于結束的語句;for循環語句可以在<語句3>中包含使循環趨于結束的語句; 3、對于while和do-while循環語句,循環變量的初始化應在while和do-while語句之前完成;for循環語句可以在<表達式1>中進行; 4、while和for語句是先判斷表達式,后執行循環;do-while循環語句是先執行循環,后判斷表達式; 07數組 數組是一組具有同一名字、不同下標的變量。數組中帶下標的變量稱為數組元素,每個數組元素由數組名字和下標唯一地來確定;同一數組中的元素數據類型相同。一、一維數組: 1、定義:只有一個下標的數組。 2、定義格式: 類型說明符 數組名[常量表達式] 如: int a[3];//定義了一個一維數組,名稱為a,數據類型為整型,含3個數組元素 a[0]、a[1]、a[2]; 說明: ?類型說明符:是指數組的數據類型; ?常量表達式:是一個值為正整數的表達式,用來表示該數組的元素的個數,即數組的大小; 3、數組的引用: 數組名[下標]; 如: a[2] 4、數組的初始化: ?對數組的全部因素賦初值: 如: int a[3]={10,20,30};則該語句執行后,a[0]=10,a[1]=20,a[2]=30; ? 對數組的部分元素賦初值: 如:int b[3]={12,11};則該語句執行后,b[0]=12,b[1]=11,a[2]=0; ?對數組的全部元素賦初值時,也可將數組定義為一個不確定長度的數組: 如:int c[ ]={10,15,20};則該語句執行后,數組c的長度自動確定為3,c[0]=10,c[1]=15,c[2]=20; 例:將輸入的10個整數按反序輸出 #include main() { int a[10],i; printf(”請輸入10個整數:“); for(i=0;i<10;i++) scanf(”%d“,&a[i]); printf(” 反序輸出:“); for(i=9;i>=0;i--) printf(”%d“,a[i]); printf(”n“); } 例:計算Fibonacci數列的前20項 Fibonacci數列定義: f(1)=1 f(2)=1 f(n)=f(n-1)+f(n-2)(n>2) #include main() { int f[21],i; f[1]=1; f[2]=1; for(i=3;i<=20;i++) f[i]=f[i-1]+f[i-2]; for(i=1;i<=20;i++) { printf(”%8d“,f[i]); //每個數字占8位 if(i%5==0) printf(”n“); //按5個一行輸出 } } 二、二維數組: 具有兩個下標的數組為二維數組。 1、定義格式: 類型說明符 數組名[常量表達式][常量表達式] 如: int a[3][2];//定義了一個二維數組,名稱數組名為a,含有6個元素:a[0][0]、a[0][1]、a[1][0]、a[1][1]、a[2][0]、a[2][1]; 說明: ?第一個常量表達式指出的是數組的行數;第二個常量表達式指出的是數組的列數; ?二維數組元素的順序是:按行存放;即先順序存放第一行的元素,再存放第二行的元素…以此類推; 其存儲格式: a[0][0] a[0][1] a[1][0] a[1][1] a[2][0] a[2][1] 2、二維數組的初始化: 同一維數組。 ?分行為二維數組賦初值: int a[3][2]={{1,2},{3,4},{5,6}};則該語句執行后,a[0][0]=1, a[0][1]=2, a[1][0]=3,a[1][1]=4, a[2][0]=5, a[2][1]=6; ?按數組在存儲時的排列次序賦初值: int a[3][2]={1,2,3,4,5,6}; ?對數組的部分元素賦初值: int a[3][2]={{1},{2,3},{4}}; ?忽略第一維的長度,對二維數組賦初值: int a[][2]={1,2,3,4,5,6};該語句執行后,C語言系統自動計算出第一維的長度為6/2=3,同樣有:a[0][0]=1, a[0][1]=2,a[1][0]=3,a[1][1]=4, a[2][0]=5, a[2][1]=6; 例:將兩個2行3列的矩陣相加,并顯示結果。 #include main() { int a[2][3]={1,3,5,7,9,11}; int b[2][3]={2,4,6,8,10,12}; int c[2][3],sum=0,i,j; for(i=0;i<2;i++) //i 表示第1行到第3行 for(j=0;j<3;j++) //j 表示第1列到第3列 c[i][j]=a[i][j]+b[i][j]; for(i=0;i<2;i++) for(j=0;j<3;j++) { printf(“%5d”,c[i][j]); if((j+1)%3==0)printf(“n”); } } 08字符數組 字符數組是用來存放字符的數組,字符數組中的一個元素存放一個字符。 1、字符數組的定義: char a[10]; 2、字符串:字符串是借助于字符數組來存放的,并規定以字符’
主站蜘蛛池模板:
久久这里只精品国产免费10|
亚洲国产成人久久综合人|
中字幕久久久人妻熟女天美传媒|
五月色丁香婷婷网蜜臀av|
黄色视频网站免费|
国产精品青青在线观看爽香蕉|
中文字幕 亚洲精品 第1页|
亚洲女人被黑人巨大进入|
国产午夜免费高清久久影院|
国产亚洲精品第一综合另类|
国产一区二区在线视频|
亚洲成av人片在线观看天堂无码|
国产特级毛片aaaaaa毛片|
无码免费h成年动漫在线观看|
最新系列国产专区|亚洲国产|
五级黄高潮片90分钟视频|
国内揄拍国产精品人妻门事件|
丰满少妇人妻hd高清大乳在线|
午夜男女爽爽爽在线视频|
av性色av久久无码ai换脸|
成人精品一区日本无码网站|
国产免费毛卡片|
内射女校花一区二区三区|
中文字幕人成乱码熟女香港|
亚洲日本欧美日韩中文字幕|
一本色综合亚洲精品蜜桃冫|
秋霞无码久久一区二区|
欧美黑人xxxx性高清版|
大陆极品少妇内射aaaaa|
欧美午夜精品久久久久免费视|
亚洲乱码一区二三四区ava|
精品国产粉嫩内射白浆内射双马尾|
乱人伦人妻中文字幕在线|
亚洲超清无码制服丝袜无广告|
波多野结衣久久精品99e|
国产欧美视频综合二区|
国产熟妇另类久久久久|
国产在线视频一区二区三区欧美图片|
一本加勒比hezyo无码资源网|
色欲久久久天天天综合网精品|
亚洲性夜色噜噜噜在线观看不卡|