C语言 百文网手机站

C语言if else语句

时间:2022-03-16 17:05:33 C语言 我要投稿

C语言if else语句汇总

  对于很多情况,顺序结构的代码是远远不够的,大家都接触过C语言吧,下面是小编为大家整理的C语言if else语句,希望对大家有所帮助。

  C语言if else语句

  在C语言中,使用if和else关键字对条件进行判断。请先看下面的代码:

  #includeint main(){ int age; printf("请输入你的年龄:"); scanf("%d", &age); if(age>=18){ printf("恭喜,你已经成年,可以使用该软件! "); }else{ printf("抱歉,你还未成年,不宜使用该软件! "); } return 0;}

  可能的运行结果:

  请输入你的年龄:23↙

  恭喜,你已经成年,可以使用该软件!

  或者:

  请输入你的年龄:16

  抱歉,你还未成年,不宜使用该软件!

  这段代码中,age>=18是需要判断的条件,>=表示“大于等于”,等价于数学中的≥。

  如果条件成立,也即 age 大于或者等于 18,那么执行if后面的语句(第8行);如果条件不成立,也即 age 小于 18,那么执行else后面的语句(第10行)。

  if 和 else 是两个新的关键字,if 意为“如果”,else 意为“否则”,用来对条件进行判断,并根据判断结果执行不同的语句。总结起来,if else 的结构为:

  if(判断条件){

  语句块1

  }else{

  语句块2

  }

  意思是,如果判断条件成立,那么执行语句块1,否则执行语句块2 。其执行过程可表示为下图:

  所谓语句块(Statement Block),就是由{ }包围的一个或多个语句的集合。如果语句块中只有一个语句,也可以省略{ },例如:

  if(age>=18) printf("恭喜,你已经成年,可以使用该软件! ");else printf("抱歉,你还未成年,不宜使用该软件! ");

  由于if else 语句可以根据不同的情况执行不同的代码,所以也叫分支结构或选择结构,上面的代码中,就有两个分支。

  求两个数中的较大值:

  #includeint main(){ int a, b, max; printf("输入两个整数:"); scanf("%d %d", &a, &b); if(a>b) max=a; else max=b; printf("%d和%d的较大值是:%d ", a, b, max); return 0;}

  运行结果:

  输入两个整数:34 28↙

  34和28的较大值是:34

  本例中借助变量max,用max来保存较大的值,最后将max输出。

  只使用if语句

  有的时候,我们需要在满足某种条件时进行一些操作,而不满足条件时就不进行任何操作,这个时候我们可以只使用 if 语句。也就是说,if else 不必同时出现。

  单独使用 if 语句的形式为:

  if(判断条件){

  语句块

  }

  意思是,如果判断条件成立就执行语句块,否则直接跳过。其执行过程可表示为下图:

  只使用 if 语句来求两个数中的较大值:

  #includeint main(){ int a, b, max; printf("输入两个整数:"); scanf("%d %d", &a, &b); max=b; // 假设b最大 if(a>b) max=a; // 如果a>b,那么更改max的值 printf("%d和%d的较大值是:%d ", a, b, max); return 0;}

  运行结果:

  输入两个整数:34 28

  34和28的较大值是:34

  本例程序中,输入两个数a、b。把b先赋予变量max,再用 if 语句判别max和b的大小,如max小于b,则把b赋予max。因此max中总是大数,最后输出max的值。

  多个if else语句

  if else 语句也可以多个同时使用,构成多个分支,形式如下:

  if(判断条件1){

  语句块1

  } else if(判断条件2){

  语句块2

  }else if(判断条件3){

  语句块3

  }else if(判断条件m){

  语句块m

  }else{

  语句块n

  }

  意思是,从上到下依次检测判断条件,当某个判断条件成立时,则执行其对应的语句块,然后跳到整个 if else 语句之外继续执行其他代码。如果所有判断条件都不成立,则执行语句块n,然后继续执行后续代码。

  也就是说,一旦遇到能够成立的判断条件,则不再执行其他的语句块,所以最终只能有一个语句块被执行。

  例如,使用多个 if else 语句判断输入的字符的类别:

  #includeint main(){ char c; printf("Input a character:"); c=get); if(c<32) this="" is="" a="" else="" c="">='0'&&c<='9') this="" is="" a="" else="" c="">='A'&&c<='z') this="" is="" a="" capital="" else="" c="">='a'&&c<='z') printf("This is a small letter "); else printf("This is an other character "); return 0;}

  运行结果:

  Input a character:e↙

  This is a small letter

  本例要求判别键盘输入字符的类别。可以根据输入字符的ASCII码来判别类型。由ASCII码表可知ASCII值小于32的为控制字符。在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母, 在“a”和“z”之间为小写字母,其余则为其它字符。这是一个多分支选择的问题,用多个 if else 语句编程,判断输入字符ASCII码所在的范围,分别给出不同的输出。例如输入为“e”,输出显示它为小写字符。

  在使用 if 语句时还应注意以下两点:

  在 if 语句中,判断条件必须用括号括起来。

  语句块由{ }包围,但要注意的是在}之后不需要再加分号;(当然加上也没错)。

  if语句的嵌套

  if 语句也可以嵌套使用,例如:

  #includeint main(){ int a,b; printf("Input two numbers:"); scanf("%d %d",&a,&b); if(a!=b){ //!=表示不等于 if(a>b) printf("a>b "); else printf("a

  运行结果:

  Input two numbers:12 68

  a<b< p="">

  if 语句嵌套时,要注意 if 和 else 的配对问题。C语言规定,else 总是与它前面最近的 if 配对,例如:

  if(a!=b) // ①if(a>b) printf("a>b "); // ②else printf("a

  ③和②配对,而不是和①配对。

  C语言宏定义

  宏定义是预处理命令的`一种,它允许用一个标识符来表示一个字符串。先看一个例子:

  #include#define N 100int main(){ int sum = 20 + N; printf("%d ", sum); return 0;}

  运行结果:

  120

  该示例中的语句int sum = 20 + N;,N被100代替了。

  #define N 100就是宏定义,N为宏名,100是宏的内容。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。

  宏定义是由源程序中的宏定义命令#define完成的,宏代换是由预处理程序完成的。

  宏定义的一般形式为:

  #define 宏名 字符串

  #表示这是一条预处理命令,所有的预处理命令都以#开头。define是预处理命令。宏名是标识符的一种,命名规则和标识符相同。字符串可以是常数、表达式等。

  这里所说的字符串是一般意义上的字符序列,不要和C语言中的字符串等同,它不需要双引号。

  程序中反复使用的表达式就可以使用宏定义,例如:

  #define M (n*n+3*n)

  它的作用是指定标识符M来代替表达式(y*y+3*y)。在编写源程序时,所有的(y*y+3*y)都可由M代替,而对源程序编译时,将先由预处理程序进行宏代换,即用(y*y+3*y)表达式去替换所有的宏名M,然后再进行编译。

  将上面的例子补充完整:

  #include#define M (n*n+3*n)int main(){ int sum, n; printf("Input a number: "); scanf("%d", &n); sum = 3*M+4*M+5*M; printf("sum=%d ", n); return 0;}

  运行结果:

  Input a number: 10↙

  sum=1560

  上面的程序中首先进行宏定义,定义M来替代表达式(n*n+3*n),在sum=3*M+4*M+5*M中作了宏调用。在预处理时经宏展开后该语句变为:

  sum=3*(n*n+3*n)+4*(n*n+3*n)+5*(n*n+3*n);

  需要注意的是,在宏定义中表达式(n*n+3*n)两边的括号不能少,否则会发生错误。如当作以下定义后:

  #difine M n*n+3*n

  在宏展开时将得到下述语句:

  s=3*n*n+3*n+4*n*n+3*n+5*n*n+3*n;

  这相当于:

  3n2+3n+4n2+3n+5n2+3n

  这显然是不正确的。所以进行宏定义时要注意,应该保证在宏代换之后不发生错误。

  对宏定义的几点说明

  1、 宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,这只是一种简单的替换。字符串中可以含任何字符,可以是常数,也可以是表达式,预处理程序对它不作任何检查,如有错误,只能在编译已被宏展开后的源程序时发现。

  2、 宏定义不是说明或语句,在行末不必加分号,如加上分号则连分号也一起替换。

  3、 宏定义必须写在函数之外,其作用域为宏定义命令起到源程序结束。如要终止其作用域可使用#undef命令。例如:

  #define PI 3.14159int main(){ // Code return 0;}#undef PIvoid func(){ // Code}

  表示PI只在main函数中有效,在func中无效。

  4、宏名在源程序中若用引号括起来,则预处理程序不对其作宏代换,例如:

  #include#define OK 100int main(){ printf("OK "); return 0;}

  运行结果:

  OK

  该例中定义宏名OK表示100,但在 printf 语句中 OK 被引号括起来,因此不作宏代换,而作为字符串处理。

  5、宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名,在宏展开时由预处理程序层层代换。例如:

  #define PI 3.1415926

  #define S PI*y*y /* PI是已定义的宏名*/

  对语句:

  printf("%f", S);

  在宏代换后变为:

  printf("%f", 3.1415926*y*y);

  6、 习惯上宏名用大写字母表示,以便于与变量区别。但也允许用小写字母。

  7、可用宏定义表示数据类型,使书写方便。例如:

  #define UINT unsigned int

  在程序中可用UINT作变量说明:

  UINT a, b;

  应注意用宏定义表示数据类型和用typedef定义数据说明符的区别。宏定义只是简单的字符串代换,是在预处理完成的,而typedef是在编译时处理的,它不是作简单的代换,而是对类型说明符重新命名。被命名的标识符具有类型定义说明的功能。

  请看下面的例子:

  #define PIN1 int *

  typedef (int *) PIN2;

  从形式上看这两者相似, 但在实际使用中却不相同。

  下面用PIN1,PIN2说明变量时就可以看出它们的区别:

  PIN1 a,b;

  在宏代换后变成:

  int *a,b;

  表示a是指向整型的指针变量,而b是整型变量。然而:

  PIN2 a,b;

  表示a、b都是指向整型的指针变量。因为PIN2是一个类型说明符。由这个例子可见,宏定义虽然也可表示数据类型, 但毕竟是作字符代换。在使用时要分外小心,以避出错。

【C语言if else语句汇总】相关文章:

C语言switch语句09-24

C语言如何输入语句02-23

c语言if语句的用法09-27

C语言if语句的使用讲解10-03

C语言三种循环语句11-22

c语言if语句的用法有哪些10-06

c++ c语言while 循环语句入门基础教程11-19

C语言基础知识汇总09-29

C语言for循环09-27