C语言中流程控制语句(在Turbo C20中) (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 C20规定: 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<stdioh> 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<stdioh> 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 C20提供了一个开关语句。
开关语句格式为: switch(变量) {
case 常量1: 语句1或空; case 常量2: 语句2或空;
case 常量n; 语句n或空; default:
语句n+1或空; }
执行switch开关语句时, 将变量逐个与case后的常量进行比较, 若与其中一个相等, 则执行该常量下的语句, 若不与任何一个常量相等, 则执行default 后面的语句。 注意:
1 switch中变量可以是数值, 也可以是字符。 2 可以省略一些case和default。
3 每个case或default后的语句可以是语句体, 但不需要使用"{"和"}"括起来。
一、基础知识和数据类型、表达式
1、{},[],(),‘’,“”不配对。解决这个问题最好的方法就是每当写这些符号的时候就先写成一对,然后再在中间加内容。
2、忘记在语句的末尾加分号,或在预处理命令后多加分号。记住:每一个语句的后边都要加分号,而预处理命令并不是语句,所以不加分号,他们必须每行一条,不能把多个命令写在一行。
3、混淆/和\;注释对应的符号是/ /,而转义字符是以\开头,除号是/。
4、printf()和scanf()的参数设置有误,主要表现在以下几方面:
l 类型不匹配的问题。(例如:有float a=35,但输出的时候printf(“a=%d”,a);则屏幕上会显示出a=000000或者提示其它运行错误)。基本原则是:float对应%f, int对应%d, char对应%c。
l 个数不匹配。无论是哪个函数,都可以有n个参数,第一个永远是“”括起来的内容,表示输出格式。剩下的n-1个是输出的变量或者输入的变量的地址。需要注意的是,如果后边有n-1个参数,那么前边一定对应n-1个%f一类的格式说明符。
l scanf()中变量前忘了加&。记住:scanf()中变量前要有&(但后边学到的字符数组名和指针前不用加)
5、定义标识符的时候经常出现使用非法字符的情况,例如:标识符中不能用空格,也就是说不能有这样的定义:int radium of circle;一般情况下可用下划线将三个单词连接在一起。
6、在使用变量前未定义,或未初始化。例如:若下边的sum未定义,则在编译时会提示相应的错误信息,而若未初始化为0,则求和的结果一定是错误的。
void main()
{ int I,a[10], sum=0; /只要下边要用,这个定义就必须要有,一般情况下也要有初始值/
for(I=0;I<10;I++) sum+=a[I];
printf(“%d”,sum);
}
7、计算错误。主要注意:++,――和其它运算符一起运算时,除根据优先级进行计算时,还要考虑先后位置的特殊含义;数据类型不一致时发生的自动转换也会导致计算的误差;还要注意求模结果的符号与被除数相同;某些特殊情况下 使用懒惰求值法。
8、不能除以0,要做合法性检查;
9、类型溢出。记住每种数据类型的取值范围,确保数据在所定义类型范围之内;
10、数学表达式的格式有误。常见的有:(1)数学与C语言运算表达式的混淆(例如:=表示赋值,而= =才表示我们数学中的相等关系)。(2)、忽略了运算的优先级。解决这个问题的最好方法就是写数学表达式时不要从左到右,而是按优先级的顺序写,写完优先级高的一个表达式后加上()再写下一级的表达式,例如:计算梯形的面积时,要s=((a+b)h)/2,不要1/2a+bh (3)忽略了计算和赋值时的自动转换。例如:float half=1/2;这样,因为=右边是整数相除的结果为整数0,不会得到05存入half,进而会影响下边的计算结果。要想不在这儿绊跟头,当计算不同类型的数据时,一定注意会不会出现引起错误的自动转换,建议最好加上强制转换。(4)赋值号左边不是变量,例如:若有#define PI 314,程序中又出现PI=314159。又例如:f(n)=f(n-1)n(这是典型的数学语言,在C语言中右边的乘积不能正确存储,而左边又是一个函数调用)。
11、使用库函数前忘了加#include<h>
二、流程控制
1、 丢掉语句结束标记“;”,尤其是for语句中表达式后或do-while语句后的分号,或在预处理命令后边、while()后、for()后加“;”;
2、 If语句或循环语句中逻辑表达式或关系表达式书写错误。一定要注意C语言的条件与数学表达式的区别(例如我们数学中经常写到的0≤x≤9,在C语言中应该写成x>=0&&x<=9)。
3、 if-else嵌套时不配对。最好在写每个条件时要用两个{}分别将两个分支先括起来,再添加其中的语句,以保证其配对不易错。
4、 switch()语句中的格式不正确。()中的表达式结果一定是一些明确的值,不能是区间;表达式的所有可能结果要列在case后边,case与常量之间有一空格,不要丢掉必要的break;
5、 随意修改循环控制变量i的值,导致循环次数的改变,尤其是当循环有嵌套时。在循环体中,不要将循环控制变量进行另外的改变。
6、 分不清什么情况下用双重循环,什么情况下用两个控制变量写成一重循环。当I不变,j又循环一遍的时候用双重循环。当I,j同时变化的时候用一重循环,此时,循环控制变量有两个,但条件只写一个就可以,因为另一个总是进行相应的变化的。
7、 忽略循环体与循环控制变量的关系。其实,很多情况下,循环控制变量都在循环体中起到非常重要的作用。应该利用上这种关系。
三、数组与指针
1、 字符串的输入有错误:主要表现在使用scanf()或gets()时加了&,或输入字符串时用循环,(这样的话,字符个数无论多长,都不会为自动加\0,将来引用的时候也就不能以字符串的形式引用。)
2、 对字符串的处理中,循环条件仍然写成I<N。由于字符串是不定长的,所以循环条件一般为str[I]!=’\0’ 或I<strlen(str)
3、 而输入所对应的变量是指针时(常见的有:输入的变量是字符数组名或指向字符串的指针)不能加&。
4、 指针定义后未赋值就引用。如果在定义时不知道赋什么值,可以用p=NULL赋初值,以避免引起的灾难性错误。
5、 分不清p和*p。前者是指针,即地址,后者表示指针所间接引用的数据,但如果是二级指针或多级指针,取以后得到的仍然可能是地址。
四、函数
1、 函数定义的时候,函数头部加分号,而函数声明的地方忘了加分号
2、 函数实参格式不对,主要表现在:给出实参时,多给出数组类型,或者,形参是数组int a[];的时候,给出的a[]或a[I]
3、 递归时忘了设置边界条件,这样易造成死循环调用。
4、使用函数之前未声明(包括C库函数的声明)。建议大家,将所定义的一切函数都在程序开始的预处理命令后加上函数原型的声明,这样做不仅可以避免错误,而且整个程序的结构看起来更清楚。
五、结构体共用体
1、 结构体类型定义有误,主要表现在:结构体类型里还有嵌套的时候,忘记了成员名称。(例如:下边的例子中,有些同学经常忽略了birthday)
2、 结构体类型名和结构体变量名混淆。例如:
struct STU
{…
Struct data
{int year,month,day;<br/><br/>}birthday
};
struct STU a; struct STU是类型名称,而且不分配空间,且不能直接引用。只有定义了结构体类型struct STU的变量a以后,才为a分配相应的内存空间,引用时也要是a
3、 结构体变量的成员引用不正确,尤其是当结构体类型中有嵌套定义的时候。一定要一级一级的引用。例如:上边的例子:如果引用其中的年的话,一定是abirthdayyear 不能直接ayear
4、 对结构体变量进行输入输出的时候,整体输入或整体输出。除作为函数参数外,不能对结构体变量整体 *** 作,只能一个成员一个成员地输入、输出。
5、 不理解共用体的“共占内存”。对共用体中的成员变量,一定要靠一个标记区别它们,并分别按不同类型引用它们。切记:共用体变量不能做函数形参。
六、文件
1、 使用之前没有打开文件,使用之后没有关闭文件。
2、 相关函数的调用格式有误。请一定注意实参的类型、顺序、个数上与函数原型(或函数声明)的一致。
c在c语言中的意思
c在c语言中的意思,随着网络时代的发展,越来越多的人会一些技术,尤其是c语言,对于很多人来说这一门技术是比较实用的,我为大家整理好了c在c语言中的意思的相关资料。
c在c语言中的意思1读入一个字符。读入一个字符,但忽略它(即不赋值给任何变量)。
C语言%的其他应用含义 :
1、%f,%F,%e,%E,%g,%G 用来输入实数,可以用小数形式或指数形式输入。
2、%d 读入十进制整数。
3、%p 读入一个指针。
4、%s 读入一个字符串,遇空格、制表符或换行符结束。
扩展资料:
C语言基础知识:
1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以ASCI数值存放在文本文件中。
2、 define PI31415926这个写法是错误的,一定不能出现分号。
3、每个C语言程序中main函数是有且只有一个。
4、在函数中不可以再定义函数。
5、算法可以没有输入,但是一定要有输出。
6、 break可用于循环结构和 switch语句。
7、逗号运算符的级别最低,赋值的级别倒数第二。
c在c语言中的意思2c语言中“%=”是什么意思
%是求模的意思,两边必须是整数类型的,求模常用符号为mod,就是小学学的求余运算符。
例如50%23=4,因为余数为4,所以在程序中必须保证两边为整数才是这个意思。
类似的还有 +=,-=,=,/= 等。但是a%=b这种运算的效率,要高于a=a%b这种的效率,因为a%=b是直接在a上做求余运算,a=a%b则是先用一个临时变量的来记录好a的值,在进行运算,之后将运算结果再赋值给a,a=a%b要比直接a%=b多了两次赋值运算,因而后者的效率更高。
例如:
a + b, c = b, c++
逗号运算符的优先级是所有运算符中级别最低的,通常配合 for 循环使用。逗号表达式最右边的子表达式的值即为逗号表达式的值。上例中,c++ 的值(c 自增之前的值)即为该表达式的值。
逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算。因此,上例中,c 得到 b 的值后,才进行自增运算。
c在c语言中的意思3c语言中“%=”是什么意思
combine。刚开始是叫b语言,主要由kenTompson开发完成,后来又由DennisMRitchie在b语言的基础上发展成c语言。所以现在一般说c语言都是由他两发明的。
C语言是在B语言的基础上发展起来的,它的根源可以追溯到ALGOL
60。1960年出现的ALGOL
60是一种面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序。1963年英国的剑桥大学推出了CPL(Combined
Programming
Language)语言。CPL语言在ALGOL60的基础上接近硬件一些,但规模比较大,难以实现。1967年英国剑桥大学的Matin
Richards对CPL语言作了简化,推出了BCPL(Basic
Combined
Programming
Language)语言。1970年美国贝尔实验室的Ken
Thompson以BCPL语言为基础,又作了进一步简化,设计出了很简单的而且很接近硬件的B语言(取BCPL的第一个字母),并用B语言写了第一个UNIX *** 作系统,在PDP-7上实现。1971年在PDP-11/20上实现了B语言,并写了UNIX *** 作系统,但B语言过于简单,功能有限。1972年至1973年间,贝尔实验室的DMRitchie在B语言的基础上设计出了C语言(取BCPL的第二字母)。C语言既保持了BCPL和B语言的优点(精练,接近硬件)
又克服了它们的缺点(过于简单,数据无类型等)。最初的C语言只是为描述和实现UNIX *** 作系统提供一种工作语言而设计的。1973年,KThompson和DMRitchie两人合作把UNIX的%90以上用C改写(即UNIX第5版。原来的UNIX *** 作系统是1969年由美国的贝尔实验室的KThompson和DMRitchie开发成功的,是用汇编语言写的)。
%是求余运算符,也叫模除运算符,用于求余数。
%要求两个 *** 作数均为整数(或可以隐式转换成整数的类型)。
标准规定:
如果%左边的 *** 作数为负数时,则模除的结果为负数或者0,
如果%左边的 *** 作数为正数时,则模除的结构为正数或者0。
示例代码:
c 为字符类型,其235对应二进制位0xFD,也就是-3的补码形式。则c变换为int 为-3;
下表显示了C语言支持的所有算术运算符。假设变量A的值为10,变量B的值为 20,则:
实例
当上面的代码被编译和执行时,它会产生下列结果:
源程序(source
code)是指未编译的按照一定的程序设计语言规范书写的文本文件。
源代码(也称源程序),是指一系列人类可读的计算机语言指令。
在程序语言中,源代码可以是以书籍或者磁带的形式出现,但最为常用的格式是文本文件,这种典型格式的目的是为了编译出计算机程序。计算机源代码的最终目的是将人类可读的文本翻译成为计算机可以执行的二进制指令,这种过程叫做编译,通过编译器完成。C语言源代码即用C语言编写的一类可读的计算机语言指令。
以上就是关于c语言中都有哪些程序语句格式全部的内容,包括:c语言中都有哪些程序语句格式、在C语言中运行程序时最常出现的有那些错误、c在c语言中的意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)