黑马程序员------C 语言学习笔记---程序基本结构

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

第二  程序基本结构

一 分支结构

01 单分支结构

格式:

if(表达式)

{

语句;

}

其中,“表达式”为判断条件,只要表达式的值不为0,就认为条件成立。

 

02 双分支结构

格式:

if(表达式)

语句1;

else

语句2;

其中,表达式的值不为0,则执行“语句1”,否则执行“语句2”。

 

// 输入两个整数,按从小到大的顺序输出这两个数

#include <stdio.h>
int main()
{
    int a;
    int b;
    int temp;
    
    // 提示用户输入两个整数
    printf("请输入两个整数:\n");
    
    //接受用户输入的两个整数
    scanf("%d%d",&a,&b);
    
    // 比较输出
    if (a>b)
    {
        temp=b,b=a;
        printf("%d%d\n",temp,a);
    }
    else
    {
        printf("%d%d\n",a,b);
    }
    
    
    
    return 0;
}

 

03 多分支结构

格式:

if(表达式1)

语句1;

else if(表达式2)

    语句2;

……….

else if (表达式 n)

语句n;

else

语句n+1;

其中,按顺序求各个表达式的值,如果某一个表达式的值为真,那么执行其后的相应语句,执行完后整个if语句结束,其余语句不会被执行;如果没有一个语句为真,那么执行最后的else语句。

 

// 输入三个数x1,x2,x3,按从小到大的顺序输出者三个数

#include <stdio.h>
int main()
{
    // 定义四个变量
    int x1,x2,x3,temp;
    // 提示用户输入三个数
    printf("提示用户输入三个数:\n");
    // 接受用户输入的数据
    scanf("%d%d%d",&x1,&x2,&x3);
    // 比较并输出
    if (x1>x2)
    {
        temp=x1;x1=x2;x2=temp;
    }
    if (x1>x3)
    {
        temp=x1;x1=x3;x3=temp;
    }
    if (x2>x3)
    {
        temp=x2;x2=x3;x3=temp;
    }
    
    printf("%d,%d,%d\n",x1,x2,x3);
    
    
    
    return 0;
}

 

04  if语句的嵌套

格式:

if(表达式1)

  if(表达式2)语句1;

  else 语句2;

else

   if(表达式3)语句3;

   else 语句4;

其中,注意else与if的配对关系。C语言规定else总是与它前面最近的,且没有与其他else配对的if进行配对。

05 条件运算符

条件运算符“?:”是三目运算符,其功能相当于简单的if-else语句。

格式:

表达式1?表达式2:表达式3

其功能是,先计算“表达式1”的值,若为真就取“表达式2”的值为整个条件表达式的值,若为假,就取“表达式3”的值为整个表达式的值。

注意:

*条件运算符的优先级高于赋值运算符,低于关系运算符和算术运算符

例:max =a>b?a:b  等价 max=((a>b)?a:b)

*条件运算符的结合性为“自右向左”

a>b?a:c>d?a:d 等价 a>b?a:(c>d?a:d)

*表达式2和3不仅可以是数值表达式,还可以是赋值表达式和函数表达式

*表达式类型可以不同,条件表达式值的类型是表达式2和表达式3中类型较高的类型。

x>y?1:1.5 //x>y时返回值是1.0

 

// 某公园门票的票价为每人10元,一次购票满30张,每张可少收一元,编写一个收费程序
#include <stdio.h>
int main()
{
    int number,sum,money,balance; // 定义变量
    
    printf("输入人数:\n");
    scanf("%d",&number);
    
    if (number>=30)
    {
        sum = number*9;
    }
    else if(number*10<270)
    {
        sum = 10*number;
    }
    else
    {
        sum = 270;
    }
    
    printf("应受门票为%d元\n",sum);
    
    printf("实际收钱为:\n");
    
    scanf("%d",&money);
    
    balance = money-sum;
    
    printf("balance=%d\n",balance);
    
    return 0;

 

06  switch语句

switch的基本格式:

switch()

{

  case 常量表达式1:语句组1;【break;】

  case 常量表达式2:语句组2;【break;】

  ………………………….

  case 常量表达式 n: 语句组 n;【break;】

  [default: 语句组 n +1;]

}

 

// 输入两个整数,输出较大的那个

#include <stdio.h>
int main()
{
    int a,b;
    printf("请输入两个整数:\n"); // 提示用户输入数据
    scanf("%d%d",&a,&b);  // 接受数据
    
    // 判断输出
    if (a>b)
    {
        printf("max=%d\n",a);
    }
    else
    {
        printf("max=%d\n",b);
    }
    
    
    return 0;

 

注意:

l switch后面的表达式只能是整型,字符型,枚举型表达式

l 当表达式的值与后面某个case的值相等时,就执行case后面的语句。然后,流程控制转移到下一个case中语句继续执行。如果不想继续执行就执行break语句使流程跳出switch结构,即终止switch语句的执行。

l 如果表达式的值与所有常量表达式都不匹配,就执行default后面的语句

各常量表达式的必须互不相同,否则就会出现矛盾

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。