C语言复习资料之15章Word格式.docx
- 文档编号:22187766
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:15
- 大小:36.48KB
C语言复习资料之15章Word格式.docx
《C语言复习资料之15章Word格式.docx》由会员分享,可在线阅读,更多相关《C语言复习资料之15章Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
必须先定义后使用
常变量:
constinta=3;
//表示整型变量a的值为3,且不能改变
标识符:
只能有字母、数字和下划线这三种字符组成,且第一个字符必须为字母或下划线。
数据类型:
见P43图3.4
在存放整数的存储单元中,最左面一位是用来表示符号的,0表示正,1表示负。
基本算术运算符:
P52表3.5
注意:
%的运算对象必须为整数,结果也是整数
3.运算符自增自减运算符(只适用于变量):
++i,--i(在使用i前,先使i加(减)1)i++,i--(在使用i之后,先使i加(减)1)
各种运算符间的结合性见P378.
(double)a//将a转换成double类型
强制类型转换:
(int)(x+y)//将x+y的值转换成int型(类型名)(表达(float)(5%3)//将5%3的值转换成float型式)
4.数据的输入输出:
(P65)例3.5:
math.h>
//程序中需要调用平方根函数Sqrt
{doublea,b,c,disc,x1,x2,p,q;
//定义为双精度浮点型变量
scanf(“%lf%lf%lf”,&
a,&
b,&
c);
//输入a,b,c的值,注意不能漏掉&
disc=b*b-4*a*c;
p=-b/(2.0*a);
q=sqrt(disc)/(2.0*a);
x1=p+q;
x2=p-q;
printf(“x1=%7.2f\nx2=%7.2f\n”,x1,x2);
//输出
析:
黄色字体部分表示对输出格式的声明,7列,其中小数部分占2列。
另:
在7.2f前加负号,表示输出数据向左对齐。
常用的输入输出函数:
putchar(输出字符)、getchar(输入字符)、printf(格式输出)、scanf(格式输入)、puts(输入字符串)、gets(输出字符串)。
其中scanf不能输入空格符,get(gets)一次只能输入一个字符(字符串)。
printf常用的输出格式:
见P74.
用scanf输入时不要忘记地址符(&
)。
第四章
1.选择结构
(P88)例4.3:
//double型变量必须用“%lf”格式声明
if(disc<
0)//选择结构
printf(“thisequationhasn’trealroots\n”);
else
{p=-b/(2.0*a);
//输出时用“%f”即可
if...else...后都只能执行“一条”语句。
如果有多条语句需要执行,必须用{}括起来。
if后可以没有else,但else前必须要有if。
if语句的一般形式:
(1)if(表达式)语句1(没有else字句部分)
(2)if(表达式)(有else字句部分)
语句1
else
语句2
(3)if(表达式1)语句1(在else部分嵌套多层if语句)elseif(表达式2)语句2
elseif(表达式3)语句3
……
elseif(表达式m)语句m
else语句m+1
例4.3:
{floata,b,c,t;
//定义为单精度浮点型变量
scanf(“%f,%f,%f”,&
//输入数据时用逗号隔开
if(a>
b)
{t=a;
a=b;
b=t;
c)
a=c;
c=t;
if(b>
c)这是三个独立的选择语句
{t=b;
b=c;
printf(“%5.2f,%5.2f,%5.2f\n”,a,b,c);
嵌套:
if(number>
500)
cost=0.15;
if(number>
300)//在if语句的else部分内嵌了一个if语句
cost=0.10;
100)//在内嵌的if语句的else部分又内嵌了一个if语句
cost=0.075;
50)//在第2层内嵌的if语句的else部分又内嵌了一个if语句
cost=0.05;
else//第三层的if语句中的else子句
cost=0;
2.关系表达式:
(1)关系表达式中如:
“a>
b”、“a<
b”等的值只有两种情况:
1表示真,0表示假。
(2)“&
&
”:
逻辑与(同时真才为真)
“||”:
逻辑或(同时假才为假)
“!
逻辑非
如:
a=score>
=60中,a的值只能是0或1。
(year%4==0&
year%100!
=0)||year%400==0。
3.条件运算符(惟一的三目运算符):
max=(a>
b)?
a:
b;
等价于if(a>
b)max=a;
elsemax=b;
4.switch语句
(P102)例4.6:
{chargrade;
scanf(“%c”,&
grade);
printf(“youscore:
”);
switch(grade)
{case’A’:
printf(“85~100\n”);
break;
//程序执行到break语句,将跳过整个switch
case’B’:
printf(“70~84\n”);
语句
case’C’:
printf(“60~69\n”);
case’D’:
printf(“<
60\n”);
default:
printf(“enterdataerror\n”);
switch语句中,判断仅执行一次,如果没有break语句,程序将继续执行下面的语句而不进行判断。
可以多个case字句共用一组执行语句:
case’A’:
case’B’:
case’C’:
printf(“>
(P105)例4.8:
{intyear,leap;
printf(“enteryear:
scanf(“&
d”,year);
if(year%4==0)
{if(year%100==0)
{if(year%400==0)
leap=1;
leap=0;
}这是程序的判断部分,嵌套部分已用颜色区分
leap=1;
else
leap=0;
if(leap)
printf(“%dis“,year);
printf(“%disnot“,year);
printf(“aleapyear\n”);
第五章
1.可以实现循环的语句:
(1)while(循环条件)
{循环体}
(2)do
{循环体)
while(循环条件);
(3)for(初始条件;
循环条件;
自增或自减)
{循环体}
(P115)例5.1:
{
inti=1,sum=0;
//定义变量并赋初值
while(i<
=100)//满足i<
=100时执行循环体
{sum=sum+i;
i++;
循环体,累加求和
printf(“sum=%d\n”,sum);
不要忘记使i执行自增运算,否则造成死循环。
(P117)例5.2:
do
循环体
}while(i<
=100);
//满足i<
=100时继续执行循环体,有;
for语句;
for(;
i<
=100;
i++)
//循环体
}
以上三个程序作用均相同。
其中while是先判断后执行,do...while...是先执行后判断。
for语句最灵活,使用更多。
for语句一般形式:
for(表达式1;
表达式2;
表达式3)
表达式1是用来设置初始条件,只执行一次。
表达式2是循环条件表达式。
表达式3作为循环的调整,例如自增自减。
执行过程:
表达式1->
表达式2->
语句->
表达式3
“表达式1”可以省略,但应在for语句前给变量赋初值。
i=1;
“表达式2”可以省略,循环不自动结束。
for(i=1;
;
i++)sum=sum+i;
相当于:
while
(1)
i++;
“表达式3”可以省略,但应在语句中设法保证循环正常结束。
)
“表达式1”,“表达式2”,“表达式3”可以同时省略。
if(i>
100)break;
显然并不实用。
表达式1和表达式3可以有一个以上的简单表达式,中间用逗号隔开。
for(i=0,j=100;
=j;
i++,j--)
sun=sum+i;
逗号表达式内按自左至右的顺序求解。
for(i=0;
i++,i++)
等价于
i=i+2)
表达式2可以是关系表达式、逻辑表达式、数值表达式、字符表达式。
只要其值非0,就执行循环体。
(具体请参考P121-P124.)
2.循环的嵌套:
(1)while()
{...
while()
{...}内层循环
{...}内层循环
while();
}while();
(3)for(;
{
for(;
三种循环可以混合使用。
循环的嵌套建议使用for语句。
3.改变循环状态:
例5.4:
#definesum100000//指定符号常量sum代表100000
floatamount,aver,total;
//定义浮点型变量
inti;
for(i=1,total=0;
=1000;
i++)//循环开始
printf(“pleaseenteramount:
scanf(“%f”,&
amount);
total=total+amount;
//累加求和
if(total>
=sum)break;
//满足条件,提前终止整个循环
aver=total/i;
printf(“num=%d\naver=%10.2f\n”,i,aver);
break语句的作用是提前终止循环。
例5.5:
{intn;
for(n=100;
n<
=200;
n++)//循环开始
{if(n%3==0)continue;
//满足条件,提前终止本次循环
printf(“%d”,n);
printf(“\n”);
continue语句的作用是提前终止本次循环,而不是整个循环。
以下是经典实例:
(来自c语言经典实例100题)
(1)有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?
都是多少?
程序分析:
可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
程序源代码:
inti,j,k;
printf("
\n"
);
5;
i++) /*以下为三重循环*/,第一重循环遍历百位
for(j=1;
j<
j++) //第二重循环遍历十位
for(k=1;
k<
k++)//第三重循环遍历个位
{
if(i!
=k&
i!
=j&
j!
=k) /*确保i、j、k三位互不相同*/
printf("
%d,%d,%d\n"
i,j,k);
}
(2)输入某年某月某日,判断这一天是这一年的第几天?
1.程序分析:
以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
2.程序源代码:
intday,month,year,sum,leap;
\npleaseinputyear,month,day\n"
scanf("
%d,%d,%d"
&
year,&
month,&
day);
switch(month)/*先计算某月以前月份的总天数*/
case1:
sum=0;
case2:
sum=31;
case3:
sum=59;
case4:
sum=90;
case5:
sum=120;
case6:
sum=151;
case7:
sum=181;
case8:
sum=212;
case9:
sum=243;
case10:
sum=273;
case11:
sum=304;
case12:
sum=334;
default:
dataerror"
sum=sum+day;
/*再加上某天的天数*/
if(year%400==0||(year%4==0&
year%100!
=0))/*判断是不是闰年*/
leap=1;
else
leap=0;
if(leap==1&
month>
2)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
Itisthe%dthday."
sum);
(3)输出9*9口诀。
程序分析:
分行与列考虑,共9行9列,i控制行,j控制列。
#include<
inti,j,result;
printf("
for(i=1;
10;
{for(j=1;
j++)
{
result=i*j;
printf("
%d*%d=%-3d"
i,j,result);
/*-3d表示左对齐,占3位*/
}
printf("
/*每一行后换行*/
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 复习资料 15