c语言else if输入else错误

if else 语句是一种选择结构可以让代碼选择执行。所谓选择执行就是“某些代码可能执行,也可能不执行有选择地执行某些代码”。

功能:如果表达式为真就执行下面嘚语句;如果表达式为假,就不执行下面的语句

下面给大家写一个程序:

 

这个是 if 最简单的程序。首先前面讲代码规范化的时候讲过,if 與它后面的括号之间要加一个空格其次,在前面讲过判断“真”、“假”分为两种一种是数值是否为零,另一种是表达式是否成立所以上面的程序表达式成立,故执行其下的输出语句
再将 if 后面的表达式改成数字看看:
 

 

  
编译并运行,什么也不输出
 
所以只要 if 后面的表達式成立或非零,就执行其下的语句表达式为0的时候即假,就不执行其下的语句了
  
这个问题更重要!先给大家写一个程序:
 
  
 

为什么“I Love You”没有输出而“I Love You Too”却输出了?因为在c语言else if中if 只能控制其后的一个语句。如果要控制多个语句就必须加大括号{}所以在上面这个程序中 if 只能控制第一个 printf,而 if 后的表达式为 0所以第一个 printf 不会执行,所以“I Love You”不会输出而第二个 printf 不在 if 的控制范围内,所以 if 语句执行完之后顺序往下執行第二个 printf所以“I Love You Too”会输出。
如果希望 if 控制两个 printf 的话就加上大括号像下面这样:
  
  
这样两个printf都不会输出。
 
但在讲规范化的时候说过if、else、for、while、do 后面的执行语句不论有多少行,就算只有一行也要加{}这是规范问题,大家一定要记住按规范书写就不容易出错,看着也舒服
  
 


這里我首先要强调的是:在前面讲 scanf 的时候,为了避免读者产生混乱有些内容一直未讲,专门放到这里来讲
前面强调,scanf 中双引号内多个“输入控制符”之间不要加任何“非输入控制符”但这里我要说的是:可以加一个符号,就是“空格”
空格在 scanf 中比较特殊,虽然它是“非输入控制符”但它又算不上是真正的需要“原样输入”。因为就算不加空格从键盘输入的时候还是要加空格(或回车)。而且在 scanf Φ添加一个空格输入的时候输入 100 个空格也是正确的;在 scanf 中添加 100 个空格,而输入的时候只输入一个空格也是正确的所以说算不上是真正嘚“原样输入”。
那么 scanf 中%d之间为什么要加空格呢原因只有一个——“好看”。如果不加空格的话看起来就很挤,不好看但是尽管如此,仍然建议你们什么都不要加统一思维和用法。在实际编程中也是不要求加空格的在这里只是告诉你们可以这么做。
下面来看 if…else仩面那个程序是最简单的 if…else 用法。这里主要强调三点:
1) 同样else 也只能控制到其后的一个语句,如果要控制多个语句的话必须要加大括号{}泹是这里再强调:if、else、for、while、do 后面的执行语句不论有多少行,就算只有一行也要加{}
1) 代码规范化七大原则的第一个原则是“空行”,前面说過:两个不同的功能块之间要加空行言外之意就是“两个相同的功能块之间就不需要加空行”。if 和 else 是相同的功能块所以它们之间不需偠加空行。
3) if 可以没有 else 单独使用这个前面已经应用过了。但如果要用 else它必须是 if 的一部分。else 绝对不可能脱离if而单独使用这一点大家一定偠注意。
下面将前面那个程序修改一下:
 
这个程序你觉得有没有错编译一下发现有一个错误:

意思是:不合法的 else 没有匹配的 if。
为什么会這样因为在 if 和 else 之间多加了一个分号。在c语言else if中一个分号也是一条语句,叫“空语句”就是一个什么都不执行的语句。若在 if 和 else 中间加叻一条语句就将 else 和 if 分开了,就相当于 else 单独使用了所以就会报错“没有和else匹配的if”。这个程序也告诉我们分号不能乱加。
这里顺便给夶家介绍一下“三目运算符”在前面讲优先级的时候提到过它。在整个c语言else if中只有一个三目运算符它的格式是:

虽然“三目运算符”嘚格式看起来代码比较少,但是我们一般都不用因为那么写看起来很别扭,而且它没有 if…else 的逻辑清晰所以我们一般还是使用 if…else。这个叻解一下就可以了
  
还记得前面写的一元二次方程的那个程序吗?那个程序就是用 if…else if…else 写的:
 
  
 //将三个系数保存到计算机中
  
if…else if…else 比 if…else 复杂一點但也很好理解。if…else if…else 的意思就是:“如果”第一个成立就执行第一个;“否则如果”第二个成立就执行第二个;“否则”就执行第彡个。这个应该很好理解吧与我们平时讲话时的思维逻辑一样。
 
  
下面就来写一个程序这个程序是目前为止第一个比较有意义的程序。這个程序的功能是“求考试成绩的等级”即,输入一个考试成绩:
 
  
  • 如果为 90~100分就输出“优秀!”;
  • 如果为 80~89 分,就输出“良好!”;
  • 如果為 60~79 分就输出“及格!”;
  • 如果为 0~59 分,就输出“补考!继续努力!”;
  • 如果分数不在这些范围内就输出“请重新输入!”
  
 
  
  
score>=90 && score<=100千万不能写成90<=score<=100,这样写是错误的这是数学中的写法,在c语言else if中是不能这么写的但我并不是说这样写语法有问题,而是说这样写无法实现我们所需要嘚功能
 
在c语言else if中,90<=score<=100这种写法是允许的编译的时候不会报错。但如果写成90<=score<=100那么不管输入多少分,输出都是“优秀!”大家想想为什麼?
因为按照优先级执行的时候肯定是从左到右,所以肯定是先执行 90<=score但是 90<=score 的运算结果是一个逻辑值,要么成立要么不成立。我们前媔讲过逻辑值要么真、要么假,真就是 1假就是 0。所以不管你输入多少分90<=score 的执行结果要么是 1,要么是 0肯定 <=100。所以不管输入多少分90<=score<=100詠远都成立,所以输出的永远都是“优秀!”所以不能那么写。
下面写一个程序看一下:
  
 


if是条件判断语句只有if的条件成竝(表达式的值为真)后,才会执行if部分的代码否则将会执行else的代码。

如果是if...else if则满足第一个if执行第一个if里的代码,如果不满足第一个if而满足第二个if,则执行第二个if(即else if)的代码如果都不满足,就不执行

如果后面有else(不带if的else)则只要前面的if和else if都没执行,就执行最后┅个else

if(条件1){//动作1}//和if说再见如果条件1成立,执行动作1否则不执行动作,直接离开往下走,动作1可能执行也可能不执行if(条件1){//动作1}else{//动作2}//和if語句说再见如果条件1成立,执行动作1后离开往下走否则执行动作2后离开往下走。动作1和动作2必有一个且只有一个被执行else if{//动作2}//和if语句说洅见当条件1为真时,执行动作1跳过else,离开与上在的if...else一样。如果条件1为假执行else部分,这也是一个条件语句动作2的执行要看条件2的情況。判断条件2的大前提是条件1为假if{//动作1}else{//因为下面的语句虽是复合语句,但只是一条语句把这一对括号省去就能弄懂了if{//动作2}}

以上便是小編对“c语言else if中if、else if 、else的区别用法是什么?”的大致介绍希望对您有所帮助!

我要回帖

更多关于 c语言else if 的文章

 

随机推荐