ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

《C Primer Plus(第6版)中文版》 第7章 C控制语句:分支和跳转

2021-01-18 23:57:03  阅读:163  来源: 互联网

标签:语句 字符 else break Plus 跳转 求值 Primer expression


对标题和序号有稍加修改。

7.1 if语句

if语句称为分支语句(branching statement)或选择语句(selection statement)。格式:

if (expression)
	statement
  • expression是关系表达式,为真就执行statement,否则跳过statement
  • statement可以是简单语句或复合语句。

示例程序:

#include<stdio.h>
int main(void)
{
	int a,b;

	printf("Please enter two integers:\n");
	scanf("%d %d",&a,&b);
	if (a>b)
		printf("a is greater than b.\n");
	if (a<b)
		printf("a is less than b.\n");
	if (a==b)
		printf("a equals b.\n");
	
	return 0;
}

输出结果:

Please enter two integers:
5 6
a is less than b.

7.2 if else语句

通用形式:

if  (expression)
	statement1
else
	statement2

expression为真执行statement1,否则执行statement2。示例:

7.2.1 多重选择 else if

通用形式:

if (expression1)
	statement1
else if (expression2)
	statement2
else
	statement3

如果expression1为真执行statement1,如果expression2为真执行statement2,否则执行statement3。C99要求编译器至少支持127层嵌套。

7.2.2 if与else匹配

else永远与最近的if匹配,除非最近的if被{},就与最近的有{}if匹配。

7.2.3 求素数程序

#include<stdio.h>
#include<stdbool.h>
int main(void)
{
	int num,i;	/*分别存储待输入的数以及可能的约数*/
	bool isPrime;/*标记变量*/

	printf("Please enter an integer(q to quit):\n");
	while (scanf("%d",&num)!=0)
	{
		for (i=2,isPrime=true; (i*i)<=num; i++)
			if (num%i==0)
				isPrime=false;
		if (isPrime)
			printf("%d is a prime.\n",num);
		else
			printf("%d is not a prime.\n",num);
		
		printf("Now enter the next number(q to quit):\n");
	}
	printf("Done!\n");
	
	return 0;
}

输出结果:

Please enter an integer(q to quit):
5
5 is a prime.
Now enter the next number(q to quit):
9
9 is not a prime.
Now enter the next number(q to quit):
q
Done!

7.3 getchar()和putchar()

getchar()无参数,返回输入队列中下一个字符。putchar()打印其参数。

示例程序:

#include<stdio.h>
int main(void)
{
	char ch;

	while ((ch=getchar())!='#')
		putchar(ch);
	putchar('\n');
	
	return 0;
}

输出结果:

adwa125&#
adwa125&

7.3.1 ctype.h的字符函数

ctype.h中的函数接收一个字符为参数。

字符测试函数

函数名如果是下列参数,返回值为真
isalnum()字母或数字
isalpha()字母
isblank()标准的空白字符或任何本地化指定为空白的字符
iscntrl()控制字符,如Ctrl+B
isdigit()数字
isgraph()除空格之外的任意可打印字符
islower()小写字母
isprint()可打印字符
ispunct()标点符号(除空格或字母数字以外的任何可打印字符)
isspace()空白字符(空格、换行符、换页符、回车符、垂直制表符、水平制表符或其他本地化字符)
isupper()大写字母
isxdigit()十六进制数字

字符映射函数

此类函数不会修改原始参数。

函数名行为
tolower()如果参数是大写字符,该函数返回小写字符;否则,返回原始参数
toupper()如果参数是小写字符,该函数返回大写字符;否则,返回原始参数

7.4 逻辑运算符

逻辑运算符两侧表达式均为真,整个表达式才为真。其求值顺序都是从左往右,一旦左侧表达式求值会让整个表达式求值无效便停止求值。

逻辑运算符含义iso646.h备选拼写
&&and
||or
!not

7.5 条件运算符 ?:

条件表达式(conditional expression)用?:运算符和运算对象组成,?:是三元运算符。形式:expression1 ? expression2 : expression3。如果expression1为真,整个表达式值与expression2的值相同,否则与expression3的值相同。

7.6 continue和break

7.6.1 continue语句

3中循环都可以使用continue语句。执行到该语句时会跳过本次迭代的剩余部分,并开始新的迭代。
continue只会影响包含它的循环。

while循环中continue语句的下一个行为是对表达式求值,for循环中下一个行为是更新变量再对表达式求值,do while循环中对出口条件求值后再进入新的迭代。

7.6.2 break语句

执行break语句后,程序会终止包含它的循环并继续执行之后的语句。break只会影响包含它的循环。for循环中执行完break语句会跳过更新部分。

7.7 switch语句

通用形式:

switch(expression)
{
	case lable1:statement1;break;
	case lable2:statement2;break;
	...
	default:statementN;break;//可选标签
}
  • expressionlable部分必须是整数值。
  • 根据expression值跳转到相应的lable语句。
  • case标签不能用变量。
  • 没有与expression值匹配的标签就执行default的语句,没有default就执行switch后的语句。
  • break语句跳出switch。

7.7.1 多重标签

示例程序:

#include<stdio.h>
int main(void)
{
    switch (getchar())
    {
        case 'a':
        case 'A':printf("a or A\n");break;
        
        case 'b':
        case 'B':printf("b or B\n");break;
        
        default:break;
    }

    return 0;
}

输出结果:

B
b or B

标签:语句,字符,else,break,Plus,跳转,求值,Primer,expression
来源: https://blog.csdn.net/weixin_44624188/article/details/112797622

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有