12章练习.docx
《12章练习.docx》由会员分享,可在线阅读,更多相关《12章练习.docx(13页珍藏版)》请在冰豆网上搜索。
12章练习
第1,2章主要知识点:
1.知识点:
C程序基础
●C语言是一种结构化程序设计语言。
三种基本结构:
顺序、选择、循环。
例1:
(2010-09-11)以下关于结构化程序设计的叙述中正确的是()
A)一个结构化程序必须同时由顺序、分支、循环三种结构组成
B)结构化程序使用goto语句会很便捷
C)在C语言中,程序的模块化是利用函数实现的
D)由三种基本结构构成的程序只能解决小规模的问题
例2:
(2011-03-26)计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是()
A)C语言程序仅可以编译执行
B)C语言程序仅可以解释执行
C)C语言程序既可以编译执行又可以解释执行
D)以上说法都不对
例3:
(2011-03-26)以下叙述中错误的是()
A)C语言的可执行程序是由一系列机器指令构成的
B)用C语言编写的源程序不能直接在计算机上运行
C)通过编译得到的二进制目标程序需要连接才可以运行
D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件
2.知识点:
C语言程序的构成
●C程序是由函数构成的,一个C程序有且仅有一个main函数。
一个函数由两部分组成:
函数的首部和函数体。
函数体包括声明部分和执行部分。
一个C程序总是从main函数开始执行(即程序的入口),由main函数结束,(即程序的出口)。
例1:
(2010-03-12)以下叙述正确的是()
A)C语言程序是由过程和函数组成的
B)C语言函数可以嵌套调用,例如:
fun(fun(x))
C)C语言函数不可以单独编译
D)C语言中除了main函数,其他函数不可作为单独文件形式存在
例2:
(2011-09-11)以下叙述中错误的是()
A.C语言编写的函数源程序,其文件名后缀可以是C
B.C语言编写的函数都可以作为一个独立的源程序文件
C.C语言编写的每个函数都可以进行独立的编译并执行
D.一个C语言程序只能有一个主函数
3.知识点:
标识符
●命名规则:
标识符中只能包含字母(a-z,A-Z),数字(0-9),下划线(_)。
第一个字符必须是字母或下划线。
●
类型说明符:
int,float,double等
语句定义符:
if,for,while等
分类
都是小写
关键字(32个)
(有固定含义,不可改变)
库函数的名字:
printf,scanf等
编译预处理命令名:
include等
预定义标识符
(有特殊含义,可以改变)
用户自定义的标识符ⅰ格式合法,ⅱ不能使用关键字,ⅲ见名知意
例1:
(2010-03-13)以下C语言用户标识符中,不合法的是()
A)_1B)AaBcC)a_bD)a-b
4.知识点:
数据类型
例1:
(2010-03-16)以下关于C语言数据类型使用的叙述中错误的是()
A)若要准确无误差的表示自然数,应使用整数类型
B)若要保存带有多位小数的数据,应使用双精度类型
C)若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型
D)若只处理“真”和“假”两种逻辑值,应使用逻辑类型
例2:
(2011-03-26)定义无符号整数类为UInt,下面可以作为类UInt实例化值的是()
A)-369B)369C)0.369D)整数集合{1,2,3,4,5}
5.知识点:
常量
●整型常量
十进制整常数:
没有前缀,其数码为0-9。
例如65535,-568
八进制整常数:
以0开头,其数码为0-7。
例如015
十六进制整常数:
以0X或0x开头,其数码为0-9,A-F或a-f。
例如0x2A
长整型数:
整型常数后缀为L或l。
例如358000L
无符号数:
整型常数后缀为U或u。
例如158u
●实型常量的形式
小数形式:
必须有小数点,小数点前后不能同时没有数字。
指数形式:
aEn(其中a表示十进制数,E阶码标志,n阶码)。
E前E后必须有数字,E后必为整数,可以带符号。
例如2.1E-3、5E8
例1:
(2011-09-13)以下选项中关于C语言常量的叙述错误的是:
()
A.所谓常量,是指在程序运行过程中,其值不能被改变的量
B.常量分为整型常量、实型常量、字符常量和字符串常量
C.常量可分为数值型常量和非数值型常量
D.经常被使用的变量可定义成常量
例1:
(2009-04-13)以下选项中,能用作数据常量的是()
A)o115B)0118C)1.5e1.5D)115L
例2:
(2010-03-26)以下选项中可用作C程序合法实数的是()
A).1e0B)3.0e0.2C)E9D)9.12E
●字符常量:
用单引号‘’括起来的一个字符。
包括普通字符常量和转义字符。
普通字符常量:
如‘a’、‘A’、‘1’。
转义字符:
由一对单引号引起来的以\开头的若干字符的组合。
如‘\n’表示回车换行、‘\\’表示反斜线符、‘\’’表示单引号符、‘\”’表示双引号、‘\ddd’表示八进制数、‘\xhh’表示十六进制数。
例3:
(2010-09-15)以下选项中能表示合法常量的是()
A)整数:
1,200B)实数:
1.5E2.0C)字符斜杠:
‘\\’D)字符串:
“\007”
例4:
(2010-03-26)以下选项中不能用作C程序合法常量的是()
A)1,234B)'\123'C)123D)"\x7G"
6.知识点:
变量
●整型变量和实型变量
以考试标准Viusalc++6.0为例,说明各类型变量所占的位数。
类型
所占
位数
所占
字节数
类型
所占
位数
所占
字节数
short
16
2
unsignedint
32
4
int
32
4
unsignedlong
32
4
long
32
4
float
32
4
unsignedshort
16
2
double
64
8
例1:
(2010-09-38)有以下程序
#include
main(0)
{ints,t,A=100;doubleB=6;
s=sizeof(A);t=sizeof(B);
printf(“%d,%d\n”,s,t);
}
在VC6平台上编译运行,程序运行后的输出结果是()
A)2,4B)4,4C)4,8D)10,6
例1:
(2009-09-22)有以下定义语句,编译时会出现编译错误的是()
A)chara=’a’;B)chara=‘\n’;C)chara=‘aa’;D)chara=‘\x2d’;
7.知识点:
ASCII码
●‘0’的ASCII码值为48;‘A’的ASCII码值为65;‘a’的ASCII码值为97。
●大写字母与小写字母的ASCII码值相差32。
例1:
(2009-09-23)有以下程序
#include
main()
{charc1,c2;
c1=’A’+’8’-‘4’;
c2=’A’+’8’-‘5’;
printf(“%c,%d\n”,c1,c2);
}
已知字母A的ASCII码为65,程序运行后的输出结果是()
A)E,68B)D,69C)E,DD)输出无定值
8.知识点:
进制转换
●十进制转换成二进制、八进制、十六进制:
将十进制的数字除以2(8、16),得到的商数继续除以2,直到商为0,然后将各次相除所得的余数从后往前排列。
●二进制、八进制、十六进制转换成十进制:
将二(八、十六)进制数的每一位数从高位到低位乘以2的n-1次幂,n为该位所在的位数。
●二进制与八进制之间的转换:
每个八进制数字转换成3位二进制数字。
●二进制与十六进制之间的转换:
每个十六进制数字转换成4位二进制数字。
例1:
(2010-09)以下程序运行后的输出结果是。
#include
main()
{inta=200,b=010;
printf(“%d%d\n”,a,b);
}
9.知识点:
运算符的优先级
级别由大到小:
(逻辑)非>算(术运算符)>关(系运算符)>(逻辑)与>(逻辑)或>条(件运算符)>赋(值运算符)
10.知识点:
强制类型转换运算符
●一般形式:
(类型说明符)(表达式)
●功能:
把表达式的运算结果强制转换成类型说明符所表示的类型
例1:
(2009-04-06)表达式(int)((double)(5/2)+2.5)的值是。
例2:
以下程序运行后的输出结果是()。
main()
{inta;
a=(int)((double)(3/2)+0.5+(int)1.99*2);
printf("%d\n",a);
}
11.知识点:
算术运算符:
+、—、*、/、%
%:
参与运算的量均为整型。
/:
当除号左右两边都是整数的时候,商也要是整数,如果不是整数则舍弃小数部分。
当参与运算量有一个为实型,则商为double型。
例1:
(2011-09-14)若有定义语句:
inta=10;doubleb=3.14;,则表达式‘A’+a+b值得类型是()
A.charB.intC.doubleD.float
例2:
(2011-09-15)如有定义语句:
intx=12,y=8,z;,在其后执行语句z=0.9+x/y,则z的值为()A.1.9B.1C.2D.2.4
例3:
(2010-09-14)有以下定义:
inta;longb;doublex,y;则以下选项中正确的表达式是(A)
A)a%(int)(x-y)B)a=x!
=y;C)(a*y)%bD)y=x+y=x
12.知识点:
逗号表达式
●一般形式:
表达式1,表达式2……表达式n
●求值过程:
自左向右依次求解,最后一个表达式的值为整个逗号表达式的值。
例1:
(2009-04-14)设有定义:
intx=2;以下表达式中,值不为6的是()
A)x*=x+1B)x++,2*xC)x*=(1+x)D)2*x,x+=2
13.知识点:
自增自减运算符
++ii自加1后再参与运算
i++i参与运算后再自加1
--ii自减1后再参与运算
i--i参与运算后再自减1
++和--的运算对象只能为变量,不能是常量或表达式。
例1:
(2009-09-06)若有定义语句:
inta=5;则表达式:
a++的值是。
●当++或—与printf语句结合时,若++/--x的形式,则先自增/自减,然后输出;若x++/--的形式,则先输出x原值,在进行自增/自减操作。
例2:
(2011-03-26)有以下程序
#include
main()
{intx=011;
printf("%d\n",++x);
}
程序运行后的输出结果是()
A)12B)11C)10D)9
14.知识点:
赋值表达式
●一般形式:
变量名=表达式
●赋值运算符左边必须是变量,而不是表达式。
例1:
(2010-03-14)若有定义:
doublea=22;inti=0,k=18;则不符合C语言规定的赋值语句是()
A)a=a++,i++;B)i=(a+k)<=(i+k);C)i=a%11;D)i=!
a;
例2:
(2011-03-26)若有定义语句:
inta=3,b=2,c=1;,以下选项中错误的赋值表达式是()
A)a=(b=4)=3;B)a=b=c+1;C)a=(b=4)+c;D)a=1+(b=c=4);
●复合赋值运算符和表达式
+=、—=、*=、/=、%=、<<=、>>=、&=、^=、|=
例2:
(2010-09-16)表达式a+=a-=a=9的值是()
A)9B)-9C)18D)0
15.知识点:
位运算
●按位与运算&
规则:
0&0=00&1=01&0=01&1=1
●按位或运算|
规则:
0|0=00|1=11|0=11|1=1
●按位异或运算∧
规则:
0∧0=00∧1=11∧0=11∧1=0
●求反运算~
规则:
~0=1~1=0
●左移运算<<
规则:
把<<左边的运算数的各二进位全部左移若干位,高位丢弃,低位补0。
左移一位相当于该数乘以2。
左移n位相当于该数乘以2n。
例1:
(2010-09-40)有以下程序
#include
main()
{shortc=124;
c=c________;
printf(“%d\n”,c);
}
若要使程序的运行结果为248,应在下划线处填入的是
A)>>2B)|248C)&0248D)<<1
例2:
(2009-04-39)有以下程序
#include
main()
{inta=5,b=1,t;
t=(a<<2)|b;
printf(“%d\n”,t);
}
程序运行后的输出结果是()
A)21B)11C)6D)1
●右移运算>>
把>>左边的运算数的各二进位全部右移若干位。
高位补0,低位丢弃。
右移一位相当于该数除以2。
右移n位相当于除以2n。
例3:
(2009-09-39)若有以下程序段
intr=8;
printf(“%d\n”,r>>1);
输出结果是()
A)16B)8C)4D)2
16.知识点:
关系运算符和表达式
例1:
(2010-09-08)在C语言中,当表达式值为0时表示逻辑值“假”,当表达式值为
时表示逻辑值“真”。
例2:
(2010-03-06)设x为int型变量,请写出一个关系表达式,用以判断x同时为3和7的倍数时,关系表达式的值为真。
17.知识点:
逻辑运算符和表达式
●逻辑运算符优先级从高到低:
!
、&&、||
●逻辑运算的真值表
a
b
a&&b
a||b
!
a
真
真
真
真
假
真
假
假
真
假
假
真
假
真
真
假
假
假
假
真
●进行逻辑运算时,若&&左边的值为0,则不再对右边的运算对象进行运算,整个表达式的值为0。
例1:
(2011-09-17)若有定义语句:
intk1=10,k2=20;,执行表达式(k1=k1>k2)&&(k2=k2>k1)后,k1和k2的值分别为()
A.0和1B.0和20C.10和1D.10和20
例2:
inta=2;则表达式(!
a==1)&&(a++==2)的值为0,a的值为。
●若||左边的运算对象的值为1,则不再对右边的运算对象进行运算,整个表达式的值为1。
例2:
(2010-03-17)若a是数值类型,则逻辑表达式(a==1)||(a!
=1)的值是()
A)1B)0C)2D)不知道a的值,不能确定
18.知识点:
格式输入函数printf()
(1)一般形式:
printf(“格式控制字符串”,输出列表);
(2)遇到控制字符,按照控制字符的规定输出,遇到非格式字符串按原样输出。
例1:
(2009-04-07)若变量x,y已定义为int类型且x的值为99,y的值为9,请将输出语句printf(“”,x/y);补充完整,使其输出的计算结果形式为:
x/y=11。
例2:
(2009-04-15)程序段:
intx=12;doubley=3.141593;printf(“%d%8.6f”,x,y);的输出结果是()
A)123.141593B)123.141593C)12,3.141593D)123.1415930
19.知识点:
格式输入函数scanf()
(1)一般形式:
scanf(“格式控制字符串”,地址列表);
(2)若格式控制字符串中有非格式字符串,则按原样输入。
若格式控制字符串中没有非格式字符作输入数据之间的间隔,则可用空格、Tab、回车作间隔。
例1:
(2011-09-16)若有定义:
inta,b;,通过语句scanf(“%d;%d”,&a,&b);,能把整数3赋给变量a,5付给变量b的输入数据是
A.35B.3,5C.3;5D.35
例2:
(2005-04-19)有以下程序
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,则正确的输入是()
A)m=123n=456p=789B)m=123n=456p=789
C)m=123,n=456,p=789D)123456789
例3:
(2011-03-26)有以下程序段
charname[20];
intnum;
scanf("name=%snum=%d",name;&num);
当执行上述程序,并从键盘输入:
name=Lilinum=1001<回车>后,name的值()
A)LiliB)name=Lili C)Lilinum= D)name=Lilinum=1001
(3)在输入字符数据时,若格式控制字符串中无非格式字符,则认为所有输入的字符均为有效字符。
空格会被当作字符赋值给变量。
例3:
(2009-04-23)有以下程序
#include
main()
{inta1,a2;charc1,c2;
scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);
printf(“%d,%c,%d,%c”,a1,c1,a2,c2);
}若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,程序输出结果是:
12,a,34,b则正确的输入格式是(以下_代表空格,代表回车)
A)12a34bB)12_a_34_bC)12,a,34,bD)12_a34_b
(4)格式字符串
●一般形式:
%[*][输入数据宽度][长度]类型
●*表示该输入项,读入后不赋予相应的变量。
●输入数据宽度:
用十进制数指定输入的字符数。
例4:
(2010-09-07)有以下程序
#include
main()
{intx,y;
scanf(“%2d%ld”,&x,&y);printf(“%d\n”x+y);
}程序运行时输入:
1234567程序的运行结果是。
例5:
(2009-04-16)若有定义语句:
doublex,y,*px,*py;执行了px=&x;py=&y;之后,正确的输入语句是()
A)scanf(“%f%f”,x,y);B)scanf(“%f%f”,&x,&y);
C)scanf(“%lf%le”,px,py);D)scanf(“%lf%lf”,x,y);
●当定义的变量类型和scanf中“格式符”类型不一致时(这里只限定在字符型和整型两种类型,其他数据类型不可以。
)整型和字符型之间通过ASCALL可以相互转化。
例6:
(2011-03-12)有以下程序(说明:
字符0的ASCII码值为48)
main()
{charc1,c2;
scanf("%d",&c1);
c2=c1+9;
printf("%c%c\n",c1,c2);
}若程序运行时从键盘输入48<回车>,则输出结果为。
20.知识点:
字符输出函数putchar()
一般形式:
putchar(‘a’);putchar(‘\101’);
21.知识点:
字符输入函数getchar()
一般形式:
getchar();或ch=getchar();
例1:
(2010-03-15)有以下程序
#include
main()
{chara,b,c,d;
scanf(“%c%c”,&a,&b);
c=getchar();d=getchar();
printf(“%c%c%c%c\n”,a,b,c,d);
}当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:
回车也是一个字符)
12
34
则输出结果是()
A)1234B)12C)12D)12
334