语句和复合语句
    语句。语句是一个程序的主要构成部分 。一个程序是一系列由标点分隔的语句组成的。一个语句是给计算机的一条完整的指令。在 C 语言里, 一个语句是在结尾处用分号结束的。我们到现在已经学习了五种语句。
    复合语句。是由包含在大括号里的一个或多个语句组成的程序块。语法上, 复合语句被当作单个语句对待。

<1>if语句:
if语句可以构成分支结构。它根据给定的条件进行判断, 以决定执行某个分支程序段。C语言的if语句有三种基本形式:
第一种形式为基本形式 if(表达式) 语句; 其语法含义是:如果表达式的值为真,则执行其后的语句, 否则不执行该语句。还是看例子
#include<stdio.h>
void main()  /*本程序是对输入的两个数比较大小,并输出最大值*/
{
int a,b,max;
printf(“\\n input two numbers: “);
scanf(“%d%d”,&a,&b);
max=a;  /*max是最大值函数*/
if (max<b) max=b;  /*括号中就是条件*/
printf(“max=%d”,max);
}
第二种形式为if-else形式
if(表达式)
语句1;
else
语句2;
其语法含义是:如果表达式的值为真,则执行语句1,否则执行语句2 。
void main(){
int a, b;
printf(“input two numbers: “);
scanf(“%d%d”,&a,&b);
if(a>b)
printf(“max=%d\\n”,a);
else
printf(“max=%d\\n”,b);
}
还是比较大小并输出最大值,现在改用if-else语句判别a,b的大小,若a大,则输出a,否则输出b。
第三种形式为if-else-if形式
前二种形式的if语句一般都用于两个分支的情况。 当有多个分支选择时,可采用if-else-if语句,其一般形式为:
if(表达式1)
语句1;
else if(表达式2)
语句2;
else if(表达式3)
语句3;

else if(表达式n-1)
语句n-1;
else
语句n;
其语法含义是:依次判断表达式的值,当出现某个值为真时, 则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n 。 然后继续执行后续程序。
#include”stdio.h”
void main(){
int c;
printf(“input a character: “);
c=getchar();
if(c<0)
printf(“这个是负数\\n”);
else if(c>0)
printf(“这个是正数\\n”);
else if(c=0)
printf(“这个是0\\n”);
else
printf(“不存在哦,难道是虚数\\n”);
}

if语句的嵌套
if语句是可以进行嵌套的,当if语句中的执行语句又是if语句时,则构成了if 语句嵌套的情形。其一般形式可表示如下:
if(表达式)     或者   if(表达式)
if语句;              if语句;
                      else
                      if语句;                                 
在嵌套内的if语句可能又是if-else型的,这将会出现多个if和多个else重叠的情况,这时要特别注意if和else的配对问题。如:
if(表达式1)
if(表达式2)
语句1;
else
语句2;
其中的else究竟是与哪一个if配对呢?
应该理解为:   还是应理解为:
if(表达式1)    if(表达式1)
 if(表达式2)     if(表达式2)
  语句1;       语句1;
else         else
  语句2;       语句2;
为了避免这种二义性,C语言规定,else 总是与它前面最近的if配对,因此对上述例子应按前一种情况理解。
还是比较两个数的大小关系的例子。
void main(){
int a,b;
printf(“please inputx y: “);
scanf(“%d%d”,&a,&b);
if(a!=b)
if(a>b)
printf(“x is max\\n”);
else
printf(“y is max\\n”);
else
printf(“x=y\\n”);
}
我不是很喜欢书上的代码,毕竟书上写的有点繁杂~!~毕竟简单的就是最好的!
上面的题目还能用可用条件表达式写
为 max=(a>b)?a:b; 执行该语句的语义是:如a>b为真,则把a赋予max,否则把b 赋予max。
具体的代码大家自己想咯,我就不写出来了。

switch语句
C语言还提供了另一种用于多分支选择的switch语句, 它的一般形式为:
switch(表达式){
case常量表达式1: 语句1;
case常量表达式2: 语句2;

case常量表达式n: 语句n;
default : 语句n+1;
}
其语法含义是:计算表用达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。 如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。还是来个例题哈
例题:对所输入的数进行判断奇偶性
分析:判断奇偶性就是把所要求的数和2相除,看最后的余数是以还是0.
void main()
{
int a,b;
printf(“input integer number: “);
scanf(“%d”,&a);
b=a%2;    /*”%是取模,就是取余数啦”*/
switch (b)
{
case 1:printf(“j\\n”);       break;/*break是跳出不执行后面的case*/
case 0:printf(“o\\n”);       break;
}
/*printf(“b=%d\\n”,b);用printf也能达到同样的效果*/
}
大家注意,要是没有break来跳出,那么它会一直执行到最后一个case,上面的的程序要是这样写:
void main()
{
int a,b;
printf(“input integer number: “);
scanf(“%d”,&a);
b=a%2;   
switch (b)
{
case 1:printf(“j\\n”);      
case 0:printf(“o\\n”);      
}
}
不管只要是奇数就会出现“j,o”两个值,要是偶数却只会出现“o”这个是为什么,大家自己考虑下哦。
最后大家在使用switch语句时还应注意以下几点:
1.在case后的各常量表达式的值不能相同,否则会出现错误。
2.在case后允许有多个语句,可以不用{}括起来。
3.在case后如果右break那么执行本此case后就不会执行下面的case
3.各case和default子句的先后顺序可以变动,而不会影响程序执行结果。
4.default子句可以省略不用。
最后再来给大家一个例题,
例题2:写个程序要求对输入两个数进行:“+,-,*,/”的运算。
分析,突然看到这个题目,估计不少新手会手忙脚乱,不知道从哪里开始,但是大家想下switch中的语句,可以用case来表示,代码如下:
void main()
{
float a,b,s;
char c;
printf(“input a,b: a+(-,*,/)b \\n”);
scanf(“%f%c%f”,&a,&c,&b);
switch(c)
  {
case \’+\’: printf(“%f\\n”,a+b);break;
case \’-\’: printf(“%f\\n”,a-b);break;
case \’*\’: printf(“%f\\n”,a*b);break;
case \’/\’: printf(“%f\\n”,a/b);break;
default: printf(“input error\\n”);
  }
}
是不是很巧妙的代码,大家在以后的学习中要活学活用哦。
现在给大家留个习题吧,其实也是很简单的:就是比较1个数的然后打印出对应的星期(如输入1,打印出星期一),分别用if和switch语句来实现。

评论被关闭。