if(表达式) {语句}
功能:如果表达式为真,就执行下面的语句;如果表达式为假,就不执行下面的语句。#include <stdio.h> int main(void) { if (3>2) { printf("I Love You\n"); } return 0; }运行结果:
# include <stdio.h> int main(void) { if (2) { printf("I Love You\n"); } return 0; }运行结果:
# include <stdio.h> int main(void) { int i; if (i = 2) { printf("I Love You\n"); } return 0; }运行结果:
# include <stdio.h> int main(void) { if (0) { printf("I Love You\n"); } return 0; }编译并运行,什么也不输出。
# include <stdio.h> int main(void) { if (0) printf("I Love You\n"); printf("I Love You Too\n"); return 0; }运行结果:
{}
。所以在上面这个程序中 if 只能控制第一个 printf,而 if 后的表达式为 0,所以第一个 printf 不会执行,所以“I Love You”不会输出。而第二个 printf 不在 if 的控制范围内,所以 if 语句执行完之后顺序往下执行第二个 printf,所以“I Love You Too”会输出。# include <stdio.h> int main(void) { if (0) { printf("I Love You\n"); printf("I Love You Too\n"); } return 0; }这样两个printf都不会输出。
{}
。这是规范问题,大家一定要记住。按规范书写就不容易出错,看着也舒服。
# include <stdio.h> int main(void) { int i, j; printf("请输入两个数:"); //提示输入 scanf("%d %d", &i, &j); //注意取地址符& if (i>j) { printf("i大于j\n"); } else { printf("i小于j\n"); } return 0; }运行结果:
%d
之间为什么要加空格呢?原因只有一个——“好看”。如果不加空格的话,看起来就很挤,不好看。但是尽管如此,仍然建议你们什么都不要加,统一思维和用法。在实际编程中也是不要求加空格的,在这里只是告诉你们可以这么做。{}
。但是这里再强调:if、else、for、while、do 后面的执行语句不论有多少行,就算只有一行也要加{}
。# include <stdio.h> int main(void) { int i, j; scanf("%d %d", &i, &j); if (i>j) { printf("i大于j\n"); } ; else { printf("i小于j\n"); } return 0; }这个程序你觉得有没有错?编译一下发现有一个错误:
illegal else without matching if
意思是:不合法的 else 没有匹配的 if。表达式1 ? 表达式2 : 表达式3
它就相当于:
if (表达式1)
{
表达式2;
}
else
{
表达式3;
}
# include <stdio.h> # include <math.h> int main(void) { //将三个系数保存到计算机中 int a = 1; //“=”不表示相等,而是表示赋值 int b = 2; int c = 1; double delta; //delta存放的是b*b - 4*a*c的值 double x1, x2; //分别用于存放一元二次方程的两个解 delta = b*b - 4*a*c; if (delta > 0) { x1 = (-b + sqrt(delta)) / (2*a); x2 = (-b - sqrt(delta)) / (2*a); printf("该一元二次方程有两个解,x1 = %f, x2 = %f\n", x1, x2); } else if (0 == delta) { x1 = (-b) / (2*a); x2 = x1; //左边值赋给右边 printf("该一元二次方程有一个唯一解,x1 = x2 = %f\n", x1); } else { printf("无解\n"); } return 0; }if…else if…else 比 if…else 复杂一点,但也很好理解。if…else if…else 的意思就是:“如果”第一个成立,就执行第一个;“否则如果”第二个成立就执行第二个;“否则”就执行第三个。这个应该很好理解吧,与我们平时讲话时的思维逻辑一样。
#include <stdio.h> int main(void) { float score; printf("请输入您的考试成绩:"); scanf("%f", &score); if (score>=90 && score<=100) { printf("优秀!\n"); } else if (score>=80 && score<=89) { printf("良好!\n"); } else if (score>=60 && score<=79) { printf("及格!\n"); } else if (score>=0 && score<=59) { printf("补考!继续努力!\n"); } else { printf("请重新输入!\n"); } return 0; }
score>=90 && score<=100
千万不能写成90<=score<=100
,这样写是错误的。这是数学中的写法,在C语言中是不能这么写的。但我并不是说这样写语法有问题,而是说这样写无法实现我们所需要的功能。90<=score<=100
这种写法是允许的,编译的时候不会报错。但如果写成90<=score<=100
,那么不管输入多少分,输出都是“优秀!”。大家想想为什么?90<=score<=100
永远都成立,所以输出的永远都是“优秀!”。所以不能那么写。# include <stdio.h> int main(void) { float score = 1000; int i = (90<=score<=100); printf("i = %d\n", i); return 0; }运行结果:
90<=score<=100
永远都成立,所以 i 永远都是 1。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有