C语言基础之语句-笔记五

基础概念:
1、语句:表达式后面加上分号,构成表达式语句。特殊情况为只有1个分号的语句,称空语句。
2、语句分类
(1)空语句:本身只有一个分号,在不需要执行任何任务,但语法要求出现一条完整的语句时使用。
(2)表达式语句:如:x=y+3;
(3)控制语句,包括选择语句和循环语句。

 

一、选择语句(分支语句)
分类:if语句和switch语句
1、if语句
   ① if(单分支);
   ② if(expression) ....else.....(双分支)
   ③ if ....  else if ...  (else if) .....else(多分支)
   expression可以是任何能够产生整型结果的表达式,零值表示”假”,非零值表示”真”。C语言中不具备布尔类型。
(1)if语句示例
--1)单分支if语句
#include 
int main()
{
    int i=0;//--i=1
    if(i)//条件表达式,条件为真(非0),则执行,假(0)则不执行
     {
        printf("1111\n");
     }
    return 0;
}
--2)双分支if语句
#include 
int main()
{
    int iNum=0;
    while(1)//"1"为真,重复执行,非0即真
      {
        printf("请输入一个数\n");
        scanf("%d",&iNum);
        //条件判断
        if(0==iNum%2)
          {
	     printf("%d是偶数\n",iNum);
          }
        else
          {
	     printf("%d是奇数\n",iNum);
          }
      }
    return 0;
} 
--3)多分支if语句
#include 
int main()
{
    int i;
    while(1)
      {	
	printf("请输入成绩\n");
	scanf("%d",&i);
	if(i>90)
	{
	    printf("成绩为A\n");
	}
	else if(i<=90 && i>80)
	{
	    printf("成绩为B\n");
	}
	else if(i<=80 && i>70)
	{
	    printf("成绩为C\n");
	}
	else
	{
	    printf("成绩D\n");
	}
      }
      return 0;
}

 

2、switch case 语句
(1)概念
   switch 语句是一种多路判定语句,它判断表达式的值是否与整数或字符常量列表中的某个值相匹配,若找到了相应的匹配,就会执行与常量关联的语句, 遇到break语句终止执行。不符合case语句就执行default后的语句,同样遇到break语句终止执行。default子句可以出现在语句列表的任何位置,通常放在列表末尾。
执行过程:首先计算switch(表达式)中表达式的值,然后当case后不加break;时,程序执行case标签与表达式值匹配的语句,并从该条case语句开始,一直执行直至语句列表结束;当case后加上break;时,执行完case标签与表达式值匹配的语句后,程序跳到语句列表的末尾,即跳出switch语句。
(2)编写格式
switch(表达式)
{
   case 1:
	{
          语句集;
        }
	break;
   case 2:
	{...}break;
   default:
	{
          语句集;
	}
        break;
}
(3)示例
根据输入成绩并输出分数等级 >90:A ; >=90>80:B ; >=80>70:C; >=70>60:D;其他:不合格
#include 
int main()
{ 
    int iscore;
    while(1)
      {
        printf("请输入成绩\n");
        scanf("%d",&iscore);
        switch(iscore/10)
           {
             case 9:
	          {
	              printf("A\n");
	          }
                  break;
             case 8:
	          {
	              printf("B");
	          }
                  break;
             case 7:
	          {
	               printf("C");
	          }
                  break;
             case 6:
	          {
	               printf("D");
	          }
                  break;
             default:
	          {
	               printf("不合格");
	          }
          }
     }
   return 0;
}
(4)使用
 1)计算表达式的数据类型要与指定的case常量的数据类型匹配。
 2)switch后的表达式可以包含任何变量名,也可以是常量,但结果必须是整型值。
 3)case后面只能是常量(整型和字符型)。
(5)if和switch区别
   if:范围性判断(线判断),条件的计算是自顶向下
   switch:状态性判断(点判断)

 

二、循环语句
分类:for循环、while循环、do...while循环
1、for语句
(1) 编写格式
for(初始值;终止值;步长)
{
      语句集;
}
程序执行过程:

C语言基础之语句-笔记五_第1张图片

初始值在循环最开始时执行一次,之后不再执行初始值。第一次执行完初始值后,执行for循环里面的语句,然后执行步长,接着终止值作判断,满足条件,直接执行for循环里面的语句,不满足条件则跳出for循环;然后再执行步长(调整部分),如此循环,直到终止值判断不满足条件跳出for循环。
在for语句中,continue跳过循环体的剩余部分,直接回到调整部分。在while语句中,调整部分是循环体的一部分,所以continue将会把它也跳过。
(2)示例
--绘制九九乘法表
#include 
int main()
{
    int i,j;
    for(j=1;j<10;j++)
      {
        for(i=1;i<=j;i++)
          {
            printf("%d*%d=%d\t",i,j,i*j);
          }
        printf("\n");
    }
    return 0;
}

for循环实现:对数组成员值从小到大进行排列:
#include 
#include 
#include 

#define NUM_ELEMENTS 10 

int main()
{
    int i,j,k=0;
    int temp;
    int value[10]={3,6,7,1,4,9,5,8,12,15};
    for(i=0;ivalue[j])//将值小的排列在前面
	     {
	        temp=value[i];
		value[i]=value[j];
		value[j]=temp;
	     }
          }
      }
    for(k;k<10;k++)
      {
         printf("value[%d]=%d\n",k,value[k]);
      }
    while(1);
    return 0;
}

执行过程:
value[0]依次和value[1]、value[2]…value[9]比较,比较完之后将最小的值给value[0],第2次value[1]依次和value[2]、value[3]…value[9]比较,比较完之后将次小的值给value[1],最后value[8]和value[9]比较,比较完之后将最次小的值给value[8]。

C语言基础之语句-笔记五_第2张图片

(3)注意
  for嵌套使用,可以实现画界面效果。
2、while语句
(1)while(表达式)//表达式为真,才执行语句
   {
     语句集;
   }
   --重复执行,有可能执行不到
(2)do
   {
     语句集;
   }while(条件表达式);
   --至少执行一次,条件满足继续执行,直到条件为假,结束程序。(当型循环)
(3)示例
--1)重复执行,按esc退出
#include 
int main()
{
    char ch=0;
    int i=0;
    while(1)
       {
	 printf("111\n");
	 ch=getch(); 
	 if(27==ch)//27为esc的ASCII码
	  {
	      break;//若输出为esc,则退出
	  }
       }
     return 0;
}
--2)重复执行,按y再回车,进行下一步,按n退出
#include 
int main()
{
    char ch='y';
    while(ch=='y')//while中可以是常量也可以是变量也可以是表达式
       {
	  printf("111\n");
	  ch=getch();
	  if('n'==ch) //若输入为n,则退出
	    {
		break;
	    }
       }
    return 0;
}
--3)至少执行一次,直到条件不满足结束循环。
#include 
int main()
{
    int i=0;
    do
    {
	printf("111");
    }while(1);
    return 0;
}

(4)for和while区别:
while和for语句的循环体可能一次也不执行,而do-while语句的循环体至少也要执行一次。
for:范围条件限定(循环次数)已知   while:循环条件未知
三、其它控制语句
break; continue; goto; return;exit等
1、break语句和continue语句
(1) break语句概念
 1)用于在 switch 语句中终止case,也可用于循环中突然终止循环
 2)当循环中遇到 break 语句时,循环立即终止,控制权传递给循环之后的语句
 3)多层循环中,break只向外跳一层
(2) continue语句概念
 1)只能在循环中使用让封闭循环进行下一次迭代
 2)遇到该语句时,跳过循环体中剩余的语句,控制权传递给重新初始化步骤
 3)在while循环和do…while循环中,程序控制权传递个条件测试语句
 4)在for循环中,continue影响循环的增量部分,然后执行条件测试
(3)示例
--1)break在前,continue在后
#include 
int main()
{
    int i;
    for(i=0;i<10;i++)
	{
	  if(i==2)
	   {
		break; //结束for循环
	   }
	  if(i==4) 
	   {
		continue;
	   }
	  printf("%d\n",i);
	}
    return 0;
}//运行输出 0 1
--2)continue在前,break在后
#include 
int main()
{
    int i;
    for(i=0;i<10;i++)
	{
	   if(i==2)
	    {
		continue;//结束当前循环,进入下一次循环
	    }
	   if(i==4) 
	    {
		break;
	    }
	   printf("%d\n",i);
         }
    return 0;
}//运行输出 0 1 3
break和continue两条语句中的任意一条出现在嵌套的循环内部,只会对最内层的循环起作用,无法对外层循环起作用。
2、goto语句
goto 语句将控制权传递给C程序中同一函数内的其他语句。
C语言是结构化语言,顺序较为严谨,故一般不用goto,会破坏结构体。
3、return语句:
(1)编写格式:return expression;
(2)使用
 1)表达式可选
 2)return 语句用于从函数中返回
 3)return 语句可带有值,该值将返回给调用程序,该语句使程序执行返回到调用函数的位置。
 4)一个函数中可以使用多个return语句,但是遇到第一个return语句时返回
4、exit语句:结束函数,相当于
(1)编写格式:exit(int return_code);
(2)使用
 1)exit() 用于跳出一个程序,是一个标准库函数
 2)该函数的用途是立即终止程序,控制权交给操作系统

注:基于代码规范,各控制语句无论几行,都应加{}。

 

编辑 2020-4-22 21:03
注:本文旨于作为自己的学习笔记,不作他用。

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(C语言基础)