深圳大学C语言题库.docx
- 文档编号:8957741
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:51
- 大小:46.12KB
深圳大学C语言题库.docx
《深圳大学C语言题库.docx》由会员分享,可在线阅读,更多相关《深圳大学C语言题库.docx(51页珍藏版)》请在冰豆网上搜索。
深圳大学C语言题库
习题一程序设计语言概述
一、单项选择题
1.下面属于C语言保留关键字的是()
A)IntB)typedefC)ENUMD)unien
2..下列四组C语言用户标识符中,正确的一组是()
A)nameInt_abcD56
B)ab?
c4bbs-hello_1234
C)printconsttypedefine
D)includeintergerDoubleshort
选择理由:
________________________________________________________
3.一个C语言程序的执行是从()
A)函数main开始,直到函数main结束
B)第一个函数开始,直到最后一个函数结束
C)第一个语句开始,直到最后一个语句结束
D)函数main开始,直到最后一个函数结束
4.C语言源程序的基本单位是()
A)过程 B)函数 C)子程序 D)标识符
5.一个C语言程序是由()
A)一个主程序和若干个子程序组成
B)一个或若多个函数组成
C)若干过程组成
D)若干个子程序组成
6.下列叙述中,正确的是()
A)C程序中的所有字母都必须小写
B)C程序中的关键字必须小写,其他标识符不区分大小写
C)C程序中的所有字母都不区分大小写
D)C语言中所有的关键字必须小写
答案:
1、B2、A3、A4、B5、B
6、D注:
该题选项B后半部分不是很严谨,其他标识符用大小写均可,但是大小写形式被认为是两个不同的标识符(大小写敏感)。
习题二C语言的基本数据类型与表达式
一.单项选择题
1.C语言中规定,不同类型的数据占用存储空间的长度是不同的。
下列各组数据中满足占用存储空间从小到大顺序排列的是()
A)shortint,char,float,double
B)char,float,int,double
C)int,unsignedchar,longint,float
D)char,int,float,double
选择理由:
________________________________________________________
2.C语言中能用八进制表示的数据类型是()
A)字符型、整型
B)整型、实型
C)字符型、实型、双精度型
D)字符型、整型、实型、双精度型
3.下列属于合法的C语言中字符常数是()
A)’\97’B)”A”C)’\t’D)”\0”
4. C语言中字符型(char)数据在内存中是以()形式存储的。
A)原码B)补码C)反码D)ASCII码
5.在C语言中,合法的长整型常数是()
A)0LB)4978234C)05423761D)0xa67b5ff
6.若有以下变量定义,则结果为整型的表达式是()
inti;charc;floatf;
A)i+fB)i*cC)c+fD)i+c+f
选择理由:
________________________________________________________
7.设charch;以下正确的赋值语句是()
A)ch=’123’;B)ch=’\xef’;
C)ch=’\08’;D)ch=”\”;
选择理由:
________________________________________________________
8. 若有以下定义和语句:
intu=010,v=0x10,w=10;
printf(“%d,%d,%d\n”,u,v,w);
刚输出结果是()
A)8,16,10B)10,10,10
C)8,8,10D)8,10,10
9.若有以下定义和语句:
inty=10;
y+=y-=y-y;
则y的值是()
A)10B)20C)30D)40
选择理由:
(写出求值的过程)__________________________________________
10.下面程序的输出结果是()
voidmain()
{inta=1;
printf(“%d%d%d\n”,a,++a,a--);
}
则输出结果是()
A)111B)122C)123D)121
11.设floatm=4.0,n=4.0;使m为10.0的表达式是()
A)m+=n+2B)m-=n*2.5C)m*=n-6D)m/=n+9
选择理由:
(写出求值的过程)__________________________________________
12.下面程序的输出结果是()
voidmain()
{unsignedm=32768;
printf(“m=%d\n”,m);
}
A)m=32768B)m=32767C)m=-1D)=-32767
13.若有以下定义和语句:
inta=1,b=2,c=3,d=4;
printf(“%d,%d,%d”,(a,b,c),d,c);
则输出结果是()
A)3,4,1B)3,4,3C)3D)1,2,3
选择理由:
(写出求值的过程)__________________________________________
14.设x、y、z均为int型变量,则执行以下语句后,x、y、z的值为()
x=1;y=0;z=2;y++&&++z||++x;
A)2、1、3B)2、0、3C)2、1、3D)2、1、2
选择理由:
(写出求值的过程)__________________________________________
15.下面程序的运行结果是()
voidmain()
{intx=3,y=3,z=1;
Printf(“%d%d\n’,(++x,y++),z+2);
}
A)34B)42C)43D)33
选择理由:
(写出求值的过程)__________________________________________
16.以下非法的转义字符是()
A)’\b’B)’0xf’C)’\037’D)’\”
答案:
1、D2、A3、C4、D5、A6、B7、B8、A9、B
10、B注:
在这里推算的结果是122,而VC算出的结果是221,主要是对表达式求值的次序不同导致。
11、A
12、注:
对数据进行分析,32768的二进制形式是1个1后面15个0,如果把该数认为是有符号数形式,则是-32768的补码(注意,这是某些系统中的一个规定),则应输出-32768。
而实际在VC编译系统中,输出的结果是32768。
这个大概是由于不同系统中定义的差异所造成。
13、B14、D15、D16、B
第三次课后作业参考答案
一、单项选择题
【1.1】以下不正确的C语言标识符是____。
A)intB)a_1_2C)ab1exeD)_x
【1.2】以下是正确的C语言标识符是____。
A)#defineB)_123C)%dD)\n
【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。
A)printB)i\amC)PxqD)str_l
_3done_halfMy->bookCpp
oodbstart$itline#pow
aBc3paiHis.agewhile
【1.4】下面各选项组中,均是C语言关键字的组是。
A)auto,enum,includeB)switch,typedef,continue
C)signed,union,scanfD)if,struct,type
【1.5】下列不属于C语言关键字的是。
A)defaultB)registerC)enumD)external
【1.6】C语言程序从main()函数开始执行,所以这个函数要写在____。
A)程序文件的开始B)程序文件的最后
C)它所调用的函数的前面D)程序文件的任何位置
【1.7】下列关于C语言的叙述错误的是____
A)大写字母和小写字母的意义相同
B)不同类型的变量可以在一个表达式中
C)在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型
D)同一个运算符号在不同的场合可以有不同的含义
【1.8】在C语言中,错误的int类型的常数是。
A)32768B)0C)037D)0xAF
【1.9】执行语句printf("%x",-1);屏幕显示____。
A)-1B)1C)-ffffD)ffff
注释:
整型常量-1在计算机中表示为补码1111111111111111,用十六进制显示这个数时,最左边的1不会被解释为符号位,而是与右边其它位共同转换为十六进制数。
【1.10】已知longi=32768;执行语句printf("%d",i);屏幕显示____。
A)-1B)-32768C)1D)32768
【1.11】已知longi=65539;执行语句printf("%d",i);屏幕显示____。
A)65539B)-3C)3D)程序不能执行
【1.12】在C语言中,整数-8在内存中的存储形式是。
A)1111111111111000B)1000000000001000
C)0000000000001000D)1111111111110111
注释:
C语言中,int型的负数是采用补码表示的。
【1.13】C语言中字符型(char)数据在内存中的存储形式是____。
A)原码B)补码C)反码D)ASCII码
【1.14】将字符g赋给字符变量c,正确的表达式是。
A)c=\147B)c="\147"C)c='\147'D)c='0147'
【1.15】下列转义字符中错误的一个是____。
A)'\000'B)'\0014'C)'\x111'D)'\2'
【1.16】将空格符赋给字符变量c,正确的赋值语句是____。
A)c='\0'B)c=NULLC)c=0D)c=32
注释:
空格符的ASCII码是32,可以直接将其ASCII码付给字符型变量。
空字符(‘\0’)和空格符是不同的两个字符,空格符的ASCII码值是32,空字符的ASCII值是0。
【1.17】已知:
chara='\70';则变量a中。
A)包含1个字符B)包含2个字符C)包含3个字符D)说明非法
【1.18】字符串"\"EOF\n=-\61\""的长度是____。
A)8B)9C)14D)非法字符串
【1.19】字符串""的长度是____。
A)0B)1C)2D)非法字符串
【1.20】已知:
chara;intb;floatc;doubled;执行语句"c=a+b+c+d;"后,变量c的数据类型是。
A)intB)charC)floatD)double
【1.21】温度华氏和摄氏的关系是:
C=(F-32)*5/9。
已知:
floatC,F;由华氏求摄氏的正确的赋值表达式是____。
A)C=5/9(F-32)B)C=5*(F-32)/9
C)C=5/9*(F-32)D)三个表达式都正确
【1.22】逗号表达式"(a=3*5,a*4),a+15"的值是____。
A)15B)60C)30D)不确定
二、阅读程序题
【2.1】以下程序的输出结果是。
voidmain()
{floata;
a=1/100000000;
printf("%g",a);
}
A)0.00000e+00B)0.0C)1.00000e-07D)0
【2.2】下面程序的输出结果是____。
#include
main()
{intx=10;
printf("%d,",x++);
printf("%d\n",x);
}
A)10,10B)11,10C)10,11D)11,11
选择理由:
________________________________________________________
【2.3】以下程序的输出结果是____。
main()
{unsignedintn;
inti=-521;
n=i;
printf("n=%u\n",n);
}
A)n=-521B)n=521C)n=65015D)n=102170103
【2.4】以下程序的输出结果是。
main()
{intx=10,y=10;printf("%d%d\n",x――,――y);
}
A)1010B)99C)910D)109
【2.5】以下程序的输出结果是____。
main()
{intn=1;
printf("%d%d%d\n",n,n++,n--);
}
A)111B)101C)110D)121
答案:
一、1、A2、B3、A
4、B注释:
include是预处理命令,不是关键字;scanf是函数名;type不是C语言的关键字。
5、D6、D7、A
8、A注释:
在TurboC编译系统下,int型表示整数的范围是-32768~32767
9、D
10、B注释:
在TurboC编译系统下,长整型数32768在计算机内的表示是00000000000000001000000000000000,以一般整型进行输出时,输出低位2字节,即1000000000000000,此数恰是-32768的补码。
但在VC编译系统下长整型和基本整型都占四个字节,所以输出的仍是32768。
11、C12、A13、D
14、C注释:
变量c是字符型,可用字符常量为它赋值。
字符常量必须用单引号括起来,所以B是错误的;在单引号或双引号内的反斜线'\'用于表示转义字符,A选项在无引号时使用反斜线是错误的;C选项单引号内出现反斜线表示它与后面的数字组成一个转义字符;单引号只允许括起一个字符,D选项在单引号内出现4个字符,是错误的。
15、C16、D17、A18、B19、A
20、C注释:
C的数据类型在定义变量的时候已经确定,不会以为赋值表达式而改变。
执行赋值表达式时,是将右边的类型,先转变为左边变量的类型,然后赋给左边的变量
21、B注释:
单纯从C语言语法来说,选项B、C都是正确的,但是选项C中第一个运算的两个对象都是整型常数,其结果也是整型数0,最后的运算结果也就是0了。
22、C注释:
括号内第一表达式的值是15,这时a=15,第二表达式的值15*4=60,所以括号内逗号表达式的值为60,第三个表达式的值,a+15=15+15=30,即整个表达式的值。
二、1、D注释:
程序中除法运算的两个操作数均是整型,运算结果也是整型,即1/100000=0,然后将0转变成浮点数0.0赋给a,以%g输出,最简洁的形式是0。
2、C
3、C注释:
变量i中的负号传送给变量n后,因n是无符号数,已不作为负号处理。
4、D注释:
对变量x的――操作是后缀形式,变量x的减1操作要在执行完printf函数之后才进行,所以变量x的值在输出的时候仍然保持原值10。
5、B注释:
在多数系统中C语言在执行printf()时,对函数中的表达式表列的处理顺序是从后向前,即先处理n--,再处理n++,最后处理n,而且每一个表达式作为一个处理单元,也就是说在不同的表达式中自增自减运算是单独考虑的。
当然在另一些系统中是按照从左到右的顺序求值。
第四次课后作业
一、单选题:
1.为求出s=10!
的值,则变量s的类型应当为。
A)intB)unsigedC)longD)以上三种类型均可
2.已知inti=10;表达式"20-0<=i<=9"的值是____。
A)0B)1C)19D)20
3.已知intx=1,y;执行下述语句后变量x的值是____。
y=++x>5&&++x<10;
A)1B)2C)3D)4
4.为判断字符变量c的值不是数字也不是字母时,应采用下述表达式____。
A)c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122
B)!
(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122)
C)c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122
D)!
(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122)
5.已知intx=5,y=5,z=5;执行语句x%=y+z;后,x的值是____。
A)0B)1C)5D)6
6.使用语句scanf("x=%f,y=%f",&x,&y);输入变量x、y的值(□代表空格),正确的输入是____。
A)1.25,2.4B)1.25□2.4C)x=1.25,y=2.4D)x=1.25□y=2.4
7.已知:
intx,y;doublez;则以下语句中错误的函数调用是。
A)scanf("%d,%lx,%le",&x,&y,&z);B)scanf("%2d*%d%lf",&x,&y,&z);
C)scanf("%x%*d%o",&x,&y);D)scanf("%x%o%6.2f",&x,&y,&z);
二、程序阅读题:
1.以下程序的输出结果是____。
main()
{inta=1;
charc='a';
floatf=2.0;
printf("%d\n",(!
(a==0),f!
=0&&c=='A'));
}
A)0B)1
2.以下程序段的输出结果是。
inta=10,b=50,c=30;
if(a>b)
a=b;
b=c;
c=a;
printf("a=%db=%dc=%d\n",a,b,c);
A)a=10b=50c=10B)a=10b=30c=10
C)a=50b=30c=10D)a=50b=30c=50
3.以下程序的输出结果是。
main()
{inta=0,b=1,c=0,d=20;
if(a)d=d-10;
elseif(!
b)
if(!
c)d=15;
elsed=25;
printf("d=%d\n",d);
}
A)d=10B)d=15C)d=20D)d=25
答案:
一、1、C2、B注释:
先计算算术运算,再从左到右依次比较。
3、B注释:
当通过一个运算对象即可决定逻辑运算&&的结果时,则对另一个运算对象不做处理。
先处理++x,则x=2,由于x>5的结果为假(0),所以&&运算的结果已经可以确定,则(++x<10)这部分不做处理。
4、D5、C6、C
7、D注释:
选项B中*表示一个要原样输入的字符,比如输入12*34512.5.选项C中%*d表示要跳过一列数据。
D中输入数据时不能规定精度,所以D错误。
二、1、A注释:
逗号表达式的结果是用逗号分开的最后一个表达式的值,此题由于c=='A'的值是0,所以逗号表达式的值为0。
2、B注释:
该题的目的是比较if后面的语句在有括号时构成复合语句及没有括号时为单个语句的不同理解。
该题中,由于由于a>b不成立,所以,a=b这句不执行,但是后面的语句如b=c;c=a与if无关,还要继续执行。
3、C注释:
该题注意if-else的配对问题,原程序加括号可以明确其中的配对关系,如下:
if(a)d=d-10;else{if(!
b){if(!
c)d=15;elsed=25;}}
三、程序设计题:
1.求方程
的根,a,b,c的值由键盘输入。
根据
的值,分别给出方程的虚根或实根。
参见课本108页程序。
2.输入年份year,判断是否为闰年,并输出结果。
可用如下C语言表达式:
year%4==0&&year%100!
=0||year%400==0。
若表达式成立(即表达式值为1),则year为闰年;否则,表达式不成立(即值为0),year为平年。
#include
voidmain()
{
intyear;
scanf("%d",&year);
if(year%4==0&&year%100!
=0||year%400==0)
printf("%disnotaleapyear",year);
else
printf("%disaleapyear.\n",year);
}
3.企业发放的奖金根据利润提成。
利润(P)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润P,求应发放奖金总数?
(程序分析:
请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
)
main()
{
longintp;
intbonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf("%ld",&p);
bonus1=100000*0.1;bonus2=bonus1+100000*0.75;
bonus4=bonus2+200000*0.5;
bonus6=bonus4+200000*0.3;
bonus10=bonus6+400000*0.15;
if(p<=100000)
bonus=i*0.1;
elseif(p<=200000)
bonus=bonus1+(p-100000)*0.075;
elseif(p<=400000)
bonus=bonus2+(p-200000)*0.05;
elseif(p<=600000)
bonus=bonus4+(p-400000)*0.03;
elseif(p<=1000000)
bonus=bonus6+(p-600000)*0.015;
else
bonus=bonus10+(p-1000000)*0.01;
printf("bonus=%d",bonus);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 深圳大学 语言 题库