當前位置:首頁 » 編程語言 » c語言語句大全及名字
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言語句大全及名字

發布時間: 2022-12-21 09:42:23

① 緊急求助! c語言中常用語句有哪幾種請分別舉一例

C語言的關鍵字分為以下幾類:
(1)描述類型定義:typedef,void
(2)描述存儲類型:auto,extern,static,register
(3)描述數據類型:char,float,double,int, long,shourt,struct, union,
unsigned,const,enum,signed,bolatile
(4)描述語句: break,continue,switch,case,default,if,else, do,for,
while,goto,sizeof,return

C語言的運算符可分為以下幾類:
1. 算術運算符:用於各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運算,%)、自增(++)、自減(--)共七種。
2. 關系運算符:用於比較運算。包括大於(>)、小於(<)、等於(==)、 大於等於(>=)、小於等於(<=)和不等於(!=)六種。
3. 邏輯運算符:用於邏輯運算。包括與(&&)、或(||)、非(!)三種。
4. 位操作運算符:參與運算的量,按二進制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。
5. 賦值運算符:用於賦值運算,分為簡單賦值(=)、復合算術賦值(+=,-=,*=,/=,%=)和復合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。
6. 條件運算符:這是一個三目運算符,用於條件求值(?:)。
7. 逗號運算符:用於把若干表達式組合成一個表達式(,)。
8. 指針運算符:用於取內容(*)和取地址(&)二種運算。
9. 求位元組數運算符:用於計算數據類型所佔的位元組數(sizeof)。
10. 特殊運算符:有括弧(),下標[],成員(→,.)等幾種。

C語句可分為以下五類:
1) 表達式語句
2) 函數調用語句
3) 控制語句
4) 復合語句
5) 空語句
1. 表達式語句:表達式語句由表達式加上分號「;」組成。
其一般形式為:
表達式;
執行表達式語句就是計算表達式的值。
例如:
x=y+z; 賦值語句;
y+z; 加法運算語句,但計算結果不能保留,無實際意義;
i++; 自增1語句,i值增1。
2. 函數調用語句:由函數名、實際參數加上分號「;」組成。
其一般形式為:
函數名(實際參數表);
執行函數語句就是調用函數體並把實際參數賦予函數定義中的形式參數,然後執行被調函數體中的語句,求取函數值 (在後面函數中再詳細介紹) 。
例如:
printf("C Program");調用庫函數,輸出字元串。
3. 控制語句:控制語句用於控製程序的流程, 以實現程序的各種結構方式。它們由特定的語句定義符組成。C語言有九種控制語句。 可分成以下三類:
1) 條件判斷語句:if語句、switch語句;
2) 循環執行語句:do while語句、while語句、for語句;
3) 轉向語句:break語句、goto語句、continue語句、return語句。
4. 復合語句:把多個語句用括弧{}括起來組成的一個語句稱復合語句。
在程序中應把復合語句看成是單條語句,而不是多條語句。
例如:
{ x=y+z;
a=b+c;
printf(「%d%d」,x,a);
}
是一條復合語句。
復合語句內的各條語句都必須以分號「;」結尾,在括弧「}」外不能加分號。
5. 空語句:只有分號「;」組成的語句稱為空語句。空語句是什麼也不執行的語句。在程序中空語句可用來作空循環體。
例如
while(getchar()!='\n')
;
本語句的功能是,只要從鍵盤輸入的字元不是回車則重新輸入。
這里的循環體為空語句。

如果對您有幫助,請記得採納為滿意答案,謝謝!祝您生活愉快!

② C語言常用詞彙及函數有那些

常用詞彙:

1、short:修飾int,短整型數據,可省略被修飾的int。

2、long:修飾int,長整型數據,可省略被修飾的int。

3、long long:修飾int,超長整型數據,可省略被修飾的int。

4、signed:修飾整型數據,有符號數據類型。

5、unsigned:修飾整型數據,無符號數據類型。

6、restrict:用於限定和約束指針,並表明指針是訪問一個數據對象的唯一且初始的方式。

7、return:用在函數體中,返回特定值(如果是void類型,則不返回函數值)。

8、continue:結束當前循環,開始下一輪循環。

9、break:跳出當前循環或switch結構。

10、goto:無條件跳轉語句。

11、if:條件語句,後面不需要放分號。

12、else:條件語句否定分支(與if連用)。

13、switch:開關語句(多重分支語句)。

14、case:開關語句中的分支標記,與switch連用。

15、default:開關語句中的「其他」分支,可選。

常用函數:

1、int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z'),返回非0值,否則返回0。

2、int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或數字('0'-'9'),返回非0值,否則返回0。

3、int abs(int i) 返回整型參數i的絕對值。

4、double cabs(struct complex znum) 返回復數znum的絕對值。

5、double fabs(double x) 返回雙精度參數x的絕對值。

6、long labs(long n) 返回長整型參數n的絕對值。

③ C語言中循環語句有哪些

C提供三種基本的循環語句: for語句、while語句和do-while語句。

一. for循環
for循環是開界的。它的一般形式為:
for(<初始化>; <條件表過式>; <增量>)
語句;
初始化總是一個賦值語句, 它用來給循環控制變數賦初值; 條件表達式是一個關系表達式, 它決定什麼時候退出循環; 增量定義循環控制變數每循環一次後按什麼方式變化。這三個部分之間用";"分開。
例如:
for(i=1; i<=10; i++)
語句;
上例中先給i賦初值1, 判斷i是否小於等於10, 若是則執行語句, 之後值增加1。再重新判斷, 直到條件為假, 即i>10時, 結束循環。
注意:
1. for循環中語句可以為語句體, 但要用"{"和"}"將參加循環的語句括起來。
2. for循環中的"初始化"、"條件表達式"和"增量"都是選擇項, 即可以預設, 但";"不能預設。省略了初始化, 表示不對循環控制變數賦初值。 省略了條件表達式, 則不做其它處理時便成為死循環。省略了增量, 則不對循環控制變數進行操作, 這時可在語句體中加入修改循環控制變數的語句。
3. for循環可以有多層嵌套。
例16:
main()
{
int i, j, k;
printf("i j k\n");
for (i=0; i<2; i++)
for(j=0; j<2; j++)
for(k=0; k<2; k++)
printf(%d %d %d\n", i, j, k);
}
輸出結果為:
i j k
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

二、 while循環
while循環的一般形式為:
while(條件)
語句;
while循環表示當條件為真時, 便執行語句。直到條件為假才結束循環。 並繼續執行循環程序外的後續語句。
例17:
#include<stdio.h>
main()
{
char c;
c=』\0』; /*初始化c*/
while(c!=』\X0D』) /*回車結束循環*/
c=getche(); /*帶回顯的從鍵盤接收字元*/
}
上例中, while循環是以檢查c是否為回車符開始, 因其事先被初始化為空, 所以條件為真, 進入循環等待鍵盤輸入字元; 一旦輸入回車, 則c=』\X0D』, 條件為假, 循環便告結束。
與for循環一樣, while循環總是在循環的頭部檢驗條件, 這就意味著循環可能什麼也不執行就退出。
注意:
1. 在while循環體內也允許空語句。
例如:
while((c=getche())!=』\X0D』);
這個循環直到鍵入回車為止。
2. 可以有多層循環嵌套。
3. 語句可以是語句體, 此時必須用"{"和"}"括起來。
例18:
#include<stdio.h>
main()
{
char c, fname[13];
FILE *fp; /*定義文件指針*/
printf("File name:"); /*提示輸入文件名*/
scanf("%s", fname); /*等待輸入文件名*/
fp=fopen(fname, "r"); /*打開文件只讀*/
while((c=fgetc(fp)!=EOF) /*讀取一個字元並判斷是否到文件結束*/
putchar(c); /*文件未結束時顯示該字元*/
}

三.do-while 循環
do-while 循環的一般格式為:
do
語句;
while(條件);
這個循環與while循環的不同在於: 它先執行循環中的語句, 然後再判斷條
件是否為真, 如果為真則繼續循環; 如果為假, 則終止循環。因此, do-while循
環至少要執行一次循環語句。
同樣當有許多語句參加循環時, 要用"{"和"}"把它們括起來。

④ c語言中都有哪些程序語句格式

C語言中流程式控制制語句(在Turbo C2.0中) (if, while,do-while,continue,break, for, switch,return) 條件語句的一般形式為: if(表達式) 語句1; else 語句2; 上述結構表示: 如果表達式的值為非0(TURE)即真, 則執行語句1, 執行完語 句1從語句2後開始繼續向下執行; 如果表達式的值為0(FALSE)即假, 則跳過語句1而執行語句2。 注意: 1. 條件執行語句中"else 語句2;"部分是選擇項, 可以預設, 此時條件語句變成: if(表達式) 語句1; 表示若表達式的值為非0則執行語句1 , 否則跳過語句1繼續執行。 2. 如果語句1或語句2有多於一條語句要執行時, 必須使用"{"和"}" 把這些語句包括在其中, 此時條件語句形式為: if(表達式) { 語句體1; } else { 語句體2; } 3. 條件語句可以嵌套, 這種情況經常碰到, 但條件嵌套語句容易出錯, 其原因主要是不知道哪個if對應哪else。 例如: if(x>20||x<-10) if(y<=100&&y>x) printf("Good"); else printf("Bad"); 對於上述情況, Turbo C2.0規定: else語句與最近的一個if語句匹配, 上例中的else與if(y<=100&&y>x)相匹配。為了使else與if(x>20||x<-10)相匹配, 必須用花括弧。如下所示: if(x>20||x<-10) { if(y<=100&&y>x) printf("Good"); } else printf("Bad"); 4. 可用階梯式if-else-if結構。 階梯式結構的一般形式為: if(表達式1) 語句1;else if(表達式2) 語句2; else if(表達式3) 語句3; . . else 語句n; 這種結構是從上到下逐個對條件進行判斷, 一旦發現條件滿點足就執行與它有關的語句, 並跳過其它剩餘階梯; 若沒有一個條件滿足, 則執行最後一個else語句n。最後這個else常起著"預設條件"的作用。 同樣, 如果每一個條件中有多於一條語句要執行時, 必須使用"{"和"}"把這 些語句包括在其中。
while循環與do-while 循環 while循環的一般形式為: while(條件) 語句; while循環表示當條件為真時, 便執行語句。直到條件為假才結束循環。並繼續執行循環程序外的後續語句. 例17: #include<stdio.h> main() { char c; c='\0'; /*初始化c*/ while(c!='\X0D') /*回車結束循環*/ c=getche(); /*帶回顯的從鍵盤接收字元*/ } 上例中, while循環是以檢查c是否為回車符開始, 因其事先被初始化為空,所以條件為真, 進入循環等待鍵盤輸入字元; 一旦輸入回車, 則c='\X0D', 條件為假, 循環便告結束。 與for循環一樣, while循環總是在循環的頭部檢驗條件, 這就意味著循環可能什麼也不執行就退出。 注意: 1. 在while循環體內也允許空語句。 例如: while((c=getche())!='\X0D'); 這個循環直到鍵入回車為止。 2. 可以有多層循環嵌套。 3. 語句可以是語句體, 此時必須用"{"和"}"括起來。 例18: #include<stdio.h> main() { char c, fname[13]; FILE *fp; /*定義文件指針*/ printf("File name:"); /*提示輸入文件名*/ scanf("%s", fname); /*等待輸入文件名*/ fp=fopen(fname, "r"); /*打開文件只讀*/ while((c=fgetc(fp)!=EOF) /*讀取一個字元並判斷是否到文件結束*/ putchar(c); /*文件未結束時顯示該字元*/ } do-while 循環 do-while 循環的一般格式為: do 語句; while(條件); 這個循環與while循環的不同在於: 它先執行循環中的語句, 然後再判斷條件是否為真, 如果為真則繼續循環; 如果為假, 則終止循環。因此, do-while循環至少要執行一次循環語句。同樣當有許多語句參加循環時, 要用"{"和"}"把它們括起來。
continue 語句 continue語句的作用是跳過循環本中剩餘的語句而強行執行下一次循環。 continue語句只用在for、while、do-while等循環體中, 常與if條件語句一起使用, 用來加速循環。 main() { char c; while(c!=0X0D) /*不是回車符則循環*/ { c=getch(); if(c==0X1B) continue; /*若按Esc鍵不輸出便進行下次循環*/ printf("%c\n", c); } } break語句 break語句通常用在循環語句和開關語句中。當break用於開關語句switch中時, 可使程序跳出switch而執行switch以後的語句; 如果沒有break語句, 則將成為一個死循環而無法退出。 當break語句用於do-while、for、while循環語句中時, 可使程序終止循環而執行循環後面的語句, 通常break語句總是與if語句聯在一起。 即滿足條件時便跳出循環。 main() { int i=0; char c; while(1) /*設置循環*/ { c='\0'; /*變數賦初值*/ while(c!=13&&c!=27) /*鍵盤接收字元直到按回車或Esc鍵*/ { c=getch(); printf("%c\n", c); } if(c==27) break; /*判斷若按Esc鍵則退出循環*/ i++; printf("The No. is %d\n", i); } printf("The end"); } 注意: 1. break語句對if-else的條件語句不起作用。 2. 在多層循環中, 一個break語句只向外跳一層。

for循環 for循環是開界的。它的一般形式為: for(<初始化>; <條件表過式>; <增量>) 語句; (1)初始化總是一個賦值語句, 它用來給循環控制變數賦初值; (2) 條件表達式是一個關系表達式, 它決定什麼時候退出循環; (3) 增量定義循環控制變數每循環一次後按什麼方式變化。這三個部分之間用";"分開。 例如: for(i=1; i<=10; i++) 語句; 上例中先給i賦初值1, 判斷i是否小於等於10, 若是則執行語句, 之後值增加1。再重新判斷, 直到條件為假, 即i>10時, 結束循環。 注意: 1. for循環中語句可以為語句體, 但要用"{"和"}"將參加循環的語句括起來。 2. for循環中的"初始化"、"條件表達式"和"增量"都是選擇項, 即可以預設, 但";"不能預設。省略了初始化, 表示不對循環控制變數賦初值。省略了條件表達式, 則不做其它處理時便成為死循環。省略了增量, 則不對循環控制變數進行操作, 這時可在語句體中加入修改循環控制變數的語句。 3. for循環可以有多層嵌套。
switch語句
在編寫程序時, 經常會碰到按不同情況分轉的多路問題, 這時可用嵌套if-else-fi語句來實現, 但if-else-if語句使用不方便, 並且容易出錯。對這種情況, Turbo C2.0提供了一個開關語句。
開關語句格式為: switch(變數) {
case 常量1: 語句1或空; case 常量2: 語句2或空; . .
case 常量n; 語句n或空; default:
語句n+1或空; }
執行switch開關語句時, 將變數逐個與case後的常量進行比較, 若與其中一個相等, 則執行該常量下的語句, 若不與任何一個常量相等, 則執行default 後面的語句。 注意:
1. switch中變數可以是數值, 也可以是字元。 2. 可以省略一些case和default。
3. 每個case或default後的語句可以是語句體, 但不需要使用"{"和"}"括起來。

⑤ C語言編程的常用語句及其作用

C語言控制語句①條件語句:if—else語句
②開關語句:switch語句
⑧當循環語句:while語句
④直到循環語句:do—while語句
⑤計數循環語句:for·語句
⑥中止本次循環語句:continue語句
⑦中止整個循環語句:break語句
⑧函數返回語句:return語句
⑨無條件轉移語句:goto語句 C語言的關鍵字共有32個,根據關鍵字的作用,可分其為數據類型關鍵字、控制語句關鍵字、存儲類型關鍵字和其它關鍵字四類。

1 數據類型關鍵字(12個): (1) char :聲明字元型變數或函數
(2) double :聲明雙精度變數或函數
(3) enum :聲明枚舉類型
(4) float:聲明浮點型變數或函數
(5) int: 聲明整型變數或函數
(6) long :聲明長整型變數或函數
(7) short :聲明短整型變數或函數
(8) signed:聲明有符號類型變數或函數
(9) struct:聲明結構體變數或函數
(10) union:聲明共用體(聯合)數據類型
(11) unsigned:聲明無符號類型變數或函數
(12) void :聲明函數無返回值或無參數,聲明無類型指針(基本上就這三個作用)

2控制語句關鍵字(12個): A循環語句
(1) for:一種循環語句(可意會不可言傳)
(2) do :循環語句的循環體
(3) while :循環語句的循環條件
(4) break:跳出當前循環
(5) continue:結束當前循環,開始下一輪循環
B條件語句
(1)if: 條件語句
(2)else :條件語句否定分支(與 if 連用)
(3)goto:無條件跳轉語句
C開關語句
(1)switch :用於開關語句
(2)case:開關語句分支
(3)default:開關語句中的「其他」分支
D返回語句
return :子程序返回語句(可以帶參數,也看不帶參數)

3 存儲類型關鍵字(4個) (1)auto :聲明自動變數 一般不使用
(2)extern:聲明變數是在其他文件正聲明(也可以看做是引用變數)
(3)register:聲明積存器變數
(4)static :聲明靜態變數 4 其它關鍵字(4個): (1)const :聲明只讀變數
(2)sizeof:計算數據類型長度
(3)typedef:用以給數據類型取別名(當然還有其他作用
(4)volatile:說明變數在程序執行中可被隱含地改變

⑥ C語言的語句有哪些

1.if else
if(表達式){
語句1
}
else{
語句2
}
當表達式為真時執行語句1否則執行語句2
if語句也可以嵌套使用如:
if(表達式1){
if(表達式2){
語句1
}
else{
語句2
}
}
2.do while和while基本一樣,區別在與do while至少要執行一次運算,然後比較表達式而while是先比較再運算.
3.for語句如for(a=1;a<=100;a++)括弧裡面第一個語句是初使化a第二個是循環條件第三個a++是讓a的值變化,達到循環的效果.
一共有9種,剩下是break,switch,goto只類的,就不寫了哈,,,太多咯..

⑦ c語言中的語句有哪幾類

C語言語句分為5 類 : 1、 表達式語句 2、 函數調用語句 3、 控制語句 4、 復合語句 5、 空語句 表達式語句 : 表達式+分號; 函數調用語句 : 函數名+實際參數+分號; 格式一般為:函數名(參數表); 控制語句 : 1,條件判斷語句 if語句,switch語句循環執行語句 例如:if(a>b) max=a; else max=b; // 該語句表示:如果a>b條件成立,則max取a的值,否則max的值是b。在a>b條件的控制下,出現兩個可能的分支流程。而switch語句能實現多個分支流程。 do while語句,while語句,for語句轉向語句 2,循環語句有for、while和do_while三種。當循環語句的循環控制條件為真時,反復執行指定操作,是C語言中專門用來構造循環結構的語句。 如:for(i=1;i<10;i++) printf("%d",i); i從1開始,每次加1,只要i<10就輸出i的值,因此i=1,2,3,……,9,共循環9次,輸出: 1 2 3 4 5 6 7 8 9 上述功能還可以用while語句和do_while語句實現。 用while語句實現: i=1; while(i<10) { printf("%d",i);i++; } 用do_while語句實現: i=1; do { printf("%d",i);i++; } while(i<10); 轉移語句有break,continue,return和goto四種。它們都能改變程序原來執行順序並轉移到其它位 置繼續執行。例如,循環語句中break語句終止該循環語句的執行;而循環語句中的continue語句只結束本次循環並開始下次循環;return語句 用來從被調函數返回到主調函數並帶回函數的運算結果;goto語句可以無條件轉向任何指定的位置執行。 復合語句 :多個語句用{}括起來,組成復合語句,其中每條語句都以;結束,但}外不能加分號; 空語句 : 空語句是只有分號(;)的語句。由一個分號組成,它表示什麼操作也不做。從語法上講,它的確是一條語句。在程序設計中,若某處從語法上需要一條語句,而實際上不需要執行任何操作時就可以使用它。例如,在���計循環結構時,有時用到空語句。 賦值語句 :屬於表達式語句,注意事項如下: 1、 允許嵌套 2、 與為變數賦初值有區別,賦初值是變數說明的一部分,與其他變數要用逗號分隔,而賦值語句需要用分號;結束 3、 變數說明不允許中的賦初值不允許連續賦初值,如int a=b=c=5;是錯誤的,但賦值語句a=b=c=5是正確的。 4、 注意賦值表達式和賦值語句的區別。賦值表達式是一種表達式,它可以出現在任何允許表達式出現的地方,而賦值語句則不能。 如if ((x=y+5)>0) z=x;是正確的,而if((x=y+5;)>0) z=x;是錯誤的。

⑧ C語言程序中常用的語句…要比較全一點的

B.插入排序:

思路:當前a[1]..a[i-1]已排好序了,現要插入a[i]使a[1]..a[i]有序。
procere insert_sort;
var i,j:integer;
begin
for i:=2 to n do begin
a[0]:=a[i];
j:=i-1;
while a[0]a[j] then swap(a[i],a[j]);
end;

D. 冒泡排序
procere bubble_sort;
var i,j,k:integer;
begin
for i:=1 to n-1 do
for j:=n downto i+1 do
if a[j]r) or (a[i]<=a[j])) {滿足取左邊序列當前元素的要求}
then begin
tmp[t]:=a[i]; inc(i);
end
else begin
tmp[t]:=a[j];inc(j);
end;
inc(t);
end;
for i:=p to r do a[i]:=tmp[i];
end;{merge}

procere merge_sort(var a:listtype; p,r: integer); {合並排序a[p..r]}
var q:integer;
begin
if p<>r then begin
q:=(p+r-1) div 2;
merge_sort (a,p,q);
merge_sort (a,q+1,r);
merge (a,p,q,r);
end;
end;
{main}
begin
merge_sort(a,1,n);
end.

G.基數排序
思想:對每個元素按從低位到高位對每一位進行一次排序

五、高精度計算

高精度數的定義:
type
hp=array[1..maxlen] of integer;

1.高精度加法

procere plus ( a,b:hp; var c:hp);
var i,len:integer;
begin
fillchar(c,sizeof(c),0);
if a[0]>b[0] then len:=a[0] else len:=b[0];
for i:=1 to len do begin
inc(c[i],a[i]+b[i]);
if c[i]>10 then begin dec(c[i],10); inc(c[i+1]); end; {進位}
end;
if c[len+1]>0 then inc(len);
c[0]:=len;
end;{plus}

2.高精度減法
procere substract(a,b:hp;var c:hp);
var i,len:integer;
begin
fillchar(c,sizeof(c),0);
if a[0]>b[0] then len:=a[0] else len:=b[0];
for i:=1 to len do begin
inc(c[i],a[i]-b[i]);
if c[i]<0 then begin inc(c[i],10);dec(c[i+1]); end;
while (len>1) and (c[len]=0) do dec(len);
c[0]:=len;
end;

3.高精度乘以低精度

procere multiply(a:hp;b:longint;var c:hp);
var i,len:integer;
begin
fillchar(c,sizeof(c),0);
len:=a[0];
for i:=1 to len do begin
inc(c[i],a[i]*b);
inc(c[i+1],(a[i]*b) div 10);
c[i]:=c[i] mod 10;
end;
inc(len);
while (c[len]>=10) do begin {處理最高位的進位}
c[len+1]:=c[len] div 10;
c[len]:=c[len] mod 10;
inc(len);
end;
while (len>1) and (c[len]=0) do dec(len); {若不需進位則調整len}
c[0]:=len;
end;{multiply}

4.高精度乘以高精度

procere high_multiply(a,b:hp; var c:hp}
var i,j,len:integer;
begin
fillchar(c,sizeof(c),0);
for i:=1 to a[0] do
for j:=1 to b[0] do begin
inc(c[i+j-1],a[i]*b[j]);
inc(c[i+j],c[i+j-1] div 10);
c[i+j-1]:=c[i+j-1] mod 10;
end;
len:=a[0]+b[0]+1;
while (len>1) and (c[len]=0) do dec(len);
c[0]:=len;
end;

5.高精度除以低精度

procere devide(a:hp;b:longint; var c:hp; var d:longint);
{c:=a div b; d:= a mod b}
var i,len:integer;
begin
fillchar(c,sizeof(c),0);
len:=a[0]; d:=0;
for i:=len downto 1 do begin
d:=d*10+a[i];
c[i]:=d div b;
d:=d mod b;
end;
while (len>1) and (c[len]=0) then dec(len);
c[0]:=len;
end;

6.高精度除以高精度

procere high_devide(a,b:hp; var c,d:hp);
var
i,len:integer;
begin
fillchar(c,sizeof(c),0);
fillchar(d,sizeof(d),0);
len:=a[0];d[0]:=1;
for i:=len downto 1 do begin
multiply(d,10,d);
d[1]:=a[i];
while(compare(d,b)>=0) do {即d>=b}
begin
Subtract(d,b,d);
inc(c[i]);
end;
end;
while(len>1)and(c.s[len]=0) do dec(len);
c.len:=len;
end;

六、 樹的遍歷

1.已知前序中序求後序

procere Solve(pre,mid:string);
var i:integer;
begin
if (pre='''') or (mid='''') then exit;
i:=pos(pre[1],mid);
solve((pre,2,i),(mid,1,i-1));
solve((pre,i+1,length(pre)-i),(mid,i+1,length(mid)-i));
post:=post+pre[1]; {加上根,遞歸結束後post即為後序遍歷}
end;

2.已知中序後序求前序

procere Solve(mid,post:string);
var i:integer;
begin
if (mid='''') or (post='''') then exit;
i:=pos(post[length(post)],mid);
pre:=pre+post[length(post)]; {加上根,遞歸結束後pre即為前序遍歷}
solve((mid,1,I-1),(post,1,I-1));
solve((mid,I+1,length(mid)-I),(post,I,length(post)-i));
end;

3.已知前序後序求中序的一種

function ok(s1,s2:string):boolean;
var i,l:integer; p:boolean;
begin
ok:=true;
l:=length(s1);
for i:=1 to l do begin
p:=false;
for j:=1 to l do
if s1[i]=s2[j] then p:=true;
if not p then begin ok:=false;exit;end;
end;
end;

procere solve(pre,post:string);
var i:integer;
begin
if (pre='''') or (post='''') then exit;
i:=0;
repeat
inc(i);
until ok((pre,2,i),(post,1,i));
solve((pre,2,i),(post,1,i));
midstr:=midstr+pre[1];
solve((pre,i+2,length(pre)-i-1),(post,i+1,length(post)-i-1));
end;

七 進制轉換

1.任意正整數進制間的互化

除n取余

2.實數任意正整數進制間的互化
乘n取整

3.負數進制:
設計一個程序,讀入一個十進制數的基數和一個負進制數的基數,並將此十進制數轉換為此負進制下的數:-R∈{-2,-3,-4,....-20}

八 全排列與組合的生成

1.排列的生成:(1..n)
procere solve(dep:integer);
var
i:integer;
begin
if dep=n+1 then begin writeln(s);exit; end;
for i:=1 to n do
if not used[i] then begin
s:=s+chr(i+ord(''0''));used[i]:=true;
solve(dep+1);
s:=(s,1,length(s)-1); used[i]:=false;
end;
end;

2.組合的生成(1..n中選取k個數的所有方案)
procere solve(dep,pre:integer);
var
i:integer;
begin
if dep=k+1 then begin writeln(s);exit; end;
for i:=1 to n do
if (not used[i]) and (i>pre) then begin
s:=s+chr(i+ord(''0''));used[i]:=true;
solve(dep+1,i);
s:=(s,1,length(s)-1); used[i]:=false;
end;
end;

九.查找演算法

1.折半查找

function binsearch(k:keytype):integer;
var low,hig,mid:integer;
begin
low:=1;hig:=n;
mid:=(low+hig) div 2;
while (a[mid].key<>k) and (low<=hig) do begin
if a[mid].key>k then hig:=mid-1
else low:=mid+1;
mid:=(low+hig) div 2;
end;
if low>hig then mid:=0;
binsearch:=mid;
end;

2.樹形查找

二叉排序樹:每個結點的值都大於其左子樹任一結點的值而小於其右子樹任一結點的值。
查找
function treesrh(k:keytype):pointer;
var q:pointer;
begin
q:=root;
while (q<>nil) and (q^.key<>k) do
if kgoal then begin {若未移到目標}
Move(k-1,6-now-goal); {剩下的先移到沒用的柱上}
Writeln(k moved from now to goal);
H[goal,h[goal,0]+1]:=h[now,nowp]; h[now,nowp]:=0;
Inc(h[goal,0]); dec(h[now,0]);
Move(k-1,goal); {剩下的移到目標上}
End;

十二、DFS框架

NOIP2001 數的劃分

procere work(dep,pre,s:longint); {入口為work(1,1,n)}
{dep為當前試放的第dep個數,pre為前一次試放的數,s為當前剩餘可分的總數}
var j:longint;
begin
if dep=n then begin
if s>=pre then inc(r); exit;
end;
for j:=pre to s div 2 do work(dep+1,j,s-j);
end;
類似:
procere try(dep:integer);
var i:integer;
begin
if dep=k then begin
if tot>=a[dep-1] then inc(sum);
exit; end;
for i:=a[dep-1] to tot div 2 do begin
a[dep]:=i; dec(tot,i);
try(dep+1);
inc(tot,i);
end;
end;{try}

十三、BFS框架

IOI94 房間問題
head:=1; tail:=0;
while tail=1) and (I<=L.len) then
while j<I do begin p:=p^.next; inc(j); end;
loc:=p;
end;

2.單鏈表的插入操作

procere insert(L:linklist; I:integer; x:datatype);
var p,q:pointer;
begin
p:=loc(L,I);
new(q);
q^.data:=x;
q^.next:=p^.next;
p^.next:=q;
inc(L.len);
end;

3.單鏈表的刪除操作

procere delete(L:linklist; I:integer);
var p,q:pointer;
begin
p:=loc(L,I-1);
q:=p^.next;
p^.next:=q^.next;
dispose(q);
dec(L.len);
end;

4.雙鏈表的插入操作(插入新結點q)

p:=loc(L,I);
new(q);
q^.data:=x;
q^.pre:=p;
q^.next:=p^.next;
p^.next:=q;
q^.next^.pre:=q;

5.雙鏈表的刪除操作

p:=loc(L,I); {p為要刪除的結點}
p^.pre^.next:=p^.next;
p^.next^.pre:=p^.pre;
dispose(p);

⑨ C語言中的語句都有什麼啊具體怎麼用啊

在C語言中,程序都是由語句組成的,語句用來命令計算機系統執行某種操作。一個好的程序設計語言中提供的語句,應該能夠使得編寫出來的程序,結構清晰合理,風格優美和執行效率高。C語句可歸為 以下5大類: 1.復合語句 用大括弧括起來的一些語句。這些語句被看成一個整體。如{t=x;x=y;y=t}中,共有3條語句,每個語句都以分號結尾。 2.控制語句 控制語句用於控製程序的流程,以實現程序的各種結構方式。它們由特定的語句定義符組成。C語言有9種控制語句,可分成以下3類。 (1)條件判斷語句:if 語句,switch 語句。 (2)循環執行語句:do while 語句,while 語句,for 語句。 (3)轉向語句:break 語句,goto 語句,continue 語句,return 語句。 3.函數調用語句 一個函數調用加一個分號構成函數調用語句。例如: printf("Where do you want to go?"); 上述語句是由一個printf格式輸出函數加一個分號構成一條函數調用語句。 4.表達式語句 用表達式構成語句,表示一個運算或操作。C語言中最簡單的語句是表達式語句,它的一般形式:<表達式>; 其實表達式語句就是在表達式最後加上一個「;」。一個表達式語句必須在最後出現分號,分號是表達式語句中不可或缺的。例如:4+5; a==b&&c==d; 5.空語句 只有分號「;」組成的語句稱為空語句。空語句不執行任何操作,在程序中可用來做空循環體。例如: while(getchar()!='\n'); 該語句的功能是,只要從鍵盤輸入的字元不是回車則重新輸入。這里的循環體是空語句。 以上便是對C語句的基本概述,描述的可能不是很詳細,具體的使用方法和技巧還要靠自己的實踐來獲得,在此不再贅述。

⑩ c語言語句有哪些

C語句可分為以下五類: 1.表達式語句; 2.函數調用語句; 3.控制語句; 4.復合語句; 5.空語句。
1.表達式語句
表達式語句由表達式加上分號「;」組成。 其一般形式為: 表達式;執行表達式語句就是計算表達式的值。 例如: x=y+z;a=520; 賦值語句; y+z;加法運算語句,但計算結果不能保留,無實際意義; i++; 自增1語句,i值增1。 i++; 是先運算i後再加1。 ++i; 是先把i值增1後運算。
編輯本段2.函數調用語句
由函數名、實際參數加上分號「;」組成。 其一般形式為: 函數名(實際參數表) ; 執行函數語句就是調用函數體並把實際參數賦予函數定義中的形式參數,然後執行被調函數體中的語句,求取函數值。 調用庫函數,輸出字元串。
編輯本段3.控制語句
控制語句用於控製程序的流程, 以實現程序的各種結構方式。 它們由特定的語句定義符組成。C語言有九種控制語句。 可分成以下三類: (1). 條件判斷語句 if語句、switch語句; (2) .循環執行語句 do while語句、while語句、for語句; (3). 轉向語句 break語句、goto語句(此語句盡量少用,因為這不利結構化程序設計,濫用它會使程序流程無規律、可讀性差)、continue語句、return語句。
編輯本段條件判斷
int a,b; if(x>y) printf("x,\n"); else printf("y,\n");
編輯本段4.復合語句
把多個語句用括弧{}括起來組成的一個語句稱復合語句。 在程序中應把復合語句看成是單條語句,而不是多條語句,例如 { x=y+z; a=b+c; printf(「%d%d」,x,a); } 是一條復合語句。復合語句內的各條語句都必須以分號「;」結尾;此外,在括弧「}」外不能加分號。
編輯本段5.空語句
只有分號「;」組成的語句稱為空語句。 空語句是什麼也不執行的語句。在程序中空語句可用來作空循環體。 例如 while(getchar()!='\n'); 本語句的功能是,只要從鍵盤輸入的字元不是回車則重新輸入。這里的循環體為空語句。