当前位置:首页 » 编程语言 » 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'); 本语句的功能是,只要从键盘输入的字符不是回车则重新输入。这里的循环体为空语句。