C语言程序设计·
2021-12-28 08:19:01 1 举报
AI智能生成
C语言一到五章总结
作者其他创作
大纲/内容
程序设计与C语言
程序与程序设计语言
<font color="#f44336">程序语言的发展</font>
机器语言
优点:运行效率高
缺点:难学,难记,难修改
汇编语言
优点:容易理解,运行效率仅次于机器语言
缺点:分依赖于机器硬件可移植性不好,称为“低级语言”
高级语言
非结构化的语言
缺点:编程风格比较随意,没有编程规范可以遵循,程序中的流程可以随意跳转,变得难以阅读和维护。
结构化语言
所编制的程序结构清晰,易于阅读和维护。
面向对象的语言
开发应用程序变得更容易,耗时更少,效率更高
<font color="#f44336">程序设计语言的功能</font>
定义:程序设计语言必须具有数据表达(即变量定义)与数据处理的能力(即流程控制)
数据表达:通常每种程序设计语言中都是先定义了几种基本的数据类型,用来定义程序中所用到的数据
流程控制
<font color="#2196f3">顺序控制结构</font>
<font color="#2196f3">分支控制结构</font>
<font color="#f44336">共同特点</font>
只有单一的入口和单一的出口
结构中的每个部分都有被执行的可能
结构内不应出现永不终止的死循环
<font color="#2196f3">循环控制结构</font>
<font color="#f44336">程序的算法表示</font>
软件的主体是程序,程序的核心是算法。
算法的<font color="#f44336">特征</font>
<font color="#64b5f6">确定性:</font>算法的每条指令必须有明确的含义,不能有二义性,对于相同的输入必须得出相同的执行结果
<font color="#64b5f6">有穷性:</font>一个算法应包含有限个操作步骤
<font color="#64b5f6">可行性:</font>算法中指定的操作都可以通过已经实现的基本运算执行有限次后实现
<font color="#64b5f6">有零个或多个输出:</font>算法是用来处理数据对象的,在大多数情况下这些数据对象需要通过输入来得到。
<font color="#64b5f6">有一个或多个输出:</font>算法的目的是为了求解,解只有输出才能得到。
算法的<font color="#f44336">描述</font>
文字描述
流程图
伪代码
程序设计语言表示
C语言·程序·设计·的<font color="#f44336">特点</font>
C语言语句简洁紧凑,使用方便灵活
运算符丰富,表达能力强
C语言程序可移植性好
生成的目标代码质量高,运行效率高
语言处理能力强
C语言是一种结构化语言
C语言的编辑,编译,链接和运行
程序设计的任务
分析问题
设计算法
程序设计
运行并调试程序
分析程序运行结果
编写程序文档
顺序结构程序设计
引例
<font color="#9c27b0">C语言的语句</font>
<font color="#d32f2f">说明语句</font>
int a,b;
char ch;
<font color="#f44336">表达式语句</font>
<font color="#0097a7">c=a+b</font>是赋值语句
<font color="#0097a7">c=a+b;</font>则是一个表达式语句
表达式语句是由表达式加上分号组成:表达式1;
<font color="#d32f2f">分支语句</font>
分支语句实现分支控制过程,根据条件成立与否执行不同的语句
if 表达式1;
else 表达式2;
<font color="#d32f2f">循环语句</font>
<font color="#0097a7">for语句</font>
<font color="#0097a7">while语句</font>
<font color="#0097a7">do—while语句</font>
<font color="#d32f2f">转向语句</font>
<font color="#1b5e20">break语句:结束整个循环体</font>
goto语句
<font color="#1b5e20">continue语句:结束当前循环,进行下一次循环</font>
return语句:结束
<font color="#d32f2f">复合语句</font>
用一对大括号{}将若干语句顺序组合在一起所形成的语句称为复合语句
{sum=sum+i;i=i+2}
<font color="#d32f2f">空语句</font>
只有一个分号组成: ;
<font color="#d32f2f">函数的定义与调用</font>
函数是完成特定功能的小模块,常常再C程序中包含若干个函数,复杂的任务通过调用这些函数来完成
函数定义后,可以再别的函数中调用该函数
<font color="#d32f2f">输入与输出</font>
<font color="#0097a7">输入:scanf() 如果是2019年的版本请用scanf_s()输入语句</font>
输出:printf()
<font color="#7b1fa2">数据的输入和输出</font>
<font color="#b71c1c">输出函数和输入函数</font>
printf()函数
格式控制说明
普通字符:在输出数据时,需要原样输入的字符
注意事项
格式字符与输出项的类型要一一对应,不同类型的数据所使用的格式字符不同<br>
一般情况下格式字符与输出项的个数应相同
printf()函数中可以没有输出项,此时printf()函数只用来输出一个字符串;也可以有多个输出项,多个输出项之间使用逗号进行分隔。
若要在printf()函数中输出字符“%”,则应在格式控制字符串中连续两个“%”
scanf()或者scanf_s()函数
格式控制说明
普通字符:在输出数据时,需要原样输入的字符
注意事项
格式字符与输入项的类型个数要一一对应,输入项必须是地址,不能是变量名。
格式字符可以指定输入数据所占的列数,系统会截取相应列数的数据。
在输入数据时遇到以下情况则认为数据输入结束:空格,Tab建,回车键,非法输入,指定宽度。
<font color="#b71c1c">整型数据的输入和输出</font>
子主题
子主题
<font color="#b71c1c">实型数据的输入和输出</font>
<font color="#b71c1c">格式字符含义</font>
printf()
f 以小数形式输出单精度或双精度数
E,e 以指数形式输出单精度或双精度数。
g 以%f,%e中较短的宽度输出,输出单精度或双精度数
scanf()或者scanf_s()
E,e 以指数形式输入单精度数。
if 以小数形式输入双精度数。
le 以指数形式输入双精度数。
f 以小数形式输出单精度
说明
使用scanf()函数输入实型数据时不能指明精度
在输出实型数据时,还可以指定输出的精度
<font color="#b71c1c">字符型数据的输入和输出</font>
使用scanf()函数和printf()函数对字符型数据进行输入输出
使用getchar()函数和putchar()函数对字符型数据进行输入输出
getchar()
putchar()函数
说明
用getchar()函数得到的字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量,而直接采用作为putchar()函数的参数
可以在Printf函数中输出刚接收的字符
<font color="#d32f2f">数学库函数</font>
常用
<font color="#388e3c">指数函数exp(x)</font>:计算e^x。如exp(2.3)的值为9.974182
<font color="#388e3c">指数函数exp(x)</font>:计算e^x。如exp(2.3)的值为9.974182
<font color="#388e3c">以e为底的对数函数log(x)</font>:计算Inx。如log(123.45)的值为4.815836
<font color="#388e3c">幂函数pow(x,y)</font>:计算x^y。如pow(1,3,2)的值为1.69
<font color="#388e3c">平方根函数sqrt(x)</font>:计算√x。如sqrt(4.0)的值为2.0
循环结构程序设计
引例:人口
<font color="#1b5e20">#include<stdio.h><br>#include<math.h><br>int main()<br>{<br> int n = 13, year;<br> double number, rate = 0.02;<br> for(year=1;year<=10;year++)<br> {<br> number = n * pow((1 + rate), year);<br> printf("%2d年后,人数为%.2f亿\n", year, number);<br> }<br>}</font>
<font color="#9c27b0">使用for语句实现循环结构</font>
<font color="#f57f17">可以应用于计算型的循环</font>
<font color="#b71c1c">for(循环变量赋初值;循环条件;循环变量增量)<br>循环体语句;</font>
<font color="#1b5e20">示例:#include<stdio.h><br>int main()<br>{<br> int i, n, sum;<br> scanf_s("%d", &n);<br> sum = 0;<br> for (i = 1; i <= n; i++)<br> sum = sum + i;<br> printf("由1到%d的和是:%d\n", n, sum);<br>}</font>
<font color="#f57f17">示例结构:1:循环变量赋初值i=1<br><br>2:循环条件为i<=n<br><br>3:循环变量增量i++<br><br>4:循环体语句sum=sum+i</font>
<font color="#f57f17">for语句的一般形式中省略表达式1</font>
<font color="#b71c1c">格式:for(;表达式2;表达式3)<br><br>循环体语句</font>
<font color="#f57f17">for(i=1;i<=n;i++) <br><br> sum=sum+i;=1<br><br>等价于<br><br>i=1;<br><br>for(;i<=n;i++)<br><br>sum=sum+i;</font>
<font color="#f57f17">for语句的一般形式中省略表达式2</font>
<font color="#b71c1c">格式:for(表达式1;;表达式3)<br><br>循环体语句;</font>
<font color="#f44336">说明:省略表达式2时,表示不对循环进行控制,这时没有其他处理的话,会形成死循环。应避免这样使用for结构</font>
<font color="#f57f17">for语句的一般形式中省略表达式3</font>
<font color="#b71c1c">for(表达式1;表达式2;)<br><br>循环体语句</font>
<font color="#f44336">说明:省略表达式3时,可以在循环体语句加入修改循环变量的值和语句</font>
<font color="#f57f17">for(i=1;i<=n;i++)<br><br>factorial=fatorial*i;<br><br>等价于<br><br>for(i=1;i<=n)<br><br>{factorial=factorial*i;<br><br>i++;}</font>
<font color="#f57f17">for语句的一般形式中表达式1和表达式3也可以是逗号表达式</font><br>
<font color="#f57f17">sum=0<br><br>for(i=1;i<=n;i++) <br><br> sum=sum+i;<br><br>等价于<br><br>for(sum=0,i=1;i<=n;i++) <br><br> sum=sum+i;<br><br>表达式sum=0,i=1为逗号表达式</font>
<font color="#f57f17">for语句的一般形式中表达式2的只要非0,就执行循环体</font>
for(;ch=getchar()!='\n';)<br><br>printf("%c",ch)
<font color="#f57f17">for语句的一般形式中循环体语句可以省略</font>
<font color="#f57f17">for(i=1;i<=n;i++) <br><br> sum=sum+i;<br><br>等价于<br><br>for(i=1;i<=n; sum=sum+i;i++)<br><br>循环体语句sum+sum;放入表达式3中,与i++构成一个逗号表达式,此时循环体语句实际为一个空语句“;”</font>
<font color="#1b5e20">使用示例:#include<stdio.h><br>int main()<br>{<br> int i;<br> float x, max;<br> <br> for(i=1;i<=9;i++)<br> {<br> printf("请输入第%d个数:", i );<br> scanf_s("%f", &x);<br> if (i == 1)<br> max = x;<br> else<br> if (x > max)<br> max = x;<br> }<br> printf("10个数的最大值:%.0f", max);<br>}</font>
<font color="#7b1fa2">字符</font>
在for循环中,每次读入一个字符,根据字符的种类,选择不同的分支执行相应相应的运算。循环共执行10次,读入10个字符,相应的计数变量进行了计数
程序中使用字符输入函数getchar()读入字符,使用多分支if结构实现分支,用逻辑表达式判断字符的种类
<font color="#7b1fa2">使用while语句实现循环结构</font>
<font color="#ba68c8">while语句的基本语法</font>
形式:while(表达式)<br><br>循环体
子主题
<font color="#ba68c8">while循环使用示例</font>
<font color="#f57f17">#include<stdio.h><br>int main()<br>{<br> int i, sum;<br> i = 1, sum = 0;<br> while (i < 100)<br> {<br> sum = sum + i;<br> i = i + 1;<br> }<br> printf("sum=%d\n", sum);<br>}</font>
<font color="#7b1fa2">使用do-while语句实现循环结构</font>
<font color="#ba68c8">do-while语句的基本语法</font>
形式:do<br><br>循环体<br><br>while(表达式)
子主题
<font color="#ba68c8">do-while循环使用示例</font>
<font color="#f57f17">#include<stdio.h><br>int main()<br>{<br> int i, sum;<br> i = 1; sum = 0;<br> do<br> {<br> sum = sum + i;<br> i = i +1;<br> } while (i <= 100);<br> printf("sum=%d\n", sum);<br> return 0;<br>}</font>
<font color="#7b1fa2">改变循环语句的跳转语句</font>
<font color="#ba68c8">break语句</font>
<font color="#f44336">当break语句用于循环语句中时,可使程序终止循环而转去执行循环语句的后继语句。通常break语句总是于if语句一起配合使用,即满足条件时跳出循环。</font>
<font color="#f57f17">示例:#include<stdio.h><br>#include<math.h><br>int main()<br>{<br> int n, m, i;<br> printf("请输入一个正整数:");<br> scanf_s("%d", &n);<br> m = sqrt(n);<br> for (i = 2; i <= m; i++)<br> if (n % i == 0)<br> break;<br> if (i > m)<br> printf("%d是素数!\n", n);<br> else<br> printf("%d不是素数!\n", n);<br>}</font>
程序中结束for循环的条件有两个:一是i>m;二是break语句
若i>m,说明for循环正常结束,则n一定是素数
若遇到break语句,说明循环中条件n%i==0成立,n能被某个i整除,执行break语句推出循环,此时i<=m,n一定不是素数
<font color="#ba68c8">continue语句</font>
<font color="#f44336">continue语句的作用是跳过循环体continue后面的语句,继续下一个循环。continue语句只能用在循环语句中,常与if语句一起使用</font>
<font color="#f57f17">示例:#include<stdio.h><br>int main()<br>{<br> int n, s = 0;<br> n = 1;<br> while(n<10)<br> {<br> s = s + n;<br> if (s > 5)<br> break;<br> if (n % 2 == 1)<br> continue;<br> n++;<br> }<br> printf("s=%d,n=%d\n", s, n);<br>}</font>
<font color="#d32f2f">区别:continue语句只是结束本次循环,并不终止整个循环的执行;而break语句的作用是强制终止整个循环程序</font>
<font color="#ba68c8">goto语句</font>
<font color="#f44336">语句标号是一个有效的标识符,使用时在语句标号的后面跟一个“:”出现在函数中某语句的前面。程序执行到goto语句时,会控制跳转到该语句标号处,达到控制循环的目的。</font>
<font color="#f57f17">示例:#include<stdio.h><br>int main()<br>{<br> int i, sum;<br> i = 1; <br> sum = 0;<br>loop:if(i<=100)<br>{<br> sum = sum + i;<br> i = i + 1;<br> goto loop;<br>}printf("sum=%d\n", sum);<br>}</font>
<font color="#d32f2f">注意:语句标号必须与goto语句处于同一个函数中,通常goto语句与if语句连用实现循环控制。在大型程序中由于goto语句存在不合理的使用,会使程序结构变坏,所以在结构化程序设计中,不建议使用goto语句</font>
<font color="#7b1fa2">循环嵌套</font>
<font color="#b71c1c">使用for语句,while语句及do-while语句相互嵌套,构成的嵌套结构</font>有以下几种
<font color="#4caf50">for语句中嵌套for语句:for()<br><br>{...<br><br>for()<br><br>{...}<br><br>}</font>
<font color="#4caf50">for语句中嵌套while语句<br><br>for()<br><br>{...<br><br>while()<br><br>{...}<br><br>}</font>
<font color="#4caf50">while语句嵌套while语句<br><br>while()<br><br>{...<br><br>while()<br><br>{...}<br><br>...<br><br>}</font>
<font color="#4caf50">do-while语句中嵌套for语句<br><br>do<br><br>{...<br><br>for()<br><br>{...}<br><br>...<br><br>}while();</font>
<font color="#4caf50">(5)do-while语句嵌套do-while语句 (6)while语句嵌套do-while语句<br><br>do while()<br><br>{... {...<br><br>do do<br><br>{... {...<br><br>}while(); }while();<br><br>... ...<br><br>}while(); }</font>
<font color="#d32f2f">注意事项</font>
<font color="#f44336">外循环执行一次时,内循环要执行一轮。即外循环执行一次,内循环一直执行到条件不满足时为一轮;在执行外循环一次,内循环有一直执行到不满足时为第2轮;如此重复执行,直到外循环条件不满足时,整个循环嵌套结束</font>
<font color="#f44336">循环嵌套格式中的内外循环体不允许出现交叉,即外循环要完全包容内循环</font>
<font color="#f44336">循环嵌套时,内循环体中break语句和continue语句时,只影响包含他们的内循环,与外循环无关</font>
示例
<font color="#f57f17">九九乘法表:#include<stdio.h><br>int main()<br>{<br> int i,j;<br> for(i=1;i<=9;i++)<br> {<br> for (j = 1; j <= i; j++)<br> printf("%d*%d=%d\t", j, i, j * i);<br> printf("\n");<br> }<br>}</font>
<font color="#f57f17">100以内的素数:#include<stdio.h><br>#include<math.h><br>int main()<br>{<br> int i, n, k, count = 0;<br> n = 2;<br> while (n < 100)<br> {<br> k = sqrt(n);<br> for (i = 2; i <= k; i++)<br><br> {<br> if (n % i == 0)<br><br> {<br> break;<br> }<br> }<br><br> if (i > k)<br> {<br> printf("%4d", n);<br> if (++count % 10 == 0)<br><br><br> {<br> printf("\n");<br> }<br><br><br> }<br> n++;<br> }<br> return 0;<br>}</font>
<font color="#7b1fa2">典型的算法举例</font>
<font color="#f57c00">递推法</font>
<font color="#f57c00">迭代法</font>
<font color="#f57c00">穷举法</font>
<font color="#7b1fa2">循环程序设计示例</font>
<ol><li><font color="#f57c00">在所有三位整数中找出平方数中有连续的三位数是该数的本身的数。如250的平方是62500,250便是所要找的一个满足条件的三位整数:#include<stdio.h><br>int main()<br>{<br> int x, t;<br> printf("i\tpower\n");<br> for(x=100;x<1000;x++)<br> {<br> t = x * x;<br> while (t != 0)<br> {<br> if (x == t % 1000)<br> {<br> printf("%d\t%d\n", x, x * x);<br> break;<br> }<br> else<br> t = t / 10;<br> }<br> }<br>}</font></li></ol>
数据类型运算符和表达式
引例
C语言的<font color="#f44336">数据类型</font>
<font color="#64b5f6">基本类型</font>
整型
字符·型
实型(浮点型)
<font color="#64b5f6">构造类型</font>
数组类型
结构体类型
共用体
枚举类型
<font color="#64b5f6">指针类型</font>
<font color="#64b5f6">空类型</font>
C语言的<font color="#f44336">常量</font>
<font color="#4caf50">直接常量</font>
<font color="#0000ff">整型常量</font>
<font color="#0d47a1">实型常量</font>
浮点数
小数形式
指数形式
<font color="#0000ff">字符型常量</font>
常量
字符常量只能用单引号括起来,不能用双引号或其他括号
字符常量只能是单个字符,不能是字符串
字符可以是ASCII字符集中的任意字符
<font color="#0000ff">字符串常量</font>
字符串常量是由一对双引号“”括起来的零个或多个字符序列
字符串常量可以使用空格字符,转义字符和其他字符,也可以使用汉字和文字字符
注意:字符常量和字符串常量在内存中的储存情况是不同的
<font color="#4caf50">符号常量</font>
好处
<font color="#1b5e20">增加程序的可读性</font>:通过标识符就知道该常量的意思
<font color="#1b5e20">提高程序的可维护性</font>:通过符号常量使用修改常量很方便,只需在常量的定义修改即可
<font color="#1b5e20">简化程序代码</font>:通过符号常量可以简化复杂表达式的重复输入
<font color="#1b5e20">方便数组的定义</font>:可以将整型符号常量作为数组的长度
C语言的<font color="#f44336">变量</font>
<font color="#d32f2f">变量的定义的定义和使用</font>
变量的定义:在C语言中,所有的常量必须先定义后使用
变量的初始化:C语言允许在定义变量的同时对变量赋值,这个过程称为变量的初始化
变量的使用:使用变量时,应该先赋值后引用
<font color="#64b5f6">整型变量</font>
short int:短整型,2字节
int:整型,4字节
long int:长整型,4字节
unsigned short:无符号短整型,4字节
unsigned int:无符号整型,4字节
unsigned long:无符号长整型,4字节
<font color="#00bcd4">实型变量</font>
float:单精度型,4字节
bouble:双精度型,8字节
<font color="#00bcd4">字符型变量</font>
字符型变量的值是字符常量,即用单引号引起来的单个字符
字符常量在内存中只占用一个字节
C语言在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出
<font color="#f44336">运算符</font>和<font color="#f44336">表达式</font>
<font color="#f44336">赋值运算符和赋值表达式</font>
<font color="#1b5e20">简单赋值运算符</font>:最简单的赋值运算符就是‘=’,它的作用是将一个数值赋给一个变量
<font color="#1b5e20">复合赋值运算符</font>:在简单运算符前面加上算术运算符就构成复合赋值运算符:a+=x——a=a+(x)
<font color="#1b5e20">赋值表达式</font>
在C语言中,赋值语句属于表达式语句
<font color="#d32f2f">注意</font>:赋值运算符的左侧必须是一个变量
<font color="#d32f2f">算数运算符和算数表达式</font>
基本算数运算符
<font color="#1b5e20">%是求余运算符</font>
也包含加,减,乘,除等运算
自增,自减运算符
特殊运算符
++
<font color="#f44336">++x,是先计算,后使用,即先将x的值自加1,然后将x的值赋给变量a</font>
<font color="#f44336">x++,是先使用,后计算,即先将x的值赋给变量a,然后再将x的值自加1</font>
--:如上
<font color="#2196f3">注意</font>:自减和自增运算符的操作对象只能是一个简单变量,不能是常量或表达式,如6--和(a+b)++都是错误的
算数运算符的优先级和结合性
单目运算符的优先级高于双目运算符
<font color="#64b5f6">算术表达式</font>:算数运算符,运算对象和括号连接起来的式子,运算对象可以是常量,变量和函数等
<font color="#d32f2f">逗号运算符和逗号表达式</font>
形式:表达式1,表达式2,表达式3...
逗号表达式的<font color="#1976d2">执行顺序</font>是从左到右依次计算每个表达式的值,并把最后一个表达式的值作为整个逗号表达式的值
还有逗号运算符是双目运算符,其优先级最低是左结合的
<font color="#ffeb3b">并不是所有出现逗号的地方都是逗号表达式。如在变量说明语句中,以及函数参数表中逗号只是用于各变量之间的分隔符</font>
<font color="#d32f2f">求字节数运算符</font>
<font color="#d32f2f">sizeof</font>(表达式)
运算符sizeof用于计算数据类型所占的字节数, 是一个单目运算符优先级高于双目运算符
数据<font color="#f44336">类型转换</font>
<font color="#1b5e20">自动类型转换</font>:不同类型的数据在一起运算时,编译系统会自动进行类型转换
<font color="#1b5e20">强制类型转换</font>:强制类型转换是采用强制类型转换运算符将某种数据数据类型强制转换成指定的数据类型
强制类型转换的<font color="#ff0000">注意事项</font>
需强制类型转换中的表达式一定要括起来,否则只对紧随括号后的量进行类型转换。
强制类型转换是一种不安全的转换,如果是从高级类型转化为低级类型,则会损失数据的精度。
强制类型转换并不改变表达式中变量的类型和值
分支结构程序设计
引例
<font color="#b71c1c">#include<stdio.h><br>#include<math.h><br>int main()<br>{<br> int a, b, c;<br> float area;<br> double s;<br> printf("请输入三角形的三条边长:");<br> scanf_s("%d,%d,%d", &a, &b, &c);<br> s = (a + b + c) / 2.0;<br> if (a + b <= c || b + c <= a || a + c <= b) {<br> printf("不构成三角形/n");<br> }<br> else<br> {<br> area = sqrt(s * (s - a) * (s - b) * (s - c));<br> printf("三角形的面积是:%f\n", area);<br> }<br>}</font><br>
<font color="#7b1fa2">关系运算符,逻辑运算符,条件运算符</font>
<font color="#7b1fa2">关系运算符和表达式</font>
关系运算符:关系运算符是判断两个操作数的大小关系
<font color="#b71c1c">注意</font>
关系运算符都是双目运算符,其结合方向是左结合的
关系运算符的优先级低于算数运算符,但是高于赋值运算符
关系表达式
<font color="#b71c1c">注意事项</font>
注意区分运算符,=是赋值运算符,==是关系运算符
对实数进行相等判断可能得不到正确结果
关系运算符中可以出现赋值运算符
<font color="#7b1fa2">逻辑运算符和逻辑表达式</font>
<font color="#b71c1c">常用</font>的逻辑运算符
<font color="#d32f2f">!=:不等于</font>
<font color="#b71c1c">&&:并且</font>
<font color="#b71c1c">||:或者</font>
示例:<font color="#fbc02d">#include<stdio.h><br>int main()<br>{<br> int a = 3, b = 3, c = 2, d;<br> printf("%d,", !a && !b && c);<br> printf("%d,", !a || !b || c);<br> printf("%d\n", a >= b && b > c);<br> d = c-- || (b = 6) && a++;<br> printf("a=%d,b=%d,c=%d,d=%d\n", a, b, c, d);<br> return 0;<br>}</font><br>
逻辑表达式
逻辑表达式的结果也是一个逻辑值”真“或者”假“,即为”1“或者”0“
<font color="#7b1fa2">条件运算符和条件表达式</font>
条件运算符:条件运算符由“?”和“:”两个符合组成,用于一个三目运算符,需要三个操作数
条件表达式:表达式1?表达式2:表达式3 表达式1是否满足,:的意思为“或者”
<font color="#ff0000">示例:求两个数中较大的数(条件表达式):#include<stdio.h><br>int main()<br>{<br> int x, y;<br> printf("请输入两个整数:");<br> scanf_s("%d,%d", &x, &y);<br> printf("两个整数的最大数为:%d\n", x > y ? x : y);<br> return 0;<br>}<br></font><br>
<font color="#7b1fa2">使用if-else语句实现分支结构</font>
<font color="#7b1fa2">双分支if语句</font>
<font color="#1b5e20">形式:if(表达式)<br><br>语句1;<br><br>else<br><br>语句2;</font>
<font color="#1b5e20">示例:求两个数中较大的数(双分支if语句)#include<stdio.h><br>int main()<br>{<br> int a, b;<br> printf("请输入两个整数:");<br> scanf_s("%d%d", &a, &b);<br> if (a > b)<br> {<br> printf("两个整数中的最大数为:%d\n", a);<br> }<br> else<br> {<br> printf("两个整数中的最大数为:%d\n", b);<br> }<br>}<br></font><br>
<font color="#7b1fa2">单分支if语句</font>
<font color="#b71c1c">形式:if(表达式)<br><br> 语句;</font>
<font color="#b71c1c">示例:输入一个数,输出该数的绝对值:#include<stdio.h><br>int main()<br>{<br> float x;<br> scanf_s("%f", &x);<br> if(x<0)<br> {<br> x = -x;<br> }<br> printf("%f", x);<br>}</font>
<font color="#7b1fa2">if语句的嵌套</font>
<font color="#f57f17">if(表达式1)<br><br>if(表达式2)<br><br>语句1;<br><br>else<br><br>语句2;<br><br>else<br><br>if(表达式3)<br><br>语句3;<br><br>else<br><br>语句4;</font>
<font color="#f57f17">示例:输入3个任意整数,输出其最大值:#include<stdio.h><br>int main()<br>{<br> int a, b, c, max;<br> scanf_s("%d%d%d", &a, &b, &c);<br> if (a > b)<br> {<br> if (a > c)<br> max = a;<br> else<br> max = c;<br> }<br> else<br> {<br> if (b > c)<br> max = b;<br> else<br> max = c;<br> }<br> printf("max=%d\n", max);<br> return 0;<br>}</font><br><br>
流程图表示:
<font color="#7b1fa2">多分支if语句</font>
<font color="#0d47a1">形式:if(表达式1)<br><br>语句1;<br><br>else if(表达式2)<br><br>语句2;<br><br>.......<br><br>else if(表达式n-1)<br><br>语句n-1<br><br>else<br><br>语句n;</font>
<font color="#0d47a1">示例;输入x的值,按分段函数计算并输出y的值:#include<stdio.h><br>#include<math.h><br>int main()<br>{<br> float x, y;<br> printf("输入x的值:");<br> scanf_s("%f", &x);<br> if (x < 2)<br> {<br> y = 2 * x;<br> }<br> else if(x<=10)<br> {<br> y = 7 - 3 * x;<br> }<br> else<br> {<br> y = 1 - cos(x);<br> }<br> printf("y=%0.6f\n", y);<br> return 0;<br>}</font><br><br>
流程图表示:
<font color="#7b1fa2">使用switch语句实现分支结构</font>
<font color="#f57f17">形式:switch(表达式)<br><br>{case常量表达式1:语句1;break;<br><br>case常量表达式2:语句2;break;<br><br>...<br><br>case常量表达式n:语句n;break;<br><br>default:语句n+1;break;</font>
流程图表示
<font color="#f57f17">示例:输入年份,月份,输出该月份的日数:#include<stdio.h><br>int main()<br>{<br> int year, month, days;<br> printf("请输入年,月:");<br> scanf_s("%d,%d", &year, &month);<br> switch (month)<br> {<br> case 1:<br> case 3:<br> case 5:<br> case 7:<br> case 8:<br> case 10:<br> case 12:<br> days = 31;<br> break;<br> case 4:<br> case 6:<br> case 9:<br> case 11:<br> days = 30;<br> break;<br> case 2:<br> if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0)<br> days = 29;<br> else<br> days = 28;<br> break;<br> }<br> printf("%d年%d月的天数是%d天\n", year, month, days);<br>}<br></font><br>
<font color="#9c27b0">分支结构程序设计示例</font>
<font color="#9c27b0">判断闰年平年:#include<stdio.h><br><br>int main()<br>{<br> int year, leap;<br> printf("输入年份:");<br> scanf_s("%d", &year);<br> if ((year % 4 == 0 && year && year % 100 != 0) || (year % 400 == 0))<br> leap = 1;<br> else<br> leap = 0;<br> if (leap)<br> printf("%d是闰年\n", year);<br> else<br> printf("%d不是闰年\n", year);</font><br>}<br>
解释:leap=1是闰年,leap=0是平年
自由主题
0 条评论
下一页