c复习.docx
- 文档编号:28899449
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:21
- 大小:20.87KB
c复习.docx
《c复习.docx》由会员分享,可在线阅读,更多相关《c复习.docx(21页珍藏版)》请在冰豆网上搜索。
c复习
(一)运算符和表达式:
1.结合性及优先级(p16)
例:
(1)a+=a*=2a+=(a=a*2)a=a+(a=a*2)
若初始情况下a=3,则执行上述运算后a=?
(2)x=a>b>c
若已知a=4,b=3,c=5则x=?
(3)y=x>0?
x++:
x==0?
0:
x--y=x>0?
x++:
(x==0?
0:
x--)
若初始情况下x=3,则执行上述运算后x=?
y=?
(4)若已知inta[5]={0,2,4,6,8},*p=a;设a的首地址为1000H,则:
执行*p++后表达式的值为0,p的值为1002H
执行++*p后表达式的值为1,p的值为1000H
执行*++p后表达式的值为2,p的值为1002H
2.对操作数的要求
(1)(i+j)++,3++(╳)
++,--变量
(2)a%b
a,b必须为整型
3.数据类型的转换
sizeof(int)=2sizeof(double)=8
struct{inta;
charch[5];
floats;}a1;
sizeof(a1)=11
如有#defineFx*x
若x是float类型,
则sizeof(F)=8(p21类型的隐式转换)
floatf=1.0;则printf(“%d\n”,sizeof(f*f));输出?
charc='a';则printf("%d\n",sizeof(c-c));输出?
标识符:
由字母、数字和下划线三种字符组成,且必须以字母或下划线开头。
关键字不能作为用户定义的标识符。
用户定义标识符:
合法:
char2_abca3P1
不合法:
intp[i]break3aa+b
常量:
合法:
'\n''\102'0xFF'\t'2L'\72'
不合法:
'ABC'1.2e0.5M'[]'
4.结果的类型
intn,s=0;
for(n=1;n<=10;n++)
s+=1/n;
/*s+=1.0/n或s+=1/(float)n*/
5.用逻辑表达式表达某个命题
如:
ch<‘0’||ch>‘9’ch是非数字字符
x>=0&&x<=200&&x%2==0x是0到200之间的偶数
6.多个&&与||混合运算时,结合自增、自减运算。
P26例2.12
已知a=b=c=1;则执行以下语句后,各变量的值为?
•++a||++b&&++c;
•--a&&++b&&++c;
•++a&&++b||++c;
•++a||--b||++c;
7.字符串处理函数
注意:
(1)运算符“==”与“=”
(2)运算符sizeof与函数strlen()
sizeof("\x3b\tc")strlen("\x3b\tc")
sizeof(“\nabcd")strlen("\nabcd")
(二)初始化与赋值
错误:
inta=b=c=0;
应为:
inta=0,b=0,c=0;或:
inta,b,c;a=b=c=0;
(三)输入和输出函数scanf,printf
%ld,%lf在scanf中使用longint,double对应的格式
例:
charc[20];
scanf(“%s”,c);
若输入howdoyoudo
则c的值为
charc[]=“howdoyoudo”;
printf(“%s”,c);
则输出
注意:
与gets函数的区别
(四)语句:
1.if(条件表达式)几种等价关系
if(x)if(x!
=0)if(x!
=‘\0’)if(x!
=NULL)
if((x=getchar())!
=EOF)
2.switch语句中适当的地方加break退出
switch(a%5)
{case0:
printf(“%d”,a++);
case1:
printf(“%d”,++a);
case2:
printf(“%d”,a--);
case3:
printf(“%d”,--a);
}
若a=2,则输出:
3.循环:
(1)do_while先执行后判断,至少执行一次
for,while先判断后执行,可能一次也不执行
for循环条件中常使用逗号表达式
main()
{inti,s;
for(s=0,i=1;i<5;i+=2,s+=i);
printf(“%d\n”,s);
}
main()
{inti,s;
for(s=0,i=1;i<5;i+=2,s+=i)
printf(“%d\n”,s);
}
(2)break与continue语句
x=0;
for(j=4;j<=6;j++)
{if(j%2)break;
x+=j;
}
printf(“%d\n”,x);
x=0;
for(j=4;j<=6;j++)
{if(j%2)continue;
x+=j;
}
printf(“%d\n”,x);
(五)函数
定义形式:
返回值类型,形式参数说明位置,返回语句
调用:
函数名(实在参数表);
以语句或表达式的形式调用
说明:
位置,形式
函数类型函数名();
或:
函数类型函数名(参数类型表);
参数传递:
原则
值传递------单向(p119程序2)
地址传递(数组名或指针变量)-------参数本身单向传递,但指针变量所指内容或数组元素的改变是双向的
(p123传地址调用)
intdigit(longn)
{intk=0;
while(n!
=0)
{n/=10;k+=1;}
returnk;
}
main()
{longx;
scanf(“%ld”,&x);
printf(“%ld,%d\n”,x,digit(x));
}
intdigit(longn,int*p)
{intk=0;
while(*n!
=0)
{*n/=10;k+=1;}
*p=k;
}
main()
{longx;intk;
scanf("%ld",&x);
digit(x,&k);
printf("%ld,%d\n",x,k);
}
(六)变量的作用域和存储类别
1.静态变量和动态变量:
静态变量只初始化一次,
而动态变量每调用一次函数,便初始化一次。
test()
{inti=0;staticintj=0;
i++;j++;
printf("i=%d,j=%d\n",i,j);
}
main()
{inti;
test();
test();
}
2.全局变量和局部变量
当全局变量和局部变量同名时,局部变量起作用。
intm=10;
voida(intn)
{n=15/n;m=m/2;}
main()
{intn=3;
a(n);
printf("n=%d,m=%d\n",n,m);
}
main()
{intx=5;cube(x);
printf(“%d\n”,x);
}
cube(intx)
{x=x*x*x;}
main()
{intx=5;x=cube(x);
printf(“%d\n”,x);
}cube(intx){x=x*x*x;return(x);}
main()
{intx=5;cube(&x);
printf(“%d\n”,x);
}
cube(int*x)
{*x=(*x)*(*x)*(*x);}
intx=5;
main()
{cube();
printf(“%d\n”,x);
}
cube()
{x=x*x*x;}
(七)宏定义与宏替换
#defineF(x,y)x+y
main()
{inta=2,b=3,c=4,r;
r=F(a,b)/F(a,c);
printf("%d",r);
}
(八)指针
1.运算
double*p,*q;
若已知p=1000H,则q=1008H则:
q-p=1
2.指针和数组
inta[5]={1,2,3,4,5};
int*p1[5]={a,a+1,a+2,a+3,a+4};
int**p2=p1;
则有:
p2=&p1[0]*p2=p1[0]=&a[0]
**p2=*p1[0]=a[0]
p2+i=&p1[i]*(p2+i)=p1[i]=&a[i]
**(p2+i)=*p1[i]=a[i]
/*指针与二维数组*/
inta[2][3]={0,1,2,3,4,5};
int*p1[2]={a[0],a[1]},**p2=p1;
则:
*(p1[1]+1)+*(*p2+2)=?
例:
分析下面程序
#include“stdio.h”
voidf(float*p1,float*p2,float*s)
{s=(float*)malloc(sizeof(float));
*s=*p1+*p2;
}
main()
{floata=1.0,b=2.0,*s=&a;
f(&a,&b,s);
printf(“%f\n”,*s);
}
3.字符指针
有定义chars[]="abcdefgh",*p=s;
则执行printf(“%s”,p+3);后输出结果?
•例:
main()
{charch[2][5]={{“01234”},{“56”}},*p=&ch[0][0];
while(*p)printf(“%c”,*p++);
prntf(\n%s\n”,ch[0]);
}
4.返回指针值的函数
求一维数组a中的最大值。
inta[8]={45,6,35,-12,100,11,3,-40};
main()
{int*p,____
(1)____;
p=max();
printf("max=%d\n",*p);
}
int*max()
{inti,k=0;intt=a[0];
for(i=1;i<8;i++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 复习