C语言网络笔记转的修改Word格式.docx
- 文档编号:20085224
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:75
- 大小:61.59KB
C语言网络笔记转的修改Word格式.docx
《C语言网络笔记转的修改Word格式.docx》由会员分享,可在线阅读,更多相关《C语言网络笔记转的修改Word格式.docx(75页珍藏版)》请在冰豆网上搜索。
if(表达式1)
if(表达式2)
if(表达式3)
语句3;
.
语句n;
条件语句可以嵌套,这种情况经常碰到,但条件嵌套语句容易出错,其原因主要是不知道哪个if对应哪个else。
例如:
if(x>
20||x<
-10)
if(y<
=100&
&
y>
x)
printf(Good);
printf(Bad);
对于上述情况,
Turbo
C2.0规定:
else语句与最近的一个if语句匹配,
上例中的else与if(y<
y>
x)相匹配。
为了使else与if(x>
-10)相匹配,
必须用花括号。
如下所示:
最好用花括号!
!
-10)
{
}
例如求绝对值的功能在C的库里面就有。
看下面的:
y=fabs(x);
/*求x的绝对值,然后赋值给y*/
求开方sqrt(),求指数幂exp()等等,这些与数学方面有关的函数都在math.h里面。
四、switch--case语句
在编写程序时,
经常会碰到按不同情况分转的多路问题,
这时可用嵌套if
-else-if语句来实现,
但if-else-if语句使用不方便,
并且容易出错。
对这种情况,
C2.0提供了一个开关语句。
开关语句格式为:
switch(变量)
case
常量1:
语句1或空;
常量2:
语句2或空;
常量n:
语句n或空;
default:
语句n+1或空;
执行switch开关语句时,将变量逐个与case后的常量进行比较,若与其中一个相等,则执行该常量下的语句,若不与任何一个常量相等,则执行default后面的语句。
注意:
1.switch中变量可以是数值,也可以是字符,但必须是整数。
2.可以省略一些case和default。
3.每个case或default后的语句可以是语句体,但不需要使用{和}括起来。
例如:
main()
{
int
x,y;
scanf(%d,&
x);
switch(x)
1:
y=x+1;
break;
/*退出开关语句,遇到break才退出*/
4:
y=2*x+1;
y=x--;
}
printf(%d\n,y);
从上面的例子可以看出,用开关语句编的程序一定可以用if语句做。
那么在什么情况下需要用switch语句呢?
一般在出现比较整的情况下或者能转化成比较整数的情况下使用。
看下面的例子:
例子:
一个学生的成绩分成五等,超过90分的为'
A'
,80-89的为'
B'
,70-79为'
C'
,60-69为'
D'
,60分以下为'
E'
。
现在输入一个学生的成绩,输出他的等级。
(1).用if语句
省略
(2).用switch语句
num;
char
grade;
num);
num/=10;
switch(num)
10:
(冒号)
9:
grade='
;
8:
7:
6:
(可以省略的)
printf(%c,grade);
说明一点,并不是每个case里面有都语句,有时侯里面是空的,就好象这一题。
switch语句执行的顺序是从第一case判断,如果正确就往下执行,直到break;
如果不正确,就执行下一个case。
所以在这里,当成绩是100分时,执行case
然后往下执行,grade='
退出。
(妙)
想想看,这里为什么要用num/=10;
?
假设当程序中有浮点数时怎么办呢?
(七)循环语句和循环控制
一、循环语句
(一)、for循环
它的一般形式为:
for(<
初始化>
<
条件表达式>
增量>
)
(1).
For与while之间的选择是:
当已知循环的结束点,用for
否则用while.
(2).for循环中的初始化、条件表达式和增量都是选择项,即可以缺省,但;
不能缺省。
省略了初始化,表示不对循环控制变量赋初值。
省略了条件表达式,则不做其它处理时便成为死循环。
(3).for循环可以有多层嵌套。
(二)、while循环
while(条件)
语句;
while循环表示当条件为真时,便执行语句。
直到条件为假才结束循环。
并继续执行循环程序外的后续语句。
#include
stdio.h
main()
c;
c='
\0'
/*初始化c*/
while(c!
='
\n'
)
/*回车结束循环*/
c=getche();
/*带回显的从键盘接收字符*/
(1).在while循环体内也允许空语句。
while((c=getche())!
);
这个循环直到键入回车为止。
(2).可以有多层循环嵌套。
(3).语句可以是语句体,
此时必须用{和}括起来。
用while循环求1+2+……+100的和:
sn=0,i=0;
while(++i<
=100)
sn+=i;
/*求1+2+……+100*/
printf(%d\n,sn);
(三)、do--while循环
它的一般格式为:
do
语句块;
while(条件);
(do…while需要“;
”)
二、循环控制
(一)、break语句
当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起。
即满足条件时便跳出循环。
sn=0,i;
for(i=1;
i<
=100;
i++)
if(i==51)
/*如果i等于51,则跳出循环*/
/*1+2+……+50*/
可以看出,最终的结果是1+2+……+50。
因为在i等于51的时候,就跳出循环了。
1.
break语句对if-else的条件语句不起作用。
2.
在多层循环中,一个break语句只向外跳一层。
(二)、continue语句
continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。
continue语句只用在for、while、do-while等循环体中,
常与if条件语句一起使用,用来加速循环。
(三)、goto语句
goto语句是一种无条件转移语句,与BASIC中的goto语句相似。
goto语句的使用格式为:
goto
标号;
其中标号是Turbo
C
2.0中一个有效的标识符,这个标识符加上一个:
一起出现在函数内某处,执行goto语句后,程序将跳转到该标号处并执行其后的语句。
标号既然是一个标识符,也就要满足标识符的命名规则。
另外标号必须与goto语句同处于一个函数中,但可以不在一个循环层中。
通常goto语句与if条件语句连用,当满足某一条件时,程序跳到标号处运行。
goto语句通常不用,主要因为它将使程序层次不清,且不易读,但在多层嵌套退出时,用goto语句则比较合理。
Goto语句一般很少用,而且很不好用
loop;
loop:
可以看出,这儿的goto语句和break作用很类似。
这儿的loop:
也可以写成loop:
/*如果i等于51,则跳出本次循环*/
/*1+2+……+50+52+……+100*/
可以看出这儿的loop语句和continue的作用类似。
但是某些情况下又必须使用goto语句,否则会让程序大大臃肿。
如:
i,j,k;
printf(i
j
k\n);
for(i=0;
2;
for(j=0;
j<
3;
j++)
for(k=0;
k<
k++)
if(k==2)
printf(%d
%d
%d\n,i,j,k);
输出结果为:
i
k
0
1
如果不使用goto语句,而使用break,continue语句,应该这样
j\n);
所以在同时跳出多层循环时,应该使用goto语句。
记住,所有的goto语句其实都是可以用break,continue代替的。
下面举几个例子:
1.求两个整数的最大公约数。
例如10和15的最大公约数是5。
分析:
最大公约数一定小于等于最小的那个数一半,同时能被两数整除。
妙解
num1,num2,i,min;
scanf(%d%d,&
num1,&
num2);
min=num1<
num2?
num1:
num2;
/*得到最小值*/
for(i=min/2;
i>
0;
i--)
if(num1%i==0&
num2%i==0)
printf(最大公约数为%d\n,i);
3.判断一个整数是不是素数(素数就是只能被本身和1整除的数)。
flag=0;
/*标志变量复位*/
if(num%i==0)
flag=1;
if(flag==0)
printf(是素数\n);
printf(不是素数\n);
(八)数组
数组,顾名思义就是一组同类型的数。
四、字符数组
Care:
字符数组的‘h’
array[5]={72,69,76,76,79};
/*用对应的ASCII码*/
举几个例子:
1.很不错的题目:
输入10个整数存入数组中,然后把它们从小到大排列并放在同一数组中。
(思路:
先找出最小的,放在第一个位置,为了防止把原先的数覆盖掉,可以把原先的第一个数和最小数的位置互换)。
array[10];
i,j,min,stmp;
10;
i++)
array[i]);
9;
min=array[i];
for(j=i+1;
if(min>
array[j])
/*里面的4行语句很重要*/
min=array[j];
stmp=array[i];
array[i]=array[j];
array[j]=stmp;
array[i]);
printf(\n);
分析:
先让第一个值作为基准,如果后面有比它小的,那么就把这两个数互换一下,同时把基准换成小的值。
两个数互换应该这样(stmp=a;
a=b;
b=stmp;
),而不是(a=b;
b=a;
),想想这是为什么?
必须要用一个变量作为桥梁。
这种一个一个的把最小的放在前面的排序方法,我们形象的叫做冒泡法。
冒泡法:
#include<
stdio.h>
ma
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 网络 笔记 修改
![提示](https://static.bdocx.com/images/bang_tan.gif)