知识点复习Word文件下载.docx
《知识点复习Word文件下载.docx》由会员分享,可在线阅读,更多相关《知识点复习Word文件下载.docx(29页珍藏版)》请在冰豆网上搜索。
}
●常见字符的ASCII码
‘A’650x41
‘a’970x61
‘0’480x30
chara=’b’-'
A'
+'
0'
;
a=’A’+32;
●合法的用户标识符
下列不能定义的用户标识符是()。
A)Main
B)_0
C)_int
D)sizeof
●printf的使用
⏹字符串结尾应以’\0’结束,才能整体输出
●scanf的使用
◆scanf的输入分隔符的指定
●一般以空格、TAB或回车键作为分隔符
●其它字符做分隔符:
格式串中两个格式符间字符
⏹scanf读入字符注意点:
空格和转义字符作为有效字符输入
欲使得a1的值为12,a2的值为34,c1的值为字符a,
c2的值为字符b,scanf("
%d%c%d%c"
&
a1,&
c1,&
a2,&
c2);
输入形式应为:
12a34b
有下列程序:
main()
{intm,n,p;
scanf("
m=%dn=%dp=%d"
m,&
n,&
p);
printf("
%d%d%d\n"
m,n,p);
若想从键盘上输入数据,使变量m的值为123,n的值为456,p的值为789,则正确的输入是:
m=123n=456p=789
例题3:
chara,b,c,d;
scanf(“%c%c”,&
a,&
b);
c=getchar();
d=getchar();
printf(“%c%c%c%c\n”,a,b,c,d);
输入:
ab
cd
输出为:
c
例题4:
#include<
stdio.h>
{inti=0,j=0,k=0;
%d%*d%d"
i,&
j,&
k);
//p28-31四张表格
%d%d%d\n"
i,j,k);
102030
10300
⏹以整数格式为字符变量输入
{charb;
%d"
&
b=b*2;
%c\n"
b);
输入:
33
输出为:
B
⏹用scanf读入字符串
◆字符串名或数组名本身就是地址,不需加&
有定义语句:
intb;
charc[10];
,则正确的输入语句是()。
A)scanf("
%d%s"
b,&
c);
B)scanf("
b,c);
C)scanf("
b,c);
D)scanf("
b,&
◆不能将一行带有空格的字符串读入
若准备将字符串“Thisisastring.”记录下来,
错误的输入语句为:
(A)scanf(“%20s”,s);
(B)for(k=0;
k<
17;
k++)
s[k]=getchar();
(C)while((c=getchar())!
=‘\n’)
s[k++]=c;
(D)gets(s);
第3章运算与表达式
1算术运算
基本算术运算符、优先级与结合性、数据类型转换、自增、自减运算
2关系运算
3逻辑运算
4位运算
按位逻辑运算移位运算
位运算符的含义和使用。
简单的位运算。
5指针运算
取地址运算、操作指针变量、移动指针、比较指针
6其它运算
sizeof运算、逗号运算、条件运算
7赋值运算
赋值运算符和赋值表达式、复合赋值运算
熟练运用各种运算符、掌握运算优先级和结合性。
P237附录B
不同类型数据间的转换与运算。
表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。
●基本运算、优先级
下列程序的输出结果是()。
{intm=12,n=34;
%d%d"
m++,++n);
%d%d\n"
n++,++m);
A)12353514
B)12353513
C)12343514
D)12343513
{inta,b,d=25;
a=d/10%9;
b=a&
&
(-1);
%d,%d\n"
a,b);
}
A)6,1
B)2,1
C)6,0
D)2,0
{chars[]="
159"
*p;
p=s;
%c"
*p++);
//先输出*p,再p++,即先去表达式值输出,再p++
15
inta=0,b=1;
if(a=b)
printf(“aequaltob”);
else
printf(“anotequaltob”);
注意区分“=”与“==”
●%操作的使用
⏹%操作只能针对整数(字符)
#include<
{
char*s="
ABC"
do
{
printf("
*s%10);
s++;
}while(*s);
运行结果:
567
⏹经常用于求解某个整数的尾数,将整数进行分离等。
●位运算举例
{intc=35;
%d\n"
c&
35
{charx=040;
x=x<
<
1);
注意:
040为八进制
64
{chara=3,b=6,c;
c=a^b<
2;
c);
27左移<
优先级高于按位异或^
第4章程序控制结构
顺序程序设计
基本语句
1.控制语句、函数调用语句、表达式语句,空语句,复合语句。
选择结构程序设计
1.用if语句实现选择结构。
2.条件运算表达式(a>
b)?
a:
b
3.用switch语句实现多分支选择结构。
4.选择结构的嵌套。
●x≤y≤z的c语言表达式:
(x<
=y&
y<
=z)
●C语言中没有逻辑类型
逻辑运算和关系运算的结果为1或0;
2&
0
a=10;
b=20;
c=(a%b<
1)||(a/b>
5>
2>
7>
8的值
(a==1)||(a!
=1)的值
0参与逻辑运算表示假;
非0参与运算表示真;
intb=5;
if(!
b)(等价于if(b==0)
b--;
●if(){多条语句}
{inta=3,b=4,c=5,t=99;
if(b<
a&
a<
c)
t=a;
a=c;
c=t;
if(a<
c&
b<
c)t=b,b=a,a=t;
a,b,c);
●else总是与最近的if配对
if(a==1)
if(b!
=2)
if(c==3)d=1;
elsed=2;
elseif()
●switch中的每个case,如不遇到break,则继续执行下一个case语句,直至遇到break
●switch后面的表达式的含义
inta=3,b=5;
switch(a==1)
{case1:
a=b;
break;
case0:
a++;
switch(a)
●短路特性:
逻辑表达式求解时,有时并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符
{inti=1,j=2,k=3;
if(i++==1&
(++j==3||k++==3))printf("
A)123
B)234
C)223
D)233
●条件表达式的计算结合方向:
自右向左
如a<
b?
c<
d?
c:
da<
(c<
d)
若整型变量a、b、c、d中的值依次为:
1、4、3、2。
则条件表达式a<
a:
c:
d的值是()。
A)1
B)2
C)3
D)4
循环控制
1.for循环结构。
2.while和do-while循环结构。
3.continue语句和break语句。
4.循环的嵌套。
●循环用列表法分析,以确保不发生低级错误
{charc1,c2;
for(c1='
c2='
9'
c1<
c2;
c1++,c2--)
%c%c"
c1,c2);
输出:
0918273645
{inta=1,b;
for(b=1;
=10;
b++)
{if(a>
=8)break;
if(a%2==1)
{a+=5;
continue;
a=3;
4
{inti,j,m=1;
for(i=1;
i<
3;
i++)
{for(j=3;
j>
0;
j--)
{if((i*j)>
3)
break;
m=i*j;
}
m=%d\n"
m);
m=1
第5章数组
数组的定义和引用
1.一维数组和二维数组的定义、初始化和数组元素的引用。
2.字符串与字符数组。
●数组的长度必须是一个常数!
intN=90;
inta[N];
错误
下列叙述中错误的是()。
A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B)数组名代表的是数组所占存储区的首地址,其值不可改变
C)在程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越
界”的出错信息
D)可以通过赋初值的方式确定数组元素的个数
●数组元素的引用
例题1
{intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++<
7)
if(p[i]%2)j+=p[i];
j);
A)42
B)45
C)56
D)60
++优先级高于<
例题2
{intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;
for(i=0;
4;
i++)
{for(j=0;
j<
i;
j++)
%4c"
'
'
for(j=i;
%4d"
num[i][j]);
输出:
右上半三角。
1
2
3
6
7
8
1112
16
例题3
{inta[3][3],*p,i;
p=&
a[0][0];
9;
i++)p[i]=i;
i++)printf("
a[1][i]);
A)012
B)123
C)234
D)345
例题4
inta[5]={1,2,3,4,5},b[5]={0,2,1,3,0},i,s=0;
for(i=0;
5;
s=s+a[b[i]];
s);
11
●数组/字符数组/字符串的初始化
能正确初始化的是:
A)char*s;
s="
Olympic"
//把"
的地址赋给s
B)chars[7];
//s是数组名,是数组地址,不是变量
C)char*s;
s={"
};
D)chars[7];
下列能正确定义一维数组的选项是()。
A)inta[5]={0,1,2,3,4,5};
B)chara[]={0,1,2,3,4,5};
C)chara={'
'
B'
C'
};
D)inta[5]="
0123"
●串长度/数组长度/串在内存中所占的字节数
chars1[10]="
abcd!
*s2="
\n123\\"
//将串的首地址赋给s2,见p56
%d%d%d%d%d\n"
strlen(s1),strlen(s2),sizeof(s1),sizeof(s2),sizeof("
));
551046
{chara[7]="
a0\0a0\0"
inti,j;
i=sizeof(a);
j=strlen(a);
%d%d\n"
i,j);
A)22
B)76
C)72
D)62
已有定义:
chara[]="
xyz"
b[]={'
x'
y'
z'
,下列叙述中正确的是()。
A)数组a和b的长度相同
B)a数组长度小于b数组长度
C)a数组长度大于b数组长度
D)上述说法都不对
●指针相关内容
1.地址与指针变量的概念,运算符*与&
。
2.一维、二维数组和字符串的地址以及指向变量、数组、字符串、函数、
结构体的指针变量的定义。
通过指针引用以上各类型数据。
3.用指针作函数参数。
4.返回地址值的函数。
5.指针数组,指向指针的指针。
●指针与数组
inta[]={1,2,3,4,5,6,7,8,9,0},*p;
for(p=a;
p<
a+10;
p++)
%d,"
*p);
●指针与字符串
main()
char*s="
12347"
s+=2;
%ld\n"
,s);
下列语句或语句组中,能正确进行字符串赋值的是()。
A)char*sp;
sp="
right!
B)chars[10];
s="
C)chars[10];
*s="
right"
D)char*sp="
char*sp;
有下列函数:
fun(char*a,char*b)//12341231
while((*a!
='
\0'
)&
(*b!
='
(*a==*b))
{a++;
b++;
return(*a-*b);
该函数的功能是()。
A)计算a和b所指字符串的长度之差
B)将b所指字符串复制到a所指字符串中
C)将b所指字符串连接到a所指字符串后面
D)比较a和b所指字符串的大小
●二维数组与指向数组的指针变量
main()//本题较难选做
{inta[3][2]={0},(*ptr)[2],i,j;
//注意,ptr是一个指针,并非数组,只不过指向的内容是一
//个长度为2的int数组
{ptr=a+i;
scanf("
ptr);
j++)
%2d"
a[i][j]);
输入11
输出
10
10
00
intfun(int(*s)[3],intn,intk)//本题较难选做
intm,i;
m=s[0][k];
i<
n;
i++)
if(s[i][k]>
m)
m=s[i][k];
returnm;
inta[3][3]={{1,2,3},{11,12,13},{2l,22,23}};
fun(a,2,0));
●当两个指针p,s指向数组元素时,p在s之后,p-s指的是两个指针相差的元素个数.
如s指向a[1],p指向a[3],p-s为2。
{inta[8],*p,*s;
for(p=a;
p-a<
8;
p++)scanf("
p);
for(p=a,s=a;
p++)if(*p>
*s)s=p;
printf(“index=%d\n”,s-a);
}
●通过指针访问数组元素
设有定义doublea[10]={2,2,3,4},*s=a;
,以下能够代表数组元素a[3]的是。
A)(*s)[3]//语法错误,*s为一个数
B)*(s+3)
C)*s[3]//s[3]即为a[3]
D)*s+3//数组首元素的值加3
intx[8],*p=x;
则对x数组元素的正确引用是。
A)*&
x[8]//越界
B)*(x+3)
C)*(p+8)/越界
D)p+3
●指针数组
char*a[]={“ef"
"
gh"
ijk"
inti;
*a[i]);
egi
第6章其它数据类型
1.用typedef说明一个新类型。
2.结构体和共用体类型数据的定义和成员的引用。
●struct结构体变量及分量的赋值方法
例1:
设有定义:
structcomplex
{intreal,unreal;
}data1={1,8},data2;
data2=data1;
data2=(2,6);
错
data2.real=data1.real;
例2:
有以下定义和语句
structworkers
{intnum;
charname[20];
charc;
struct
{intday;
intmonth;
intyear;
}s;
};
structworkersw,*pw;
pw=&
w;
能给w中year成员赋1980的语句是
*pw.year=1980;
w.year=1980;
错
pw->
year=1980;
w.s.year=1980;
例3:
structst
{intx,y;
}data[2]={1,10,2,20};
{structst*p=data;
p->
y);
(++p)->
x);
10,2
●union的定义和使用
例1
uniondt
{inta;
charb;
doublec;
}data;
A)data的每个成员起始地址都相同
B)变量data所占内存字节数与成员c所占字节数相等
C)程序段:
data.a=5;
%f\n"
data.c);
输出结果为5.000000
D)data可以作为函数的实参
●typedef的使用
例1:
设有如下说明:
typedefstructST
{longa;
intb;
charc[2];
}NEW;
则下列叙述中正确的是()。
A)以上的说明形式非法
B)ST是一个结构体类型
C)NEW是一个结构体类型名
D)NEW是一个结构体变量
例2:
下列对结构体类型变量td的定义中,错误的是()。
A)typedefstructaa
B)structaa
{intn;
{intn;
floatm;
}AA;
}td;
AAtd;
structaatd;
C)struct
D)struct
}aa;
}td;
structaatd;
第7章函数
1.库函数的正确调用。
2.函数的定义方法。
3.函数