复习要点.docx
- 文档编号:2844220
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:13
- 大小:19.43KB
复习要点.docx
《复习要点.docx》由会员分享,可在线阅读,更多相关《复习要点.docx(13页珍藏版)》请在冰豆网上搜索。
复习要点
1、变量的生存期
变量存储类别:
auto自动的、extern外部的、static静态的、register寄存器的
静态变量和外部变量的初始化是在编译阶段完成的
自动变量的赋值是函数调用时进行的
函数中未指定存储类别的局部变量,其隐含的存储类别为:
自动(auto)
函数的形式参数隐含的存储类型说明是:
自动(auto)
在C语言中,形参的缺省存储类是:
自动(auto)
外部变量不能用extern关键字显式定义,但可以用extern声明。
2、变量与常量
变量名(标识符):
只能字符、数字和下划线,不能以数字开头。
在C程序中所用的变量必须先定义后使用
在C语言中,大小写是有区别的,例如stu和STU是两个不同的变量
C语言中,一个int型数据在内存中占2个字节、float占4个字节、double占8个字节、char占1个字节;整型数据的取值范围:
-32768~32767、无符号整型的取值范围:
0~65535
在C语言中,char型数据在内存中的存储形式是ASCII码,整型和字符型是可以通用的。
数值常量的表示:
整型(八进制0开头、十六进制0x开头)、实型(指数用e(E)表示,e(E)的前后必须有数字,且e(E)的数字必须为整数)、字符型用单引号括起来、字符串用双引号括起来
变量的赋值:
不同类型的数据可以相互赋值。
整型数据可以赋给整型变量、也可以赋给实型变量、也可以赋给字符型变量;实型数据可以赋给实型变量,也可以赋给整型变量。
指针变量:
指针变量中存放的是某个变量的地址,而不是该变量的值、指针变量的类型与它所指向的变量类型一致、指针变量的命名规则与标识符相同。
3、赋值表达式(=)
运算方向:
自右向左
常见赋值:
a=5、a=(b=4)+(c=2)、i*=i+1、a=b=c、k=2*4,k*4
x=x+y;y=x-y;x=x-y;
t=x;x=y;y=t;
指针赋值:
int*p=&x;
错误的赋值:
a:
=b+1、int18.5%3、a=b+c=1、a=a+7=c+b
intp=&x、int*p=x
int*p,x;*p=*x;
强制类型转换:
(int)i、(float)f、(int)a+b、(int)(a+b)
4、关系、逻辑表达式
逻辑运算符:
&&、||、!
比较运算符:
>、>=、==、<、<=
常见的表达:
x<=y
x≥y≥z(x>=y&&y>=z)
闰年(year%4==0&&year%100!
=0)||year%400==0(1990、1992、1996、2000)、
a=5,b=6,w=1,x=2,y=3,z=4:
(a=w>x)&&(b=y>z)
x=2,y=3,z=4;x+y&&z
x=3,y=4,z=5:
'y'&&'y'、x||y+z&&y-z、!
(x z||1) a=1,b=2,c=3,d=4,m=2,n=2: (m=a>b)&&(n=c>d) 大写字母(x>=’A’&&x<=’Z’) 小写字母(x>=’a’&&x<=’z’) c=(c>='A'||c<='Z')? c+32: c 5、自增自减运算符 四种情况: ++i、--i、i++、i-- 常见的题目: intx=2;z=-x+++1; intj=3;printf("%d,",++j);printf("%d",j++); y=10;x=y++; a=3;printf("%d,",++a);printf("%d",a++); 6、逗号运算符 运算过程: 从左向右,依次计算每个表达式,最后一个表达式的值就是逗号表达式的值。 常见表达形式: y=((x=3*y,x+1),x-1) (x=6,x+1,y=6,x+y) 7、数组的使用 数组的定义: 一维数组inta[5]、二维数组doublea[1][4]等。 数组的长度只能是整型常量、不能是变量。 #definesize10; charstr1[size],str2[size+2]; 数组的下标是从0开始的。 数组的初始化: 正确的: inta[][3]={1,2,3,4,5,6}; inta[2][3]={{1,2,3},{4,5,6}}; inta[][3]={{1,2,3},{4,5,6}}; chars[8]={"Beijing"}; char*s={"Beijing"}; char*s;s="Beijing"; chars[10];strcpy(s,"abcdefg"); 错误的: inta[2][]={{1,0,1},{5,2,3}}; inta[2][4]={{1,2,3},{4,5},{6}}; inta[][3]={{1,0,1}{},{1,1}}; chars[8];s={"Beijing"}; chars[8];s="Beijing"; char*s;s={"Beijing"}; 8、函数的使用 在C语言程序中,函数的定义不可以嵌套,但函数的调用可以嵌套 若使用一维数组名作函数实参,在被调用函数中,不需要考虑形参数组的大小 C语言程序中,当调用函数时,实参和虚参各占一个独立的存储单元 参数传递: 值传递(单向)、地址传递(双向) 关于return语句,可以在同一个函数中出现多次 9、其他 C语言中,if与else的配对关系是: 每个else总是与它上面的最近的if配对。 continue语句来终止本次循环 break语句来终止整个循环 在位运算中,操作数每右移一位,结果相当于操作数乘以2 无符号数的输出: intk=-1;printf("%d,%u\n",k,k); 预处理命令行都必须以#号开始. 分析以下代码: main() { intx=10,y=10,i; for(i=0;x>8;y=++i) printf("%d%d",x--,y); } 1010,91 main() {inta=100,x=10,y=20,okl=5,ok2=0; if(x if(y! =10) if(! okl)a=1; else if(ok2)a=10; a=-1; printf("%d\n",a) } -1 x=3; do {y=x--; if(! y){printf("x");continue;} printf("#"); }while(1<=x&&x<=2); #include main() {inti,b,k=0; for(i=1;i<=5;i++) {b=i%2; while(b-->=0)k++; } printf("%d,%d",k,b); } #include main() {floata=2,b,x=2; if(a<10.0)b=1.0/x; elseif((a<0.5)&&(a! =2.0))b=1.0/(a十2.0); elseif(a<10.0)b=1.0/x; elseb=10.0; printf("%f\n",b); } 0.500000 main() {inta=5,b=0,c=0; if(a=b+c)printf("***\n"); e1seprintf("$$$\n");} $$$ x=-1; do {x=x*x;} while(! x); 1 intx=0,s=0; while(! x! =0)s+=++x; printf("%d",s); 1 for(y=1;y<10;)y=((x=3*y,x+1),x-1); printf("x=%d,y=%d",x,y); 15,14 知道下列循环的作用 #include voidmain() {inti,j,a[2][3]; for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]=i*3+j+1; for(i=0;i<3;i++)for(j=0;j<2;j++)a[j][i]=j*3+i+1; for(i=0;i<6;i++)a[i/3][i%3]=i+1; for(i=1;i<=6;i++)a[i][i]=i; for(i=0;i<2;i++){for(j=0;j<3;j++) printf("%5d",a[i][j]);} } //以下几个程序主要是填空和改错 程序功能: 求一元二次方程的根。 #include #include main() { doublex1,x2,imagpart; floata,b,c,disc,realpart; scanf("%f%f%f",&a,&b,&c); printf("theequation"); if(a<=1e-6) printf("isnotquadratic\n"); else disc=b*b-4*a*c; if(fabs(disc)==1e-6) printf("hastwoequalroots: %-8.4f\n",-b/(2*a)); elseif(fabs(disc)>1e-6) { x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf("hasdistinctrealroots: %8.4fand%.4f\n",x1,x2); } else { realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf("hascomplexroots: \n"); printf("%8.4f=%.4fi\n",realpart,imagpart); printf("%8.4f-%.4fi\n",realpart,imagpart); } } 判断其是否是素数,若为素数输出1,否则输出0. main() {inti,x,y=1; scanf("%d",&x); for(i=2;i<=x-1;i++) if(x%2==0){y=0;break;} printf("%d\n",y); } 求1! +3! +5! +……+n! 的和 #include main() { longintf,s; inti,j,n; s=0; scanf("%d",&n); for(i=1;i<=n;i=i+2) { f=1; for(j=1;j<=i;j++) f=f*j; s=s+f; } printf("n=%d,s=%ld\n",n,s); } 程序: 输入数组,最大的与最后一个元素交换,最小的与第一个元素交换,输出数组。 #include input(number) intnumber[10]; { inti; for(i=0;i<9;i++) scanf("%d,",&number[i]); scanf("%d",&number[9]); } max_min
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 复习 要点
![提示](https://static.bdocx.com/images/bang_tan.gif)