2cWord格式.docx
- 文档编号:17909186
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:28
- 大小:24.57KB
2cWord格式.docx
《2cWord格式.docx》由会员分享,可在线阅读,更多相关《2cWord格式.docx(28页珍藏版)》请在冰豆网上搜索。
=+=-=*=/=%=++--
赋值号左边只能是变量
同时出现多个赋值号时,从右到左运算
7、自加自减:
++--
(前加:
++x)(后加:
x++)
前加就是执行该语句之前先加
后加的就是先执行该语句后再加
8、逗号表达式:
表达式1,表达式2,表达式3,......表达式n它类似多个语句写在同一行,最后一个表达式的值为整个表达式的值
9、常用算法:
两数互换:
t=a;
a=b;
b=t;
a=a+b;
b=a-b;
a=a-b;
除去x的后n位:
x=x/10^n
余下x的后n位:
x=x%10^n
四位数拆分:
q=x/1000%10
w=x/100%10
e=x/10%10
r=x/1%10
保留2位小数第三位四舍五入:
x=x*100;
x=x+0.5;
x=(int)(x);
x=x/100;
或:
(int)(x*100+0.5)/(double)100
第三章:
1、输出语句:
printf("
格式控制字符串"
,输出列表);
双眼号中的内容按原样输出
2、输入语句:
scanf("
,输入列表);
输入列表成员只能是地址
3、常用格式字符:
c字符型、s字符串、d十进制整型、o八进制整型、x十六进制整形、f单精度型、lf双精度型、e指数形式、%输出一个%符号
注:
输入时:
%3c给定3个输入空间,只接受第一个输入的值
输出时:
%3d给定3个输出空间,如果实际数据超出会自动突破
%5.2f给定5个输出空间,保留2位小数第3位四舍五入
输入多个数值型数据时,要加间隔符(如:
空格、回车、tab)
输入多个字符型和数值型时,后面是字符型就不能加间隔符
如有:
%c%c%c"
&
a,&
b,&
c);
这时可以加间隔符
4、复合语句:
用花括号括起来的语句,在函数里默认为一条语句
5、空语句:
只有一个分号
(表达式+分号=语句)
第四章
1、关系运算符:
<
<
=>
>
===!
=
前四种的优选级别高于后两种
2、逻辑运算符:
!
&
&
||
以上运算符只有两种运算结果:
为真时结果为:
1,为假时结果为:
!
算术关系逻辑赋值逗号
3、短路现象:
inta=0,b=0;
y=a++&
b++;
运算结果:
y=0;
a=1;
b=0;
y=++a||++b;
y=1;
4、if()语句几种基本结构
if(条件表达式)
{
语句序列;
}
语句序列1;
else
语句序列2;
if(条件表达式1)
elseif(条件表达式2)
.....
elseif(条件表达式n)
语句序列n;
注意:
(1)条件表达式运算结果为非零时可执行相应的语句序列,为零时运行下一个条件表达式
(2)每个用花括号括起来的语句序列都是复合语句,默认为一条语句,无论什么情况都只能而且必须执行其中一个复合语句
(3)复合语句里面也可以使if()语句
(4)语句序列只有一条语句时可以省略花括号
,如果省略了括号意味着只有紧跟在条件表达式后面的一条语句受约束
(5)if语句可以嵌套,无论如何嵌套,else始终和上一个不带else的if配对
5、switch语句
switch(表达式)
case常量表达式1:
语句1;
case常量表达式2:
语句2;
...
case常量表达式n:
语句n;
default:
语句n+1;
(1)表达式的结果的数据类型与case后常量表达式类型必须一致
(2)由表达式确定从哪个case进入执行语句,如果没有遇到break语句就一直往下执行其他case后的语句,直到最后一条语句,break只能退出里面一层switch
6、常用算法
x为偶数:
if(x%2==0)
x为奇数:
if(x%2==1)或if(x%2!
=0)或if(x%2)
x能被7整除:
if(x%7==0)
x不能被7整除:
if(x%7!
=0)或if(x%7)
x能被7或11整除:
if(x%7==0||x%11==0)
x能被7和11整除:
if(x%7==0&
x%11==0)
if(x%77==0)
x能被7和11整除,但不能同时被他两整除:
if((x%7==0&
x%11)||(x%11==0&
x%7))
a,b均为奇数:
if(a%2&
b%2)
a,b一奇一偶:
if((a%2&
b%2==0)||(a%2==0&
b%2))
if((a+b)%2)
if(a%2!
=b%2)
第五章
1、for语句
for(表达式1;
表达式2;
表达式3)
循环语句;
表达式1:
给循环变量赋初始值
表达式2:
条件表达式(!
0时执行循环语句)
表达式3:
循环变量改变
while(条件表达式)
do
}while(条件表达式);
(1)以上循环语句中的条件表达式结果为!
0时(包括为真时)执行循环语句;
(2)花括号括起来的是复合语句,若省略了括号,则只有紧跟其后的一条语句为循环语句
(3)for(...)
for(...)循环语句;
此结构为嵌套关系
(4)for(...)循环语句1;
for(...)循环语句2;
此结构为并列关系
习题:
12.143.355.3
第六章
1、每个字符常量都等价于一个整数,这就是字符的ASCII码值,用单引号括起来。
字符变量用char定义
2、转义字符用\开头,均表示为一个字符
3、字符数据都能做所有数学运算,等价于数值数据
4、在使用scanf连续输入字符数据时不加连接符,若是连续对字符与数据类型进行输入时,只要需记住后面是输入字符数据时就不加连接符(空格、TAB、回车)
5、常用字符函数:
charc;
c=getchar()输入字符
putchar(c)输出字符
isalpha(c)判断是否为字母
isdigit(c)判断是否为数字
isupper(c)判断是否为大写字符
islower(c)判断是否为小写字母
toupper(c)转换成大写字母
tolower(c)转换成小写字母
第七章
1、函数
(1)y=sin(x)该函数为库函数,x为参数,y为接受函数返回值,所以该函数为有返回值函数
(2)intadd(intn)
inti,sum=0;
for(i=1;
i<
=n;
i++)
sum+=i;
returnsum;
main()
printf("
sum=%d\n"
add(10));
(3)voidtt(int,int);
intx,y;
x=2;
y=3;
tt(x,y);
x=%d,y=%d\n"
x,y);
voidtt(inta,intb)
intt;
t=a;
a=b;
b=t;
(4)voidtt(int*,int*);
tt(&
x,&
y);
voidtt(int*a,int*b)
t=*a;
*a=*b;
*b=t;
(2)到(4)属于自定义函数。
(2)为求出1到n之和,有返回值。
(3)(4)均为将两数互换,(3)的参数属于单向传递,(4)的参数属于双向传递,(3)(4)均无返回值,(3)函数不能达到互换效果,(4)函数则可以达到
函数定义应该放在函数调用的前面,否则在前面加上函数声明
15.345.3
第八章
1、地址的感念:
所以变量定义后,系统都会自动分配相应的存储空间(一个存储单元),具体所占存储空间大小决定于变量的类型。
内存的最小单位是字节(八位二进制),每个字节都有相应的编号,这个就叫地址。
2、普通变量存储都是具体的内容,只有指针变量才可以存储地址,这就可以让指针指向该变量,不同类型指针只能存放相应变量地址
3、intx,*p;
p=&
x;
x=10;
*p=*p+1;
x=10为直接存取,*p=*p+1为间接存取
为前提,不可却
4、intx=10,*p;
*p++;
++优先级别高于*,但p++为后加,意味着还是先执行*p,后执行p=p+1,所以最后使得p的地址加1,而不是x的值加1
5、intx,*p=&
与intx,*p;
的区别
6、指针p++,移动的是一个存储单元的位置,而不是一个字节的位置,所以指针只有指向连续的从存储空间才体现出指针的价值
7、指针因为可以间接存取数据,在函数调用中,参数的双向传递可以体现出其价值
如:
voidtt(inta,intb)
{
}
main()
与
voidtt(int*a,int*b)
上机习题:
78.23.35.2
第九章
1、数组定义时,下标必须是整型常量表达式,数组占用着连续的存储空间,每个存储单元地址间隔等于每个存储单元所占字节数
2、对数组可以初始化,如果没有初始化满,其他后面元素值为0,且一维数组初始化时可以省略数组下标
3、表示数组元素地址可以有以下方式:
a[i]a+i
表示数组元素的值可以有以下方式:
a[i]*(a+i)
数组名是该数组的首地址
4、数组占用连续的存储空间,所以可以使用指针对其进行间接存取,如对数组进行输入的方式:
inta[N],*p;
p=a;
for(i=0;
N;
scanf("
%d"
a[i]);
a+i);
p+i);
p++);
for(p=a;
p-a<
p++)
p);
注意不能用:
a++);
因为a为地址常量,不能进行赋值操作
输出数组的方式:
a[i]);
*(a+i));
*(p+i));
p[i]);
*p);
5、函数调用过程中常使用数组,引用数组的方式有:
voidfun(intp[])
{...}
{inta[N];
fun(a);
...}
voidfun(intp[N])
voidfun(int*p)
无论如何,系统使用的都是最后一种方式,如:
voidadd(intp[N])
inti;
5;
inta[N],i;
add(a);
%d"
6、二维数组初始化:
intx[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
intx[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
intx[3][4]={1,2,3};
intx[][4]={1,2,3,4,5};
7、x[i][j]表示x数组第i行第j列元素的值
x[i]表示x数组第i行首地址,也是第i行,0列元素的首地址
8、表示一个二维数组元素方式有:
intx[3][4];
x[i][j]
*(x[i]+j)
*(*(x+i)+j)
(*(x+i))[j]
*(&
x[0][0]+4*i+j)
*(x[0]+4*i+j)
9、表示一个二维数组元素的地址方式有:
x[i][j]
x[i]+j
*(x+i)+j
x[0][0]+4*i+j
x[0]+4*i+j
10、用指针间接存取二维数组
指针数组:
intx[3][4],*p[3],i;
3;
p[i]=x[i];
行指针:
intx[3][4],(*q)[4];
q=x;
11、通过函数调用来引用二维数组
voidfun(intp[][M])
{inta[N][M];
voidfun(intp[N][M])
voidfun(int*p[N])
12、常用算法
找最大值:
intx[N]={....},i,max;
max=x[0];
if(max<
x[i])max=x[i];
求所有数平均值:
intx[N]={....},i,ave;
ave=0;
ave+=x[i];
ave/=1,0*N;
选择法排序:
降序
inta[N],i,j,p,t;
p=i;
for(j=i+1;
j<
j++)
if(a[p]<
a[j])
p=j;
if(p!
=i)
{t=a[p];
a[p]=a[i];
a[i]=t;
冒泡排序:
inta[N],i,j,t;
N-1;
for(j=0;
if(a[j]<
a[j+1])升序>
降序<
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;
倒置数组中的数据
i=0;
j=N-1;
while(i<
j)
t=a[i];
a[i]=a[j];
a[j]=t;
i++;
j--;
删除下标为k的元素
inta[N],i,k;
k);
for(i=k;
a[i]=a[i+1];
给数组输入N个0到49的随机数
a[i]=rand()%50;
在数组中寻找与x相同值的下标
inta[N+1],i,x;
x);
a[N]=x;
while(x!
=a[i])i++;
if(i!
=N)printf("
x的位置在%d"
i);
elseprintf("
数组中没有x的值"
);
将N行N列矩阵上半三角的值乘上k,其他元素不变
inta[N][N],i,j,k;
for(j=i;
{a[i][j]=a[i][j]*k;
将N行N列矩阵下半三角的值乘上k,其他元素不变
=i;
将N行N列数组元素行和列互换
inta[N][N],i,j,t;
i;
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
13、上机习题:
2.34.37.119.225.126.328.329.333.341.141.362.366.3
第十章
1、字符类型变量用char定义,一个字符变量占一个字节,字符常量用单引号括,字符串常量用双眼好括。
字符串可理解为由多个连续的字符组成,且最后一个字符是'
\0'
(ASCII为0)。
字符代表一个整数,字符串常量代表该字符串首地址(地址常量)。
2、字符串与字符数组的区别
charc[5]={'
q'
'
w'
e'
r'
};
charc[5]={"
qwer"
charc[5]="
;
charc[]="
a'
b'
c'
d'
abcde"
3、指针与数组名的区别:
*p="
charc[5],*p;
c="
p="
%s"
c);
charc[5],*p=c;
4、scanf中%s输入时间隔符均为结束标志,gets只能用回车结束
printf与puts一样,都是从所给地址开始输出,遇到字符'
结束
5、二维字符数组可以存放字符串数组
charc[3][10]={{'
},{'
1'
2'
3'
}};
charc[3][10]={"
abc"
"
123"
charc[][10]={"
6、用指针数组,行指针指向字符串数组
char*p[3],(*q)[10];
p[i]=c[i];
q=c;
7、字符串函数:
chara[20]="
b[20]="
strcpy(a,b)
strcat(a,b)
strcmp(a,b)
strlen(a)
strrev(a)
将字符串"
1234"
转换成1234
charc[10]="
*p=c;
intx=0;
while(*p)
x=x*10+(*p-48);
p++;
字符串颠倒
voidfun(char*s)
chart;
inti,j,len;
len=strlen(s);
j=len-1;
t=s[i];
s[i]=s[j];
s[j]=t;
10、上机习题:
1.36.38.116.317.319.342.367.3
第十一章
1、带参主函数
主函数可以不带参数,带参数时有两个参数,第一个必须是int类型,表示命令行的个数,第二个必须是字符串数组,或指向指针的指针,用于存放所有命令行,参数名自定
2、函数递归调用
函数的定义不能嵌套,调用可以嵌套,函数自己调用自己为递归调用,可以是直接递归调用,也可以间接递归调用
3、常用算法:
求n的阶乘
intfun(intn)
if(n==1)
return1;
else
returnn*fun(n-1);
第十二章
1、变量的作用域分两大类:
全局变量和局部变量,在函数或复合语句中的变量为局部变量,定义在所有函数体外的变量为全局变量,在其定义开始之后的所有函数体内均可使用。
变量从存储状态上还分静态和动态变量,没有特殊声明,变量一般为动态类型,用st
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2c.docx