ICode9

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

C语言学习记录第二章(个人记录)

2021-10-16 18:02:38  阅读:120  来源: 互联网

标签:语句 第二章 记录 switch else while 循环 C语言 表达式


学习编程 书看了之后还需要多练!

目录

语句与程序块

if-else

else-if语句

关于else-if最后的else部分

switch语句

while循环与for循环

while循环:

for循环:

关于Shell排序算法

逗号运算符

do-while循环

break语句与continue语句

break语句

continue语句

goto语句与标点


​​​​​​​

语句与程序块

C语言中,分号是语句结束符,但是Pascal等语言却把分号用作语句之间的分隔符;

用大括号“{”与“}”把一组声明和语句括在一起就构成了一个复合语句(程序块),复合语句在语法上等价于单条语句。


if-else

if(表达式)
    语句1
else
    语句2

并不一定需要else,可根据具体情况选择;

执行时,先计算表达式的值,如果计算的值为真(即为非0),则执行语句1;如果计算的值为假,并含有else部分,则执行语句2;

if(表达式)

可代替

if( 表达式 !=0 )

每个else与最近的前一个没有else配对的if继续配对。

if( a == 0 )
    if( a>b )
        z=a;
else
    z=b;    // 即使用这种方式提醒else也无法与第一个if配对。

else-if语句

if(表达式)
        语句
else if(表达式)
        语句
else if(表达式)
        语句
else if(表达式)
        语句
else
        语句

其中的各表达式依次求值,一旦某个表达式结果为真,则执行与之相关的语句,且终止整个语句序列的执行。(其中即可以是单条语句,也可以是复合语句)

关于else-if最后的else部分

  1. 用于处理“上述条件不成立”的情况或默认情况,也就是前面都不满足的情形;
  2. 有时不需要针对默认情况执行显式的操作,这种情况下,可以把该结构末尾的else部分省略;
  3. 末尾的else部分也可以用来检查错误,以捕获“不可能”条件。⚠️

在每一步判断x小于、大于还是等于中间元素v[mid] ,使用else-if结构执行这种判定很自然。


switch语句

switch属于一条多路判定语句,测试表达式是否与一些常量整数值中的某一个值匹配,并执行相应的分支动作

switch(表达式){
    case:常量表达式:语句序列

    case:常量表达式:语句序列

    default:语句序列

}

 每一个分支都由一个或多个整数值常量或常量表达式标记。

如果没有哪一分支匹配表达式,则执行default的分支;

default是可以选择用与不用,如果既没有default分支 又 没有其他分支与表达式的值匹配,则该switch不执行任何动作。

各分支及default分支的排列次序是任意的。

在switch语句中,case的作用只是一个标号,所以,某个分支中的代码执行完后,程序将进入下一分支继续执行,除非在程序中显式地跳转。最常用的跳出switch语句是使用 break语句 与 return语句。

⚠️注意,从一个分支直接进入下一个分支执行的做法并不健全,这样做在程序修改是很容易出错。

除一个计算需要多个标号的情况外,应尽量减少一个分支直接进入下一个分支执行,这种用法在不得不使用的情况下,应该加上适当的程序注释

switch(表达式){

        case 常量表达式:
        case 常量表达式:

        ...    

        break;
}                //我理解的一个计算需要多个标号

 作为一种良好的程序设计风格,在switch语句最后一个分支(即default分支)的后面也加上一个break语句。


while循环与for循环

while循环:

while(表达式)
        语句

首先求表达式的值,如果其值为真非0,则执行语句,并再次求该表达式的值;直到该表达式的值为假(0)为止,随后继续执行语句后面的部分; 

for循环:

for(表达式1;表达式2;表达式3)
    语句


等价于


表达式1;
while(表达式2){
        语句

        表达式3;
}

⚠️当while循环或for循环语句中包含continue语句时,上述二者就不一定等价了。

常见情况:表达式1与表达式3是赋值表达式或函数调用,表达式2是关系表达式。

3个组成部分中的任何部分都可以省略,但分号要保留。

如果在for循环中省略表达式1与表达式3,就退化成了while循环语句。如果省略测试条件,即表达式2,则认为其值永远是真值。

for(;;){
    ...
}        //“无限”循环语句

这种语句需要借助其他手段(如break语句或return语句)才能终止。

当程序中没有初始化或重新初始化的操作,所以使用while循环语句更加自然一些。

当需要执行简单的初始化和变量递增,使用for语句更适合一点,它将循环控制语句集中放在循环的开头,结构更紧凑、更清晰。

for语句的各组成部分可以是任意表达式,所以for语句并不限于通过算术级数进行循环控制。⚠️但是,牵强地把一些无关的计算放到for语句的初始化和变量递增部分是一种不好的程序设计风格,该部分放置控制运算更合适。

关于Shell排序算法

基本思想:先比较距离远的元素,而不是像简单交换排序算法那样先比较相邻的元素。这样可以快速减少大量的无序情况,从而减轻后续工作。被比较的元素之间的距离逐步减小,直到减小到1,这时排序变成了相邻元素的互换。

算术级数:与等差数列相应的级数称为等差级数,又称算术级数.

逗号运算符

C语言中优先级最低的运算符,被逗号分隔的一对表达式将按照从左到右的顺序进行求值,各表达式右边的操作数的类型和值即为其结果的类型和值。

在for循环语句中,可以将多个表达式放在各个语句充分中,比如同时处理两个循环控制变量;

reverse函数:reverse函数可以反转一个字符串

#include<bits/stdc++.h>
using namespace std;
int main(){
    string str;
    str = "Hello,world!";
    reverse(str.begin(),str.end());
    cout<<str;
    return 0;
}

结果为:

!dlrow,olleH

逗号运算符还适用于reverse函数中元素的交换,这样,元素的交换过程便可以看成是一个单步操作。


do-while循环

循环体至少被执行一次

do
    语句
while(表达式);

先执行循环体中的语句部分,然后再求表达式的值。如果表达式的值为真,则再次执行语句,依此类推;当表达式的值为假,则循环终止。

do- while循环比while循环和for循环用得少得多。


break语句与continue语句

break语句

break语句可用于for、while与do- while等循环中提前退出,就如同从switch语句中提前退出一样。break语句能使程序从switch语句或最内层循环中立即跳出。

strlen函数返回字符串的长度;

continue语句

continue语句用于使for、while或do-while语句开始下一次循环的执行。在while与do- while语句中,continue语句的执行意味着立即执行测试部分;在for循环中,则意味着使控制转移到递增循环变量部分。continue语句只用于循环语句,不用于switch语句。某个循环包含的switch语句中的continue语句,将导致进入下一次循环。


goto语句与标点

最常见的用法是终止程序在某些深度嵌套的结构中的处理过程,例如一次跳出两层或多层循环。

标号的命名同变量命名的形式相同,标号的后面要紧跟一个冒号。标号可以位于对应的goto语句所在函数的任何语句的前面。标号的作用域是整个函数

用法如下:

int main()
{
	int n=7;  
number2:
	printf("hello world\n"); 
	if (n==7)
	{ 
		n=8;
		printf("n=7 start\n");
		goto number0;
		printf("n=7 end\n");
	}
	else
	{
		printf("n=8 start\n");
		goto number1;
		printf("n=8 end\n");
	}  
 
number0: 
	printf("hi number0\n");
	goto number2;
number1:
	printf("hi number1\n");
number3:
	printf("number3\n"); 
	system("pause");
	return 0;
} 

根据goto语句的跳到相应的地方。

大多数情况下,使用goto语句的程序段比不使用goto语句的程序段要难以理解和维护

标签:语句,第二章,记录,switch,else,while,循环,C语言,表达式
来源: https://blog.csdn.net/weixin_60154963/article/details/120794153

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

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

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

ICode9版权所有