山东兴华建设集团网站,公司做网站,建筑设计建模软件,工作英语目录 一.if语句 1.if 2.else 3.分支中包含多条语句 4.嵌套if 5.悬空else问题 二.关系操作符 三.条件操作符 C语⾔是结构化的程序设计语⾔#xff0c;这⾥的结构指的是顺序结构、选择结构、循环结构#xff0c;C语⾔是能够实现这三种结构的#xff0c;其实我们如果仔细分析这⾥的结构指的是顺序结构、选择结构、循环结构C语⾔是能够实现这三种结构的其实我们如果仔细分析我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种结构的组合。 我们可以 使用if 、 switch 实现分支结构使用 for 、 while 、 do while 实现循环结构 。 一.if语句
1.if if 语句的语法形式如下: if ( 表达式 )语句 表达式成立为真则语句执行表达式不成立为假则语句不执行 在C语言中0为假非0表示真也就是表达式的结果如果是0则语句不执行表达式的结果如果是不是0则语句执行。 例⼦输⼊⼀个整数判断是否为奇数 #include stdio.h
int main()
{int num 0;scanf(%d, num);if(num % 2 1)printf(%d 是奇数\n, num);return 0;
} 2.else 如果⼀个数不是奇数那就是偶数了如果任意⼀个整数我们要清楚的判断是奇数还是偶数怎么表⽰呢 这⾥就需要 if...else... 语句了语法形式如下 if ( 表达式 )语句1
else语句2 例⼦输⼊⼀个整数判断是否为奇数如果是奇数打印是奇数否则打印数偶数。 #include stdio.h
int main()
{int num 0;scanf(%d, num);if(num % 2 1)printf(%d 是奇数\n, num);elseprintf(%d 是偶数\n, num);return 0;
} 练习输⼊⼀个年龄 18岁就输出成年否则就输出未成年 #include stdio.h
int main()
{int age 0;scanf(%d, age);if(age18)printf(成年\n);elseprintf(未成年\n);return 0;
} 3.分支中包含多条语句 默认在 if 和 else 语句中默认都只控制⼀条语句⽐如 #include stdio.h
int main()
{int age 0;scanf(%d, age);if(age 18)printf(成年了\n);printf(可以谈恋爱了\n);return 0;
} 上⾯的代码你会发现输⼊的值不管是18 还是⼩于18可以谈恋爱了 都会打印在屏幕上。 这是因为 if 语句只能控制⼀条语句就是 printf(成年了\n); if语句为真则打印成年了 if语句为假则不打印对于 printf(可以谈恋爱了\n); 是独⽴存在的不管if语句的条件的真假都会被执⾏。那如果我们要if语句同时控制2条语句怎么办呢那就要使用 {} 将代码括起来else 后也可以跟上大括号。如下
#include stdio.h
int main()
{int age 0;scanf(%d, age);if(age 18) //if 后使⽤{} 控制多条语句-这个块也叫程序块或者复合语句{printf(成年了\n);printf(可以交⼥朋友了\n);}return 0;
}
#include stdio.h
int main()
{int age 0;scanf(%d, age);if(age 18) //if 后使⽤{} 控制多条语句-这个块也叫程序块或者复合语句{printf(成年了\n);printf(可以交⼥朋友了\n);}else //else 后使⽤{}控制多条语句-这个块也叫程序块或者复合语句{printf(未成年\n);printf(不可以早恋哦\n);}return 0;
}
4.嵌套if 在 if else 语句中 else 可以与另⼀个 if 语句连⽤构成多重判断。 ⽐如要求输⼊⼀个整数判断输⼊的整数是0还是正数或者负数。请看如下代码 #include stdio.h
int main()
{int num 0;scanf(%d, num);if(num 0)printf(输⼊的数字是0\n);else if(num 0) //这⾥的if 相当于嵌套在else语句中形成了嵌套结构printf(输⼊的数字是正数\n);elseprintf(输⼊的数字是负数\n);return 0;
} 再⽐如 输⼊⼀个整数如果是正数再判断是奇数还是偶数并输出如果不是正数则输出负数。 #include stdio.h
int main()
{int num 0;scanf(%d, num);if(num0){ //嵌套在if语句中构成了嵌套的if语句if(num%2 0)printf(偶数\n);elseprintf(奇数\n);}else{printf(负数\n);}return 0;
} 练习 输⼊⼀个⼈的年龄
如果年龄18岁打印少年
如果年龄在18岁⾄44岁打印⻘年
如果年龄在45岁⾄59岁打印中⽼年
如果年龄在60岁⾄89岁打印⽼年
如果90岁以上打印⽼寿星参考代码 //⽅法1
#include stdio.h
int main()
{int age 0;scanf(%d, age);if(age18)printf(少年\n);else if(age44)printf(⻘年\n);else if(age59)printf(中⽼年\n);else if(age90)printf(⽼年\n);elseprintf(⽼寿星\n);return 0;
}//带上⼤括号更容易看明⽩
#include stdio.h
int main()
{int age 0;scanf(%d, age);if(age18){printf(少年\n);}else{if(age44){printf(⻘年\n);}else{if(age59){printf(中⽼年\n);}else{if(age90)printf(⽼年\n);elseprintf(⽼寿星\n);}}}return 0;
} 5.悬空else问题 如果有多个 if 和 else 可以记住这样⼀条规则 else 总是跟最接近的 if 匹配 。 我们⾸先从下⾯代码开始 #include stdio.hint main(){int a 0;int b 2;if(a 1)if(b 2)printf(hehe\n);elseprintf(haha\n);return 0;} 输出结果 为什么呢 这就是悬空 else 的问题如果有多个 if 和 else 可以记住这样⼀条规则 else 总是跟最接近的 if 匹配。 上⾯的代码排版让 else 和第⼀个 if 语句对⻬让我们以为 else 是和第⼀个if匹配的当 if 语句不成⽴的时候⾃然想到的就是执⾏ else ⼦句打印 haha 但实际上 else 是和第⼆个 if进⾏匹配的这样后边的 if...else 语句是嵌套在第⼀个 if 语句中的如果第⼀个 if 语句就不成立嵌套 if 和 else 就没机会执行了最终啥都不打印。 如果代码改成下⾯这样就更加容易理解了 #include stdio.h
int main()
{int a 0;int b 2;if(a 1){if(b 2)printf(hehe\n);elseprintf(haha\n);}return 0;
} 或者如果我们希望else确实和第⼀个if匹配可以这样修改代码 #include stdio.h
int main()
{int a 0;int b 2;if(a 1){if(b 2)printf(hehe\n);}else{printf(haha\n);}return 0;
} 只要带上适当的⼤括号代码的逻辑就会更加的清晰所以⼤家以后在写代码的时候要注意括号的使用让代码的可读性更⾼。 二.关系操作符 C 语⾔⽤于⽐较的表达式称为 “关系表达式”relational expression⾥⾯使⽤的运算符就称 为“关系运算符”relational operator主要有下⾯6个。 大于运算符 ⼩于运算符 ⼤于等于运算符 ⼩于等于运算符 相等运算符 ! 不相等运算符 关系表达式通常返回 0 或 1 表示真假。 C 语⾔中 0 表示 假所有非零值表示真。⽐如 20 12 返回 1 12 20 返回 0 。关系表达式常⽤于 if 或 while 结构。 if (x 3) {printf(x is 3.\n);
} 注意 相等运算符 与赋值运算符 是两个不⼀样的运算符 不要混淆。有时候可能会不⼩⼼写出下⾯的代码它可以运⾏但很容易出现意料之外的结果。 if (x 3) ... 上⾯⽰例中原意是 x 3 但是不⼩⼼写成 x 3 。这个式⼦表⽰对变量 x 赋值 3 它的返回值为 3 所以 if 判断总是为真。 为了防⽌出现这种错误有的程序员喜欢将变量写在等号的右边。 if (3 x) ... 这样的话如果把 误写成 编译器就会报错。 /* 报错 */
if (3 x) ... 另⼀个需要避免的错误是 多个关系运算符不宜连用 。 i j k
上⾯⽰例中连续使⽤两个⼩于运算符。这是合法表达式不会报错但是通常达不到想要的结果 即不是保证变量 j 的值在 i 和 k 之间。因为关系运算符是从左到右计算所以实际执⾏的是下⾯的表达式。
(i j) k 上⾯式⼦中 i j 返回 0 或 1 所以最终是 0 或 1 与变量 k 进⾏⽐较。如果想要判断变量 j 的值是否在 i 和 k 之间应该使⽤下⾯的写法。 i j j k //并且 比如我们输⼊⼀个年龄如果年龄在18岁~36岁之间我们输出⻘年。 如果我们这样写 当我们输⼊10的时候依然输出青年如下图 这是因为我们先拿18和age中存放的10⽐较表达式1810为假 18age 的结果是0再拿0和 36⽐较036为真所以打印了⻘年 所以即使当age是10的时候也能打印 ⻘年 逻辑上是有问题这个代码应该怎么写呢 #include stdio.h
int main()
{int age 0;scanf(%d, age);if(age18 age36){printf(⻘年\n);}return 0;
} 三.条件操作符 条件操作符也叫 三目操作符也是C语言中唯一一个三目操作运算符 需要接受三个操作数的形式如下 exp1 ? exp2 : exp3 条件操作符的计算逻辑是如果 exp1 为真 exp2 计算计算的结果是整个表达式的结果如果 exp1 为假 exp3 计算计算的结果是整个表达式的结果。 练习1使用条件操作符表⽰下⾯代码的逻辑 #include stdio.h
int main(){int a 0;int b 0;scanf(%d %d, a, b);if (a 5)b 3;elseb -3;printf(%d\n, b);return 0;
}改造后
#include stdio.h
int main()
{int a 0;int b 0;scanf(%d %d, a, b);b a5 ? 3:-3;printf(%d\n, b);return 0;
} 练习2使用条件表达式实现找两个数中较大值 #include stdio.h
int main()
{int a 0;int b 0;scanf(%d %d, a, b);int m ab ? a : b;printf(%d\n, m);return 0;
}