1月17日 C Primer Plus学习

7.1 if 语句

if语句被称为分支语句(branching statement)或选择语句(selection statement),因为它相当于一个交叉点,程序要在两条分支中选择一条执行。

if语句的通用形式如下:

if ( expression )

statement

如果对expression求值为真(非0),则执行statement;否则,跳过 statement。与while循环一样,statement可以是一条简单语句或复合语句。

if 语句的结构和while语句很相似,它们的主要区别是:如果满足条件可执行的话,if语句只能测试和执行一次,而while语句可以测试和执行多次。

通常,expression 是关系表达式,即比较两个量的大小(如,表达式 x > y 或 c == 6)。如果expression为真(即x大于y,或c == 6),则执行statement。否则,忽略statement。概括地说,可以使用任意表达式,表达式的值为0则为假。 statement部分可以是一条简单语句。

即使if语句由复合语句构成,整个if语句仍被视为一条语句。

7.2 if else 语句

if else语句的通用形式是:

if ( expression )

statement1

else

statement2

如果expression为真(非0),则执行statement1;如果expression为假或0,则执行else后面的statement2。

statement1和statement2可以是一条简单语句或复合语句。

C并不要求一定要缩进,但这是标准风格。缩进让根据测试条件的求值结果来判断执行哪部分语句一目了然。

如果要在if和else之间执行多条语句,必须用花括号把这些语句括起来成为一个块。

if 语句与if else 语句的区别如下:

7.2.1 另一个示例:介绍getchar()putchar()

getchar()函数不带任何参数,它从输入队列中返回下一个字符。例如,下面的语句读取下一个字符输入,并把该字符的值赋给变量ch:

ch = getchar();

该语句与下面的语句效果相同:

scanf("%c", &ch);

putchar()函数打印它的参数。例如,下面的语句把之前赋给ch的值作为字符打印出来:

putchar(ch);

该语句与下面的语句效果相同:

printf("%c", ch);

由于这些函数只处理字符,所以它们比更通用的scanf()和printf()函数更快、更简洁。而且,getchar()和 putchar()不需要转换说明,因为它们只处理字符。

这两个函数通常定义在 stdio.h头文件中。

7.2.2 ctype.h 系列的字符函数

ctype.h头文件包含了一系列专门处理字符的函数的原型。

这些函数接受一个字符作为参数,如果该字符属于某特殊的类别,就返回一个非零值(真);否则,返回0(假)。

例如,如果isalpha() 函数的参数是一个字母,则返回一个非零值。

ctype.h头文件中的字符测试函数:

ctype.h头文件中的字符映射函数:

7.2.3 多重选择else if

实际上,else if 是已学过的 if else 语句的变式。

对于编译器的限制范围,C99标准要求编译器最少支持127层套嵌。

7.2.4 else 与if 配对

规则是,如果没有花括号,else与离它最近的if匹配,除非最近的if被花括号括起来。

注意:要缩进“语句”,“语句”可以是一条简单语句或复合语句。编译器是忽略缩进的。

编程练习第七题

#include<stdio.h>
int main()
{
	printf("请输入一周工作的小时数:\n");
    float salary,tax,salary2,i;
	scanf("%f",&i);
    if (i <= 30)
    {
        salary = i * 10.00;
        tax = salary * 0.15;
    }
    else if (i <= 40)
    {
        salary = i * 10.00;
        tax = 300 * 0.15 + (salary - 300) * 0.20;
    }
    else
    {
        salary = (40 + (i - 40) * 1.50) * 10.00;
        if (salary <= 450)
        {
            tax = 300 * 0.15 + (salary -300) * 0.20;
        }
        else
        {
            tax = 300 * 0.15 + 150 * 0.20 + (salary - 450) * 0.25;
        }
    }
    printf("你的工资总额是%.2f美元,税金是%.2f美元,净收入是%.2f美元", salary, tax, salary - tax);
    return 0;
}
posted @ 2022-02-07 10:41  shucharjer  阅读(34)  评论(0)    收藏  举报