C语言 条件语句
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 条件语句相关的知识,希望对你有一定的参考价值。
我是C新手,刚接触C两天,想做一串代码,但总是达不到我要的效果,请各位帮我修改一下,别喷我!
#include<stdio.h>
main()
int a,b;
printf("你好吗?(yes or no)\n");
scanf("%s",&a);
if("%s=yes")
printf("好你妹!\n");
else if("%s=no")
printf("安息吧.\n");
大家应该看懂我想做什么了吧。。。帮个忙啦,谢谢。帮我修改一下
一、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;退出 参考技术A if
a=0;
then
b=1;
else
b=2;
判断语句,如果的意思。
if-else是判断语句,if(条件表达式,返回一个布尔型变量),如果是真,那就执行if后面的语句,并且跳过else后面的语句,要是返回假,则执行else里面的语句,if里面的语句就不会得到执行~ 参考技术B 首先解释一下,按你的要求 a必须是字符串的,整形是不能储存yes 或者no的
另外,if语句里面那 a比较yes或no的时候也不能直接写if(a=="yes") 之类的 因为a的本质是指针,a的值必然是一串数字 所以也不能和字符串比较
要比较就得一个字符一个字符比较
#include<stdio.h>
#include<stdlib.h>
void main()
int a,b;
char *s=(char *)malloc(200);
printf("你好吗?(yes or no)\n");
//scanf("%s",&a);
gets(s);
if(*(s+0)=='y' && *(s+1)=='e' && *(s+2)=='s')
printf("好你妹!\n");
else if(*(s+0)=='n' && *(s+1)=='o')
printf("安息吧.\n");
参考技术C #include<stdio.h>
main()
char a;
printf("你好吗?(Y or N)\n");
scanf("%s",&a);
if(s=='Y'||s=='y')
printf("好你妹!\n");
else if(s=='N'||s=='n')
printf("安息吧.\n");
这是最简化的一种修改方式!
首先,你要从键盘接收字符,因此a必须定义为字符型变量(char)
其次,判断语句中不能用%s=y,而是用s==‘y’,为了能够大小写都接受,可以用s=='Y'||s=='y' 参考技术D #include<stdio.h>
#include <string.h>
main()
char a[20];
printf("你好吗?(yes or no)\n");
scanf("%s",a);
if(strcmp(a,"yes") == 0)
printf("好你妹!\n");
else if(strcmp(a,"no") == 0)
printf("安息吧.\n");
。。。。。。。。。。。。。。。。。。。追问
#include
char a[20];
这两个有何含义?还有用法,可以解释一下吗
char a[20]是字符数组 是字符串的头文件
C语言中字符串不能直接用==来比较内容是否相等 , 得用到strcmp这个函数 当然也有其他方法,将字符数组用for一个个去比较
那个填20是如何判断的
追答那个。。。 我自己的一个习惯。。。 看你输入多少个字符吧,像你这个程序的话,最多也就"yes"也就四个字符(还有一个'\0') 所以改成a[4]也OK
追问if(strcmp(a,"yes") == 0)
==0是啥意思?再解释下,嘿嘿。
strcmp(a,"yes")如果你输入的是"yes",这个函数会返回一个0值
本回答被提问者采纳选择结构有啥特点?C语言实现选择结构有哪几种方式
主要选择结构有:if 最常见的选择结构 单一的if语句有人也称为挖坑 可将程序分为两路 没有满足则不执行 else 与if 合用 可将程序分为三路 if(条件)(语句一) else(语句二) 都没有满足则不执行 else if 与if合用 将程序分为若干路 if(条件)(语句一)else if(条件)(语句二)else if(条件)...... switch case 条件选择 switch(条件列表标识符)case:(语句);break; case(语句);break; ...... default(语句); 每一句后要加break 不然会全都执行 default 表示如果都不满足则执行此语句 不同的语句要用在恰当的时候楼主这些语句多试试就会有自己的看法 编程要编出自己的风格 参考技术A 用起来灵活。if语句,两种情况说用if else,多种情况用if else if,嫌麻烦就用switch语句了。以上是关于C语言 条件语句的主要内容,如果未能解决你的问题,请参考以下文章