C语言轻松学习-4

第四章

任务一:选择性语句

任务二:循环性语句

小结

习题

时隔了这么长时间了,今天我要来更新“C语言轻松学习-4”了,大家是不是有点小激动?

那么,我们废话不多说,直接开讲!

看看任务一的大标题“选择性语句”,从这名字我们就可以看出来,这语句肯定是具有判断性,选择性的,那么我就要接着讲,四条具有判断性的语句

“if(逻辑值(0假,非0为真))”

“if(逻辑值(0假,非0为真)) else”

“if(逻辑值(0假,非0为真)) else if(逻辑值(0假,非0为真)) …… ……else”

switch()

第一条的“if()”上一章我们将过,所以这里就不再叙述了,我们直接开始“if() else”语句例子如下:

#include<stdio.h>
int main()
{
  int x;
  scanf("%d",&x);
  if(x>=3)
  {
    printf("大于等于3\n"); 
  }
  else 
  {
    printf("小于3\n");
  }
 }

调试截图如下:若“if()”括号内的逻辑值为真(非0)则执行“if()”下方花括号里面的语句

反之,若逻辑值为假(0)则将会跳过该语句(printf(“大于等于3”);)并执行“else”下方花括号内的语句

那么我们来试一下,不需要表达式,只使用逻辑值,看看“if() else”语句能否正常执行,下方为调试代码:

#include<stdio.h>
int main()
{
  int x;
  scanf("%d",&x);
  if(x)
  {
    printf("真\n"); 
  }
  else 
  {
    printf("假\n");
  }
 }

调试截图:果然我们输入逻辑值为真的非0数值“1”然后”if() else”则执行“if()”下方的语句,

反之,我们输入逻辑值为假的“0”数值,果不其然,跳转到“else”的下方语句

 

上述都只是一般地,简单式地判断,我们真正写程序时,用户使用时,可能并不止只有1个或2个提示,接下来我们来学习,多个“if() else if() else if()…… ……else”,最经常使用的语句,

例如,我们需要因学生成绩分数来判断Ta是否处于哪一级别的水平是‘A’级?‘B’级?‘C’级?等等…… ……

那么,这就是典型的多重判断,多重提示信息,我们就得使用该语句了,代码如下:

#include<stdio.h>
int main()
{
  int a;
  scanf("%d",&a);
  if((90<=a)&&(a<=100))
  printf("A\n");
  else if(a>=80)
  printf("B\n");
  else if(a>=70) 
  printf("C\n");
  else if(a>=60) 
  printf("D\n");
  else
  printf("E\n");
  return 0;
}

调试截图:我们随便输入任意数值,

其实我们还可以利用“switch()”语句完成上述过程,我直接写例子了,这个目前我还没法儿解释,,不过使用很简单!代码如下:

#include<stdio.h>
int main()
{
  int a;
  scanf("%d",&a);
  switch(a)
  {
    case 100:printf("A\n");
    case 90:printf("B\n");
    case 80:printf("C\n");
    case 70:printf("D\n");
    case 60:printf("E\n");
    case 50:printf("F\n");
    case 40:printf("G\n");		//哇,,,累了后面懒得写了 
  }
  return 0;
}

我们所输入的数值,程序会响应相应的”case x:事件”这样写,感觉不太好,例如下方调试,我们输入数值“80”却输出了很多从“C→G”全部输出了

试了试“60”输出“E→F”

我们发现了,我们输入对应的“case:x”虽然的确响应了正确的级别,不过它竟然把后面的其他情况也显露了出来,这样是不行的,所以我们就需要“break;”跳出语句了,

修改后代码如下:

#include<stdio.h>
int main()
{
  int a;
  scanf("%d",&a);
  switch(a)
  {
    case 100:printf("A\n");
    break; 
    case 90:printf("B\n");
    break; 
    case 80:printf("C\n");
    break; 
    case 70:printf("D\n");
    break; 
    case 60:printf("E\n");
    break; 
    case 50:printf("F\n");
    break; 
    case 40:printf("G\n");		//哇,,,累了后面懒得写了 
    break; //此行写不写无所谓,因为后面没有printf了,不过写了美观! 
  }
  return 0;
}

演示截图:

上述虽然成功了,不过大家有木有发现,我一直输入的都是“case: x”x相对应的整数值,那么,如果我们输入没有对应的“case”事件的数值时,会是什么样子腻?我们带着疑问继续调试

调试截图:发现了,此程序什么也没有输出,那么,这样就不方便了,用户必须得输入指定的对应具有事件的数值或字符,才能实现程序的效果性

大家要灵活使用啊,我们不止可以用 整数来作为对应事件的激活码,我们也可以使用字符来作为对应事件的激活码,代码如下:

#include<stdio.h>
int main()
{
  char a;
  scanf("%c",&a);
  switch(a)
  {
    case 'a':printf("A\n");
    break; 
    case 'B':printf("B\n");
    break; 
    case 'c':printf("C\n");
    break; 
  }
  return 0;
}

调试截图:我们输入小写“a”,输出了对应的语句

 

要记得让用户准确输入指定的数值,才可以响应相应的语句,否则,如下:

回到原题,我们让用户输入成绩,然后这个“switch()”语句必须对应,才可以实现,除非我们一个一个的编写每个数值所对应的不同事件,代码如下:这样写,太费手了,所以,我们可以想个办法,使它尽量少写点儿语句,发现了没有,级别“A B C D E”分别对应“(100/10和9x/10)(8x/10)(7x/10)(6x/10)”

#include<stdio.h>
int main()
{
  char a;
  scanf("%c",&a);
  switch(a)
  {
    case 100:printf("A\n");
    break; 
    case 99:printf("A\n");
    break; 
    case 98:printf("A\n");
    break; 
    case 97:printf("A\n");
    break; 
    case 96:printf("A\n");
    break; 
    ......
    ......
    ......
    ......
    case 60:printf("D\n");
    break; 
    case 59:printf("E\n");		//哇,,,累了后面懒得写了 
    break; //此行写不写无所谓,因为后面没有printf了,不过写了美观! 
  }
  return 0;
}

忘了一条,我们可以把最后的“break;”替换为“default :printf(“bababa~”);”意思是如果用户输入的数值上述事件”case”都没有对应的响应,则最后响应此行,代码如下:

#include<stdio.h>
int main()
{
  int a;
  scanf("%d",&a);
  switch(a)
  {
    case 100:printf("A\n");
    break; 
    case 99:printf("A\n");
    break; 
    case 98:printf("A\n");
    default :printf("bababa~"); 
  }
  return 0;
}

调试截图:我们将了这些,发现了没有语句“if() else if() else if()…………else”和“switch()”语句十分相似,不过,“switch()”相对较“死”而“if() else if()…………else”相对于比较灵活,不过我记得老师说过,虽然“switch()”相对“if()”较“死”,不过此语句好像是用作数据库必备的(=-=,Emmm…我也想不起来了)

OK,我们稍作休息,理解之后,下一页,学习下一课!

1 2 3
未经允许不得转载:晗雅|星空 » C语言轻松学习-4
分享到:

请选择你看完该文章的感受:

5瞧一瞧 1扯淡 1学到了 0不懂 3正能量 0无聊

评论1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址 (选填)
  1. #1
    999999
    lzonel2019-11-05 23:23:46回复