C语言入门2


   if语句的嵌套
   在嵌套内的if语句可能又是if-else型的,这将会出现多个if和多个else重叠的情况,这时要特别注意if和else的配对问题。
   例如:
   if(表达式1)
   if(表达式2)*
    语句1;
   else*
    语句2;
   其中的else究竟是与哪一个if配对呢?[else*和就近的if*配对]
   为了避免这种二义性,C语言规定,else总是与它前面最近的if配对,因此对上述例子应理解为:
    if(表达式1)
        if(表达式2)
            语句1;
        else
            语句2;
   比较以下两题目:哪一个是运用嵌套方法?
   【例5.6】
   void main()
   {
    int a,b;
    printf("please input A,B: ");
    scanf("%d%d",&a,&b);
    if(a!=b)
        if(a>b) printf("A>B\n");
        else printf("A<B\n");
    else printf("A=B\n");
   }
   条件运算符和条件表达式
   条件运算符为"?:",他是一个三目运算符,即有三个参与运算的量。
   由条件运算符组成的条件表达式的一般形式为:
    表达式1?表达式2:表达式3
   其求值规则为:如果表达式1的值为真,则以表达式2的值作为条件表达式的值,否则以表达式3 的值作为整个表达式的值。
   条件表达式通常用于赋值语句中。
   例如条件语句:
    if(a>b) max = a;
    else max = b;
   可用条件表达式写为:
    max = (a>b)?a:b;
   执行该语句的语义是:如a>b为真,则把a赋予max,否则把b赋予max。
   使用条件表达式时,还应注意以下几点:
   1)条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。
   因此:max=(a>b)?a:b; 可以去掉括号而写为:max=a>b?a:b;
   2)条件运算符?和:是一对运算符,不能分开单独使用。
   3)条件运算符的结合方向是自右至左。
   例如:a>b?a:c>d?c:d 应理解为:a>b?a:(c>d?c:d);
   这也就是条件表达式嵌套的情形,即其中的表达式3又是一个条件表达式。
   【例5.8】
   void main()
   {
    int a,b,max;
    printf("\ninput two numbers: ");
    scanf("%d%d",&a,&b);
    printf("max=%d",a>b?a:b);
   }
   补充:输入一个字符,判断它是否是大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。
   #include <stdio.h>
   void main()
   {
    char ch;
    scanf("%c",&ch);
    ch=(ch>='A'&&ch<='Z')?(ch+32):ch;
   }
   switch语句
   【例4.9】
   void main()
   {
    int a;
    printf("input integer number: ");
    scanf("%d",&a);
    switch(a)
    {
        case 1:printf("Monday\n");break;
        case 2:printf("Tuesday\n");break;
        case 3:printf("Wednesday\n");break;
        case 4:printf("Thursday\n");break;
        case 5:printf("Friday\n");break;
        case 6:printf("Saturday\n");break;
        case 7:printf("Sunday\n");break;
        default:printf("error\n");
    }
   }
   在使用switch语句时还应注意以下几点:
   1)在case后的各常量表达式的值不能相同,否则会出现错误。
   2)在case后,允许有多个语句,可以不用{}括起来。
   3)各case和default子句的先后顺序可以变动,而不会影响程序执行结果。
   4)default子句可以省略不用。
   【例4.11】输入三个整数,输出最大数和最小数。
   void main()
   {
    int a,b,c,max,min;
    printf("input three integer numbers: \n");
    scanf("%d%d%d",&a,&b,&c);
    if(a>b){
        max = a;
        min = b;
    }else{
        max = b;
        min = a;
    }
    if(c>max){
        max = c;
    }
    if(c<min){
        min=  c;
    }
    printf("max=%d,min=%d",max,min);
   }
   【例4.12】计算器程序。用户输入运算数和四则运算符,输出计算结果。
   double a,b;
    char c;
    printf("input expression:a+(-,*,/)b\n");
    scanf("%lf%c%lf",&a,&c,&b);
    switch(c)
    {
        case '+': printf("%lf\n",a+b);break;
        case '-': printf("%lf\n",a-b);break;
        case '*': printf("%lf\n",a*b);break;
        case '/': printf("%lf\n",a/b);break;
        default: printf("input error\n");
    }
   作业1:输入一个年份,并判断是否为闰年。
   #include <stdio.h>
 void main()
 {
    /***************************
    *输入一个年份判断是否为闰年*
    ***************************/
    int y;
    scanf("%d",&y);
    if(y%4==0)
    {
        if(y%100==0 && y%400!=0){
            printf("%d is not a leap year.\n",y);
        }
        else
        {
            printf("%d is a leap year.\n",y);
        }
    }
    else
    {
        printf("%d is not a leap year.\n",y);
    }
 }
   作业2:运输公司对用户计算运费。
   路程(s)越远,每公里运费越低。标准如下:
   s<250km    没有折扣
   250≤s<500    2%折扣
   500≤s<1000    5%折扣
   1000≤s<2000    8%折扣
   2000≤s<3000    10%折扣
   3000≤s    15%折扣
   设每公里每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费f的计算公式为:
   f = p*w*s*(1-d);


   void main()
   {
    f = p*w*s*(1-d);
    int s,c;
    float p,w,d,f;
    scanf("%f,%f,%d",&p,&w,&s);
    if(s>=3000)
    {
        c = 12;
    }
    else
    {
        c = s/250;
    }
    printf("\nc=%d\n",c);
    switch(c){
        case 0: d=0;break;
        case 1: d=2;break;
        case 2:
        case 3: d=5;break;
        case 4:
        case 5:
        case 6:
        case 7: d=8;break;
        case 8:
        case 9:
        case 10:
        case 11:d=10;break;
        case 12: d=15;
    }
    f = p*w*s*(1-d/100.0);
    printf("freight=%15.4f\n",f);
   }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言入门到精通》是一本针对C语言学习的教程。本书以系统完整的方式介绍了C语言的基本概念、语法和应用,并通过大量的示例和练习帮助读者快速掌握C语言编程技巧。 书籍的第一部分主要介绍了C语言的基础知识。首先,它介绍了C语言的发展历程以及与其他编程语言的区别。然后,书中详细解释了C语言的数据类型、运算符、流程控制语句和函数等基本概念,帮助读者建立起对C语言编程的基础理论知识。 第二部分是关于C语言的高级应用和技巧。本书详细介绍了C语言的数组、指针、结构体和文件操作等高级特性。读者可以通过学习这些知识,掌握更加灵活、高效的编程方法,提高自己的程序设计能力。 此外,本书还包含了一些常用的C语言库函数和相关工具的介绍,如字符串处理函数、内存管理函数和调试工具等。这些内容帮助读者更好地理解和使用C语言的相关资源,提高自己的编程效率。 《C语言入门到精通》不仅提供了理论知识的讲解,还提供了大量的实战编程示例和练习题。这些示例和练习题既可以帮助读者巩固所学知识,又可以提供编程实践的机会,培养读者的编程思维和解决问题的能力。 总的来说,这本书适合初学者作为C语言学习的入门教材,也适合有一定编程基础的读者作为C语言进阶学习的参考书。无论是新手还是专业人士,通过学习这本书,都可以逐步掌握C语言的基本概念和高级应用,从入门到精通。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值