C语言讲解思路资料Word下载.docx
- 文档编号:20251243
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:13
- 大小:20.86KB
C语言讲解思路资料Word下载.docx
《C语言讲解思路资料Word下载.docx》由会员分享,可在线阅读,更多相关《C语言讲解思路资料Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
1
整形
int
2
-32768---32767
短整形
shortint
长整形
longint
4
-214783648----214783647
单精度实型
float
3/4E-38-----3/4E+38
双精度实型
double
8
1/7E-308-----1/7E+308
5,常量
常量:
在程序执行中其值不改变就叫常量
变量:
在程序执行过程中值会发生变化
在C语言中常量可直接拿来使用,如x=y*10;
10就是常量
字符常量是用单引号括起来的一个字符。
例如'
a'
'
b'
='
+'
?
'
都是合法字符常量。
字符串常量用双引号括起来的一个字符串,如“abcdef”。
但“a”占2个字节,‘a’占一个字节
数字常量直接写就可以,‘5’和5是不同的,5可参加运算,‘5’不可
常量也可用来定义(荐)
#definePI3.14159
voidmain()
floats,r;
r=5;
s=PI*r*r;
s=%f\n"
s);
6,转义字符
转义字符是一种特殊的字符常量。
转义字符以反斜线"
\"
开头,后跟一个或几个字符。
转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。
例如,在前面各例题printf函数的格式串中用到的“\n”就是一个转义字符,其意义是“回车换行”。
转义字符主要用来表示那些用一般字符不便于表示的控制代码。
常用的转义字符及其含义
转义字符 转义字符的意义
\n 回车换行
\t 横向跳到下一制表位置
\v 竖向跳格
\b 退格
\r 回车
\f 走纸换页
\\ 反斜线符"
\'
单引号符
\a 鸣铃
\ddd 1~3位八进制数所代表的字符
\xhh 1~2位十六进制数所代表的字符
7,强制类型转换
其一般形式为:
(类型说明符)(表达式)
1.类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。
2.无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。
floatf=5.75;
(int)f=%d,f=%f\n"
(int)f,f);
}
f<
--5.75
将floatf强制转换成intffloatf=5.75;
本例表明,f虽强制转为int型,但只在运算中起作用,是临时的,而f本身的类型并不改变。
因此,(int)f的值为5(删去了小数)而f的值仍为5.75。
8,运算符和表达式
算术运算符:
+、-、×
、/、%、++、——
关系运算符:
>
、=、<
、==、>
=、<
=、!
=
逻辑运算符:
、||、!
、~
位操作符:
(位与)、|(位或)、~(位非)、^(位异或)、<
<
(左移)、>
(右移)
赋值运算符:
=、+=、-=、*=、/=、%=&
=|=^=>
=<
条件运算符:
?
:
(三目运算符)
逗号运算符:
用于把若干表达式组合成一个表达式(,)
指针运算符:
用于取内容(*)和取地址(&
)
求字节数运算符:
sizeof
特殊运算符:
()、[]、->
LPCSTR(Pointertoaconstantnull-terminatedstringof8-bitWindows(ANSI)Characters.)
指向以null结尾的常量字符串的指针
自增自减:
++i/--i:
i自增(减)1后参与其他运算
i++/i--:
i参与运算后在增加或减1
x=++I(I=I+1;
x=i)
x=i++(x=I,I=i+1)
例子:
赋值表达式
+=,-=,*=,/=,%=,<
=,>
=,&
=,^=,|=
X-=10X=x-10
逗号表达式
逗号表达是的求解过程是先求解表达式1,再求解表达式2,一直到最后,最终的表达式结果是最后一个表达式的值。
X=(1+2,3+5)结果x=7
X=(y=3,4*5)结果y=3,x=20
优先级及结合性
优先级
运算符类型
运算符
结合性
基本运算符
()[]->
自左至右
单目运算符
!
~++---(负数)*(指针)&
(取址)sizeof
自右至左
3
算术运算符
*/%
+-
5
移位运算符
>
6
关系运算符
<
7
==!
按位与运算符
9
按位异或运算符
^
10
按位或运算符
|
11
逻辑与运算符
12
逻辑或运算符
||
13
条件运算符
:
14
赋值运算符
=+=-=*=/=%=>
=&
=^=|=
15
逗号运算符
练习1
9,控制语句
if(表达式)语句;
voidmain(){
inta,b,max;
\ninputtwonumbers:
"
scanf("
%d%d"
&
b);
max=a;
if(max<
b)max=b;
max=%d"
max);
if(表达式)
语句1;
else
语句2;
inta,b;
inputtwonumbers:
if(a>
b)
max=%d\n"
a);
else
b);
if(表达式1)
elseif(表达式2)
elseif(表达式3)
语句3;
…
elseif(表达式m)
语句m;
语句n;
#include"
stdio.h"
charc;
inputacharacter:
c=getchar();
if(c<
32)
Thisisacontrolcharacter\n"
elseif(c>
0'
c<
9'
Thisisadigit\n"
A'
Z'
Thisisacapitalletter\n"
z'
Thisisasmallletter\n"
Thisisanothercharacter\n"
switch(表达式){
case常量表达式1:
语句1;
case常量表达式2:
语句2;
case常量表达式n:
语句n;
default:
语句n+1;
inputintegernumber:
%d"
a);
switch(a){
case1:
Monday\n"
case2:
Tuesday\n"
case3:
Wednesday\n"
case4:
Thursday\n"
case5:
Friday\n"
case6:
Saturday\n"
case7:
Sunday\n"
default:
error\n"
switch(a){
break;
break;
while(表达式)
intn=0;
inputastring:
\n"
while(getchar()!
\n'
)n++;
n);
do
语句;
while(表达式);
for(表达式1;
表达式2;
表达3)
表达式1 通常用来给循环变量赋初值,一般是赋值表达式。
也允许在for语句外给循环变量赋初值,此时可以省略该表达式。
表达式2 通常是循环条件,一般为关系表达式或逻辑表达式。
表达式3 通常可用来修改循环变量的值,一般是赋值语句。
这三个表达式都可以是逗号表达式,即每个表达式都可由多个表达式组成。
三个表达式都是任选项,都可以省略。
intn,s=0;
for(n=1;
n<
=100;
n++)
s=s+n;
s=%d\n"
各语句间可以相互嵌套。
10,转移语句
Goto
Continue;
Break
Return
练习2
11,数组
一维数组a[20](a[0]~a[19])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)
二维数组a[10][10](a[0][0]~a[9][9])
A00,a01,a02……a09
A10,a11,a12……a19,
……
A90,a91,a92……a99
定义:
一维:
inta[10];
charbc[9];
二维:
inta[10][10];
floatbf[2][3]
赋值:
a[10]={1,2,3,4,5,6,7,8,9,10}
a[2][3]={1,2,3,4,5,6}
a[2][3]={{1,2},{3,4},{5,6}}
b[10]={‘I’,‘’,’a’,’m’,’’,’a’,‘’,‘b’,‘o’,‘y’}
b[10]={“Iamaboy”}
没有赋值的会自动赋值为0.,或为空,NULL。
字符性如果长度和定义相同,赋值时可省略长度。
操作:
Scanf(“%s”,a);
//输入遇空格、Tab、Enter标志结束
Scanf(“%c”,&
a[3])
Printf(“%d”,a[5]);
Printf(“%s”,a)
inta[2][3]={{1,3,5},{2,4,6}};
intb[3][2],i,j;
for(i=0;
i<
2;
i++)
{
for(j=0;
j<
3;
j++)
{
b[j][i]=a[i][j];
}
}
for(i=0;
Printf(“%d”,b[i][j]);
Printf(“\n”);
getch();
字符串的函数:
puts(字符串数组)将字符串输出到终端
gets(字符串数组)从终端得到字符串
strcat(字符串数组1,字符串数组2)连接两个字符串
strcpy(字符串数组1,字符串数组2)将字符串2拷贝到字符串1
strcmp(字符串数组1,字符串数组2)比较字符串1和字符串2,相等为0,字符串1大为1,小为-1
strlen(字符串数组)测试字符串的长度
strlwr(字符串)将大写字母换成小写字母
strupr(字符串)将小写字母换成大写字母
12,指针
运算符:
*&
定义:
int*p;
char*p;
float*p;
inta;
含义:
*p:
实际的变量,等同于a(变量),a[0](一维),a[0][0](二维)
P:
等同于&
a(变量),a(一维),a[0](二维)
&
p:
(&
a)(变量),&
a(一维),a(二维)
*p=5;
P=&
a;
*p=a
P=a;
Xp=5;
X
操作:
*p+1a+1(变量)a[10]+1(一维)
p+1&
a+1(变量)a+1=&
a[1](一维)
*(p+1)a[1]
13,文件
FILE*fp;
函数:
打开:
fopen(文件名,模式)
例:
fopen(“d:
\\file\\file1.txt”,”r”);
文件的使用方式
含义
备注
“r”(只读)
为输入打开一个文本文件
不能打开不存在的文件
“w”(只写)
为输出打开一个文本文件
若原文件不存在,可新建。
若原来的文件存在,则覆盖
“a”(追加)
向文本文件尾增加数据
在原文件末尾添加数据
“rb”(只读)
为输入打开一个二进制文件
“wb”(只写)
为输出打开一个二进制文件
“ab”(追加)
向二进制文件尾增加数据
“r+”(读写)
为读/写打开一个文本文件
“w+”(读写)
为读/写新建一个文本文件
“a+”(读写)
“rb+”(读写)
为读/写打开一个二进制文件
“wb+”(读写)
为读/写新建一个二进制文件
“ab+”(读写)
关闭:
fclose(文件指针)
文件读写:
读写一个字符:
ch=fgetc(fp)fputc(ch,fp)
读写字符串:
fgets(str,n,fp)fputs(str,fp);
读写一个整数:
i=getw(fp)putw(10,fp)
读写数据块:
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
读写任意类型的若干数据:
fprintf(fp,”%d%f”,I,t);
//写
fscanf(fp,”%d”,&
i)//读取
文件状态:
feof(fp)//测试文件指针是否指向文件末尾,是返回1,否返回0
ferror(fp)//文件读写未出错返回0,出错返回非0
clearerr(fp)//使ferror(fp)的值为0
文件定位:
rewind(fp)//定位到文件头
fseek(fp,100L,0)//将文件指针移动到100行
I=ftell(fp)//得到当前指针所在的位置
14,函数嵌套
#defineswap(a,b)a=a+b;
b=a-b;
a=a-b;
voidmain()
{
intx=5,y=10;
swap(x,y);
printf(“%d%d\n”,x,y);
swap2(x,y);
intswap2(inta,intb)
inttemp;
temp=b;
b=a;
a=temp;
printf(“%d%d\n”,a,b);
return0;
Swap函数用宏定义的方式,只是简单的代替。
参数是直接代替。
Swep2用函数调用,参数传递是数值拷贝。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 讲解 思路 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)