❶ c语言 条件语句
条件表达示语句
一、if语句
if(表达式) 语句1;
如果表达式的值为非0,则执行语句1,否则跳过语句继续执行下面的语句。
如果语句1有多于一条语句要执行时, 必须使用{} 把这些语句包括在其中, 此时条件语句形式为:
if(表达式)
{
语句体1,2,3;
}
例如:
if(x>=0) y=x;
if(a||b&&c)
{
z=a+b;
c+=z;
}
if--else语句
除了可以指定在条件为真时执行某些语句外,还可以在条件为假时执行另外一段代码。在C语句中利用else语句来达到这个目的。
if(表达式) 语句1;
else 语句2;
同样,当语句1或语句2是多于一个语句时,需要用{}把语句括起来。 例如:
if(x>=0) y=x;
else y=-x;
if--else if--else结构
if(表达式1)
语句1;
else if(表达式2)
语句2;
else if(表达式3)
语句3;
.
else
语句n;
这种结构是从上到下逐个对条件进行判断,一旦发现条件满点足就执行与它有关的语句, 并跳过其它剩余阶梯;若没有一个条件满足,则执行最后一个else 语句n。最后这个else常起着缺省条件的作用。同样,如果每一个条件中有多于一条语句要执行时,必须使用{}把这些语句包括在其中。
条件语句可以嵌套,这种情况经常碰到,但条件嵌套语句容易出错,其原因主要是不知道哪个if对应哪个else。
例如:
if(x>20||x<-10)
if(y<=100&&y>x)
printf(Good);
else
printf(Bad);
对于上述情况, Turbo C规定: 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);
下面举几个例子:
1.输入一个数,如果大于0,输出plus;如果是负数,输出negative;如果正好是0,则输出zero。
main()
{
float num;
scanf(%f,&f);
if(num>0)
printf(plus\n);
else if(num<0)
printf(negative\n);
else
printf(zero\n);
}
先定义两个变量,然后输入一个数,然后判断这个数的范围,输出对应的字符串。
2.输入一个数x,输出y。其中y是x的绝对值。
main()
{
float x,y;
scanf(%f,&x);
if(x>=0) y=x;
else y=-x;
printf(%f\n,y);
}
Trubo C 2.0把一些常用的功能都写好了,我们只需要使用就可。例如求绝对值的功能在C的库里面就有。看下面的:
#include math.h
main()
{
float x,y;
scanf(%f,&x);
y=fabs(x); /*求x的绝对值,然后赋值给y*/
printf(%f\n,y);
}
这个程序和上面的程序完成的功能是一模一样的,都是求绝对值。可以看出,用下面这个方法比上面就要好一些。由
于fabs()是一个函数,系统自带的,所以在使用它的时候,我们必须把它所在的库文件math.h包含在程序中,即程序最前面一行。类似的还有求开方sqrt(),求指数幂exp()等等,这些与数学方面有关的函数都在math.h里面。
3.输入x,输出y,x和y满足关系:
x<-5 y=x;
-5<=x<1 y=2*x+5;
1<=x<4 y=x+6;
x>=4 y=3*x-2;
程序如下:
main()
{
float x,y;
scanf(%f,&x);
if(x<-5)
y=x;
else if(-5<=x&&x<1)
y=2*x+5;
else if(1<=x&&x<4)
y=x+6;
else
y=3*x-2;
printf(%f\n,y);
}
这里要说明两点:
(1).-5<=x&&x<1
不能写成-5<=x<1;1<=x&&x<4也不能写成1<=x<4;在C语言中,不能认识连续不等式。
(2).y=2*x+5不能写成y=2x+5;y=3*x-2也不能写成y=3x-2;这与我们平时所写的方法不一样。
4.输入三个数x,y,z,然后按从大到小输出。
main()
{
float x,y,z;
scanf(%f%f%f,&x,&y,&z); if(x>=y&&x>=z) {
printf(%f\t,x);
if(y>=z) printf(%f\t%f\n,y,z); else printf(%f\t%f\n,z,y); }
else if(y>=x&&y>=z) {
printf(%f\t,y);
if(x>=z) printf(%f\t%f\n,x,z); else printf(%f\t%f\n,z,x); }
else
{
printf(%f\t,z);
if(x>=y) printf(%f\t%f\n,x,y); else printf(%f\t%f\n,y,x); }
}
说明:这是一个典型的if语句嵌套结构,如果不使用括号,那么if和else的对应关系就乱了。
switch--case语句
在编写程序时, 经常会碰到按不同情况分转的多路问题, 这时可用嵌套if -else-if语句来实现, 但if-else-if语句使用不方便, 并且容易出错。对这种情况, Turbo C提供了一个开关语句。
开关语句格式为:
switch(变量)
{
case 常量1:
语句1或空;
case 常量2:
语句2或空;
.
case 常量n:
语句n或空;
default:
语句n+1或空;
}
执行switch开关语句时,将变量逐个与case后的常量进行比较,若与其
中一个相等,则执行该常量下的语句,若不与任何一个常量相等,则执行default后面的语句。
注意:
1.switch中变量可以是数值,也可以是字符,但必须是整数。
2.可以省略一些case和default。
3.每个case或default后的语句可以是语句体,但不需要使用{}括起来。 例如:
main()
{
intx,y;
scanf(%d,&x);
witch(x)
{
case 1:
y=x+1;
break; /*退出开关语句,遇到break才退出*/
case 4:
y=2*x+1;
break;
default:
y=x--;
break;
printf(%d\n,y);
}
用开关语句编的程序一定可以用if语句做。那么在什么情况下需要用switch语句呢?一般在出现比较整的情况下或者能转化成比较整数的情况下使用。看下面的例子:
例子:一个学生的成绩分成五等,超过90分的为'A',80-89的为'B',70-79为'C',60-69为'D',60分以下为'E'。现在输入一个学生的成绩,输出他的等级。
(1).用if语句
main()
{
float num;
char grade;
scanf(%d,&num);
if(num>=90) grade='A';
else if(num>=80&&num<89) grade='B';
else if(num>=70&&num<79) grade='C';
else if(num>=60&&num<69) grade='D';
else grade='E';
printf(%c,grade);
}
(2).用switch语句
main()
{
intnum;
char grade;
scanf(%d,&num);
num/=10;
switch(num)
{
case 10:
case 9:
grade='A';
break;
case 8:
grade='B';
break;
case 7:
grade='C';
break;
case 6:
grade='D';
break;
default:
grade='E';
break;
}
printf(%c,grade);
}
说明一点,并不是每个case里面有都语句,有时侯里面是空的,就好象这一题。switch语句执行的顺序是从第一case判断,如果正确就往下执行,直到break;如果不正确,就执行下一个case。所以在这里,当成绩是100分时,执行case 10:然后往下执行,grade='A';break;退出
❷ 求c语言表达式大全
C语言语法参考大全(流程控制语句) ----------------------------------------------------------------------------------------------------------01条件语句的一般形式为: 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常起着"缺省条件"的作用。 同样, 如果每一个条件中有多于一条语句要执行时, 必须使用"{"和"}"把这 些语句包括在其中。 02switch语句 在编写程序时, 经常会碰到按不同情况分转的多路问题, 这时可用嵌套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后的语句可以是语句体, 但不需要使用"{"和"}"括起来。 下例的switch中变量为整数型。 main() { int test; for(test=0; test<=10; test++) { switch(test) /*变量为整型数的开关语句*/ { case 1: printf("%d ", test); break; /*退出开关语句*/ case 2: printf("%d ", test); break; case 3: printf("%d ", test); break; default: puts("Error"); break; } } } 下例的switch中变量为字符型。 #include<stdio.h> main() { char c; while(c!=27) /*循环直到按Esc键结束*/ { c=getch(); /*从键盘不回显接收一个字符*/ switch(c) { case A: /*接收的字符为A*/ putchar(c); break; /*退出开关语句*/ case B: putchar(c); break; default: /*接收的字符非A和B*/ puts("Error"); break; } } } 03for循环 for循环是开界的。它的一般形式为: for(<初始化>; <条件表过式>; <增量>) 语句; (1)初始化总是一个赋值语句, 它用来给循环控制变量赋初值; (2) 条件表达式是一个关系表达式, 它决定什么时候退出循环; (3) 增量定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用";"分开。 例如: 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 "); for (i=0; i<2; i++) for(j=0; j<2; j++) for(k=0; k<2; k++) printf(%d %d %d ", i, j, k); } 04while循环与do-while 循环 while循环的一般形式为: while(条件) 语句; while循环表示当条件为真时, 便执行语句。直到条件为假才结束循环。并继续执行循环程序外的后续语句. 例17: #include<stdio.h> main() { char c; c=; /*初始化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); /*文件未结束时显示该字符*/ } 05do-while 循环 do-while 循环的一般格式为: do 语句; while(条件); 这个循环与while循环的不同在于: 它先执行循环中的语句, 然后再判断条件是否为真, 如果为真则继续循环; 如果为假, 则终止循环。因此, do-while循环至少要执行一次循环语句。同样当有许多语句参加循环时, 要用"{"和"}"把它们括起来。 06continue 语句 continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。 continue语句只用在for、while、do-while等循环体中, 常与if条件语句一起使用, 用来加速循环。 main() { char c; while(c!=0X0D) /*不是回车符则循环*/ { c=getch(); if(c==0X1B) continue; /*若按Esc键不输出便进行下次循环*/ printf("%c ", c); } } 07break语句 break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时, 可使程序跳出switch而执行switch以后的语句; 如果没有break语句, 则将成为一个死循环而无法退出。 当break语句用于do-while、for、while循环语句中时, 可使程序终止循环而执行循环后面的语句, 通常break语句总是与if语句联在一起。 即满足条件时便跳出循环。 main() { int i=0; char c; while(1) /*设置循环*/ { c=; /*变量赋初值*/ while(c!=13&&c!=27) /*键盘接收字符直到按回车或Esc键*/ { c=getch(); printf("%c ", c); } if(c==27) break; /*判断若按Esc键则退出循环*/ i++; printf("The No. is %d ", i); } printf("The end"); }
❸ c语言 条件运算符
条件运算符(? : )是一个三目运算符,即有三个操作数。
使用条件运算符(?:)可以实现 If else 的功能,其一般形式为:
表达式1 ? 表达式2 : 表达式3
例如条件语句:
if(a>b) max=a;
else max=b;
可用条件表达式写为
max=(a>b) ? a : b;
执行该语句的语义是:如a>b为真,则把a赋予max,否则把b 赋予max。
if条件语句例子如下:
知识扩展:
条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符
条件运算符?和:是一对运算符,不能分开单独使用。
条件运算符的结合方向是自右至左。
❹ C语言中条件表达式和逻辑表达式的意义是什么他们的取值如何
逻辑表达式用于判断条件是否成立,表达式的值为 零(假) 或 非零(真)
使用 ==、!=、>、>=、<、<=、! 运算符的表达式均称为逻辑表达式。
条件表达式形如: <exp1> ? <exp2> : <exp3>
取值:若exp1的值非零 则取exp2的值 否则取exp3的值
说明:exp1、exp2、exp3为必要的表达式