第四章

作者: White541 | 来源:发表于2018-01-02 23:08 被阅读0次

18.1.1~18.1.2

[TOC]

第四章:C程序控制

for循环语句

for循环语句的标准格式是:

for(表达式1; 表达式2; 表达式3)
    语句
  • 其中,表达式1用于对循环控制变量初始化,表达式2是循环继续条件,表达式3用于对循环控制变量进行增值;

  • 很多情况下,表达式1和表达式3是用逗号运算符分隔的表达式组,组中各个表达式一次从左向右求值;

  • 在for循环语句的初始化和增量部分,只编写与循环控制变量有关的表达式;

  • for循环语句的三个表达式可以选择省略,但分号 ; 需保留。

//计算存款利息
#include <stdio.h>
#include <math.h>
int main(void)
{
    double principal=1000, amount, rate=0.05;
    int year = 1;
    
    printf("%4s%21s\n", "Year", "Amount on deposit");           //制表

    for (; year <= 10; year++)
        printf("%4d%21.2f\n", year, amount = principal * pow(1.0 + rate, year));
    return 0;
}
  • double 为双精度浮点数类型,变量比 float 更大,精度也更高;
  • pow(x,y) 函数能够求得x的y次幂,它接收两个 double 型实参,返回一个 double 型结果。使用 pow 函数前,需在源程序中包含头文件 math.h
  • 转换说明符 %21.2f 表明这个变量占用的域宽为21,保留的精度为2;
  • 若显示出的数码个数小于域宽,将会自动向右对齐。在 % 与域宽之间插入减号 - 能实现左对齐。

Switch多重选择语句

switch多重选择语句由一系列case从句和一个可选的default从句组成,每个case只能测试一个整型常量表达式。

#include <stdio.h>
int main(void)
{
    int grade;
    int aCount = 0;
    int bCount = 0;
    int cCount = 0;

    while ((grade = getchar()) != EOF) {
        switch (grade) {

        case'A':
        case'a':
            ++aCount;
            break;

        case'B':
        case'b':
            ++bCount;
            break;

        case'C':
        case'c':
            ++cCount;
            break;

        case'\n':                               //对换行或空白符处理
        case'\t':
        case' ':
            break;

        default:
            printf("Incorrect letter. Enter a new letter/n");
            break;
        }                                   //end switch
    }                                       //end while

    printf("A:%d\n", aCount);
    printf("B:%d\n", bCount);
    printf("C:%d\n", cCount);

    return 0;
}
  • getchar 函数表示从键盘读入一个字符,类型为char的整数;除了使用getchar从键盘录入字符外,还可使用scanf_s,通过转换说明符%c来输入字符;
  • EOF 意为“End Of File”,为符号常量,windows中通过Ctrl + Z 实现输入;
  • 每个case标签下可有多个操作语句而不需要使用花括号括起;
  • 当每次只需要一个字符时,需要对输入流中的换行或其他空白符进行处理;
  • 除了intchar外,C语言中还有short(-32768 ~ +32768)、long(-2147483648 ~ +2147483648),int取值范围至少与short相当但不超出long,数据类型signed char可表示范围在-128 ~ +127之间的整数或计算机字符中的任意字符;
  • 字符常量用单引号 '' 括起来的特定字符表示。

do...while循环语句

执行do...while循环语句时,首先执行循环体,然后再进行循环条件的测试,因此,do...while循环语句的循环体至少被执行一次。应当使用花括号括起循环体,以避免与while循环语句的混淆。

//打印1到10
#include <stdio.h>
int main(void)
{
    int counter = 1;

    do {
        printf("%d\n", counter);
    } while (++counter <= 10);

    return 0;
}

break和continue语句

  • whilefordo...whileswitch 语句中,执行break语句将导致程序立即从这些语句中退出,转去执行紧跟这些语句之后的下一条语句。
  • whilefordo..while循环结构中,执行continue语句会使控制流略过循环体中剩余语句,重新开始新一轮循环。在whiledo...while循环结构中,执行continue语句后,将立即开始下一环节循环条件的测试;在for循环语句中,执行continue语句后,将立即开始下一轮环节的增量表达式,然后开始循环条件测试。
  • 因此使用continue语句时,whilefor循环结构工作方式不同。

性能提示:对于结构化程序设计技术,适当使用breakcontinue语句有助于程序运行速度更快。

逻辑运算符

  • 逻辑与运算符&&、逻辑或运算符||都是二元运算符,从左到右结合;逻辑非!是一元运算符,从右向左结合。
  • 给出目前为止运算符优先级和结合律:
运算符 结合律 类型
++(后缀) --(后缀) 从右向左 后缀类
+ - ! () ++(前缀) --(后缀) 从右向左 一元类
* / % 从右向左 乘法类
+ - 从左向右 加减类
< <= > >= 从左向右 关系类
&& 从左向右 逻辑与运算符
` ` 从左向右 逻辑或运算符
!= == 从左向右 相等类
?: 从右向左 条件类
= += -= *= /= %= 从右向左 赋值类
, 从左向右 逗号运算符

区分相等运算符==和赋值运算符=

在一常量一变量中使用相等运算符如 x == 7 时,习惯写为 7 == x ,即将常量写在左边,有助于避免运行时发生的逻辑错误。

错误预防提示:程序编写完成后,用文本搜索器检索程序中每一个=,检查其是否使用正确。

相关文章

网友评论

      本文标题:第四章

      本文链接:https://www.haomeiwen.com/subject/urdcnxtx.html