C语言程序设计重点复习函数之前.docx
- 文档编号:7889598
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:36
- 大小:632.89KB
C语言程序设计重点复习函数之前.docx
《C语言程序设计重点复习函数之前.docx》由会员分享,可在线阅读,更多相关《C语言程序设计重点复习函数之前.docx(36页珍藏版)》请在冰豆网上搜索。
C语言程序设计重点复习函数之前
第一部分简单程序示例:
程序代码:
#include
intmain(void)//打印文字
{
printf("ThisisaCprogramming.\n");
return0;
}
程序结果如图:
程序分析:
①#include
C语言在真正处理程序的语义之前,先做一遍预编译,包括去掉注释和处理预编译指令。
编译预处理命令还有很多,它们都以“#”开头,并且不用分号结尾,所以不是c语言的程序语句。
②stdio.h是C编译系统提供的一个文件名,stdio是“standardinput&output”的缩写,即有关标准输入输出的信息。
③在使用标准函数库中的输入输出函数时,编译系统要求程序提供有关的信息(例如对这些输入输出函数的声明),#include
④intmain(void)
main是C语言程序中主函数的名称。
每一个C语言程序都必须有一个main函数,且main函数是程序执行的起点,程序都是先从main函数执行。
int是integer的缩写,代表函数的类型为整型。
执行此函数后会产生一个整数的函数值。
void:
此例中声明函数无返回值
⑤{}
每一个函数都要有函数名,也要有函数体(即函数的实体)。
函数体由一对大括号括起来。
⑥printf("ThisisaCprogramming.\n");
printf函数是C编译系统提供的标准函数库中的输出函数,C语言本身没有输入和输出语句。
本程序实际上只有第四行printf语句是用户来实现功能的。
printf语句中圆括号内双撇号内的字符串原样输出。
\n是换行符,代表跳到下一行。
每个语句后面都必须带有一个分号(;)
⑦return0;
把0作为函数的返回值。
⑧intmain()和return0;
main函数是由操作系统调用的,函数值提供给操作系统,用来判断main函数是否正常结果。
如果程序没有正常结束就不会执行return语句,不返回0,系统就会使main函数的值为一个非0值(一般是1)。
操作系统就可以知道程序没有正常结束,并采取相应的措施(如输出一个信息)。
⑨//……
表示程序的注释部分,注释可用英文或汉字,注释是给人看,告诉看的人某部分或整个C程序的作用,对程序的编译和运行并不起作用,注释符内容不被执行。
第二部分整型数据
(1)整型常量(整数)
如:
123、123L、123LU
1十进制整数:
一串连续数字表示,最高位非0.
范围(32767,-32768)
32767:
16为整常数最大的整数。
-32768:
16位有符号整数中最小的数。
2八进制整数:
以数字零开头,0-7组成的数
如:
010、011、016
错误例子:
018(八进制中,不允许出现8)
0(0不分进制)
3十六进制数:
以数字0和字母x开头,a-f不区分大小写。
如:
0xde、0xf
错误例子:
ox10(注意0与o不同)
4进制转换
例1:
八进制转换为十进制
010(八进制)8^2+8^1+8^0*0
8十进制=8
例2:
十六进制转换为十进制
0xde(十六进制)d为13,e为14
222(十进制)13*16+14=222
有符号
(2)整型变量
无符号
1
有符号型整数标准整型(int)
(其值可正可负)短整型(short)
长整型(long)
2
无符号整型标准整型(unsignedint)
(其值不可为负)短整型(unsignedshort)
长整型(unsignedlong)
int、short、long三者的区别在于他们表示的整数范围不同,通常以一个机器字来存放一个int型数据,三者满足short≤int≤long
示例:
进制数计算与转换详细讲解
Ⅰ二进制数计算:
加法0+0=0,0+1=1+0=1,1+1=10
减法0-0=0,1-0=1,1-1=0,0-1=-1,10100-1010=1010
乘法0×0=0,0×1=1×0=0,1×1=1
除法0÷1=0,1÷1=1
Ⅱ十进制数(正常数)转换为二进制数:
如十进制10转换为二进制1010
10÷2=5………………0
5÷2=2…………………1
2÷2=1…………………0
1÷2=0…………………1
因为是转换为二进制所以除2,如果转换为八进制则除8,其他以此类推
Ⅲ二进制转换为十进制
如二进制1010转换为十进制10
1010
2^3+2^2+2^1+2^0
=8+0+2+0=10
第三部分字符型数据
(1)字符型常量:
由一对单引号括起来的单个字符(可打印)
如:
’A’‘x’‘a’‘s’‘#’
(2)转义字符:
一个反斜杠(\)后跟限定字符(不可打印)
注意区分斜杠:
"/"与反斜杠:
"\"。
转义字符实际上作为一个字符来对待,当反斜杠后面的字符与它不构成转义字符,反斜杠不起作用。
(例子如下)
举例:
printf(“A\Nbc\Ndef\n”);
输出结果如图:
(3)字符型变量:
通过保留字char说明
格式:
charc1,c2;
每个字符型变量可用来存放一个字符。
(4)字符串常量:
用一对双引号括起来的零个或者多个字符的序列。
如:
”Iamastudent“或者”x”或者””
①双引号只充当字符串的分界符,而不是字符串的一部分,所以它并不输出。
②如果在字符串里面要输出双引号,则需要用转义字符。
例:
printf("The\042a\042isanidenfart");
输出结果如图:
③字符串中所含字符个数称字符串的长度。
如:
”XYZ”长度为3。
“”长度为0,称为空串。
④字符串所占的空间=字符串的长度+1
增加的那个字节,用来存放字符串’\0’,作为字符串的结尾标识。
⑤转义序列也可以出现在字符串中--只当作一个字符看待。
如:
“Iama\nstudent”
⑥“x”在电脑中占两个字节,电脑中它为”x\0“
ASCII码例子
例:
输出大写字母A和它对应的ASCII码值
#include
intmain(void)
{
charch='A';
printf("Thealphabetis%c,ItisASCIIis%d\n",ch,ch);
return0;
}
程序结果:
第四部分实型数据(浮点型数据)
(1)实型常量
①非指数型(小数形式):
如:
+123.+123.45-123.45等
②指数型
如:
.12345e212345.0e-3
(e/E之前必须要有数字,之后指数必须为整数,且不能有空格)
单精度(float)
(2)实型变量:
双精度(double)
长双精度(longdouble)
数据类型
有效数字
数值范围
单精度(float)
6-7位
(10^-38,10^38)
双精度(double)
15-16位
(10^-308,10^308)
长双精度(longdouble)
18-19位
(10^-4932,10^-4932)
一般在C语言的编译系统里面,一般它都会自动的把程序中的实常量变成双精度型,以达到更准确的目的。
第五部分基础类型强制类型转换
强制类型转换语句格式:
(类型名)(表达式)
例:
#include
intmain(void)
{
doublea=23.5654;
a=(int)(a);
printf("%f",a);
return0;
}
结果为23.000000
程序分析:
本例中因为只有一个a转换,所以可以去掉a的括号,写成a=(int)a;
第五部分格式说明符与数据输入与输出
Ⅰ几个简单常用的格式说明符:
①%d:
十进制有符号整数
②%f:
单精度浮点数
③%lf:
双精度浮点型
④%c:
输出一个字符
⑤%e:
以指数形式输出
⑥%s:
输出一个字符串
Ⅱ数据的输入与输出函数:
用于用户输入数据函数:
scanf、getchar
用于输出的函数:
printf、putchar
例1:
#include
intmain(void)
{
inta;
floatb;
charc;
scanf("%d%f%d",&a,&b,&c);
printf("a=%d,b=%f,c=%c",a,b,c);
return0;
}
程序结果如图:
程序分析:
①scanf函数的用法
scanf用来让用户自己输入自己想要的数据给变量。
scanf函数的双引号里输入数据对应的格式说明符"%d%f%d"
双引号后加&a,&b,&c,代表取址(记住要加&和变量的名字就行,不用管取址是什么意思。
)
②printf函数的用法
printf语句中圆括号内双撇号内的字符串原样输出。
("a=%d,b=%f,c=%c"双引号里面的内容原样输出,格式说明符%d输出对应的数据)
双撇号后面的这几个字母a,b,c,代表前面的格式说明符对应的数据,第一个%d对于a的值,第二个%f对于b的值,第三个%c对于c的值(按照规定好的相应的格式输出)
③对于第三个数据,定义的时候是定义charc;输入的时候用格式说明符%d,是根据ASCII码表来表示对应的字符。
输入字符型数据的ASCII值102。
然后在printf函数中则用%c,输出自己想要的字符f。
例2:
打印出自己输入的字符(版本1)
#include
intmain()
{
charch;
scanf("%c",&ch);
printf("%c",ch);
return0;
}
与例1不同,此例直接用%c输入,而不用%d。
在此例中(例2)输入f,则结果显示为f
而例1中,要打印出f,第三个数据得输入f对应的ASCII码值102,结果c才会是f
例3:
打印出自己输入的字符(版本2)
#include
intmain(void)
{
charch;
ch=getchar();
putchar(ch);
return0;
}
程序结果如图:
程序分析:
①ch=getchar();
把你输入的字符给ch。
②putchar(ch);
输出ch里面的字符,就算你刚刚输入的那个。
③getchar和putchar只能用于字符型数据
Ⅲ前格式说明符的扩展说明
%md:
左对齐,若m比实际少时,按实际输出。
%ld:
输出长整型数据。
%m.nf:
输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。
%-m.nf:
输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。
%ms:
输出的字符串占m列,如字符串本身长度大于m,则突破获m的限制,将字符串全部输出。
若串长小于m,则左补空格。
%-ms:
如果串长小于m,则在m列范围内,字符串向左靠,右补空格。
%m.ne和%-m.ne:
m、n和”-”字符含义与前相同。
此处n指数据的数字部分的小数位数,m表示整个输出数据所占的宽度。
%m.ns:
输出占m列,但只取字符串中左端n个字符。
这n个字符输出在m列的右侧,左补空格。
%-m.ns:
其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。
如果n>m,则自动取n值,即保证n个字符正常输出。
第六部分几个简单的表达式讲解
Ⅰ算术表达式
如:
15%8=7
0%5=0
双目运算符:
操作对象有两个。
常用+(加)、-(减)、*(乘)、/(除)、%(取余)
注意%只能操作整形。
其他变量整型、实型皆可。
常用运算符
单目运算符:
操作对象只有一个。
常用+(正)、-(负)
注意:
若双目运算符两边的类型不一致,系统将自动进行类型转换后再进行运算。
优先级:
()>+(正)>-(负)>*>/>%>+(加)>-(减)
Ⅱ赋值表达式
格式:
变量名=表达式(两边不可颠倒)
例:
a=b+7;
把b+7的结果/值给a
先求右边表达式的值,再把算出来的值给左边。
注意:
“=”为赋值号,而不是等号
Ⅲ复合赋值表达式
例:
a=9;
a+=a-=a+a;
计算过程:
a+a=18
a-(a+a)=-9
a=a+a=-18
结果为-18
Ⅳ++和—
++和—都是单目运算符,操作对象只有1个。
i++代表i=i+1,自身加1。
当++在前,先自身+1,再干别人的事。
当++在后,先干别人的事,再自身+1。
例1:
#include
intmain(void)
{
inti=3;
printf("%d",++i);
return0;
}
结果为4
程序分析:
本例中++在前,所以先自身+1,再输出。
若改为++在后则先输出3,再自身+1。
Ⅴ逗号表达式
格式:
表达式1,表达式2,………,表达式N
运算顺序:
从左到右运算,最终结果取决于最后一个表达式的值。
逗号运算符优先级最低。
例1:
#include
intmain(void)
{
inti=5,a;
a=(i+8,7,i+7);
printf("%d",a);
return0;
}
最终结果为12。
程序分析a:
I值不变,变的是a。
a的值取决于最后一个i+7。
Ⅵ条件表达式
格式:
表达式1?
表达式2:
表达式3
C语言中唯一一个三目运算符。
(3个操作对象)
求解:
当1成立(非0)时,表达式的值就是表达式2的值,否则就是表达式3的值
例:
1<2?
4:
5
因为1<2是真,所以条件表达式的值为4。
第七部分关系运算与逻辑运算
C语言中0代表加,非0代表真。
几个简单的关系运算符
<<=>>===!
=
优先级:
前四个>后两个
<=这种两个字符组成的中间不可有空格
都是双目运算符。
几个简单的逻辑运算符
&&(与)一假则假
||(或)一真则真
!
(非)非假则真,非真则假
第八部分if语句(条件语句)
分类:
①不含else语句
②含else语句
注意:
if控制离它最近的语句,若需要复合语句,需将语句用{}括起来。
if小括号后面没有分号
①格式:
if(条件表达式)
语句1;
else
语句2;
例1:
#include
intmain(void)
{
inta;
printf("Pleaseinputyouscore:
");
scanf_s("%d",&a);
if(a>60)
printf("Youhavepass\n");
else
printf("Youhavenotpass\n");
return0;}
程序分析:
如果if里面的条件a>60成立,执行离他最近的一条语句。
如果不成立,则执行else的语句。
②格式:
if(条件表达式)
语句1;
例2:
#include
intmain(void)
{
inta;
printf("Pleaseinputyouscore:
");
scanf_s("%d",&a);
if(a>60)
printf("Youhavepass\n");
return0;
}
程序分析:
如果if里面的条件a>60成立,执行离他最近的一条语句。
如果不成立,此程序结束,不执行任何操作,不输出任何语句。
③if的嵌套1
if里面含有if
例:
if(a>60)
if(a>90)
printf(“A”);
else
printf(“B”);
else
printf(“C”);
④if的嵌套2
格式:
If()
Elseif()
Elseif()
Elseif()
……
……
(else)
例:
if(a>=90)printf(“a”);
elseif(a>=80)printf(“b”);
elseif(a>=70)printf(“c”);
elseprintf(“e”)
第九部分switch语句(开关语句)
格式:
switch(表达式)
{
case常量表达式1:
语句1;
case常量表达式2:
语句2;
case常量表达式3:
语句3;
……………………………………………
……………………………………………
case常量表达式N:
语句N;
}
注意:
常量表达式的值=表达式值
Switch语句括号里的须为整型
例:
#include
intmain(void)
{
intA;
scanf_s("%d",&A);
switch(A/10)
{
case10:
printf("A");
case9:
printf("B");
case8:
printf("C");
case7:
printf("D");
default:
printf("E");
}
return0;
}
结果:
程序问题:
输入80时,如何只让结果输出C。
第十部分break与continue的作用
Ⅰbreak语句,用于跳出当前循环语句或开关语句
上例程序改进:
#include
intmain(void)
{
intA;
scanf_s("%d",&A);
switch(A/10)
{
case10:
printf("A");break;
case9:
printf("B");break;
case8:
printf("C");break;
case7:
printf("D");break;
default:
printf("E");break;
}
return0;
}
加上break后,输入80,输出C后,则会跳出switch循环,不会输出DE
Ⅱcontinue语句
跳过continue下面的语句,返回循环开始的地方进行下一次循环
例:
#include
intmain(void)
{
intk=1,s=0;
for(;k<=5;k++)
{
s+=k;
if(s>5)
{
printf("s=%d\n",s);
continue;
}
printf("%d\n",s);
}
return0;
}
程序结果:
第十一部分循环结构
Ⅰwhile语句
格式:
while(表达式)
循环体
while控制和它距离最近的语句
理解:
如果表达式成立(值非0),则执行循环体。
如果不成立,循环结束
例:
计算1+……………+100的值
#include
intmain(void)
{
inti=1,sum=0;
while(i<101)
{
sum+=i;
i++;
}
printf("sumis%d\n",sum);
return0;
}
程序结果:
Ⅱdo-while语句
格式:
do
循环体
while(表达式);
理解:
先执行都下面的循环体,得出结果,再进行判断。
如果表达式成立,循环继续。
如果不成立,循环结束。
计算1+……………+100的值
#include
intmain(void)
{
inti=1,sum=0;
do
{
sum+=i;
i++;
}
while(i<101);
printf("sumis%d\n",sum);
return0;
}
程序结果:
Ⅲfor语句
格式:
for(表达式1;表达式2;表达式)
循环体;
表达式1:
变量的初值。
表达式2:
判断真假。
表达式3:
控制变量。
例:
计算1+……………+100的值
#include
intmain(void)
{
inti,sum=0;
for(i=0;i<=100;i++)
sum+=i;
printf("sumis%d\n",sum);
return0;
}
程序结果:
注意:
如果表达式为空,须输入分号,代表为空语句
如:
for(;k<=10;)
注意:
如果表达式1或2或3不止有一条语句,而是两条、三条及更多,需用逗号隔开。
例:
#include
intmain(void)
{
inti,k;
for(i=0,k=1;i<10,k<5;i++,k++)
printf("*");
return0;
}
程序结果:
Ⅳfor语句嵌套
格式:
for(表达式1;表达式2;表达式)
{
for(表达式1;表达式2;表达式)
循环体;
{
…………
}
}
例:
让程序输出乘法口角表
#include
intmain(void)
{
inti,j;
for(i=1;i<10;i++)
{
for(j=1;j<10;j++)
printf("%d*%d=%d",i,j,i*j);
printf("\n");
}
return0;
}
程序结果:
C语言基本构成
(32个关键字,45中运算符,9种控制语句)
Ⅰ标识符
包含关键字、特定字、一般标识符三个部分。
1一般标识符:
由字母、数字、下划线组成,并且第一个字符必须是字母或者下划线。
(标识变量名、常量名、函数名、数组名、类型明、文件名等符号名字)(书写标识符时,区分大小写)
如:
sum、average、_above、FORTRAN_77等
②非法标识符(错误的标识符):
如:
$123、#133、123H、DOS6.0等
Ⅱ关键字(又叫保留字)(共32个)
32个auto double int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 重点 复习 函数 之前
![提示](https://static.bdocx.com/images/bang_tan.gif)