综合练习三.docx
- 文档编号:10457824
- 上传时间:2023-02-11
- 格式:DOCX
- 页数:24
- 大小:22.69KB
综合练习三.docx
《综合练习三.docx》由会员分享,可在线阅读,更多相关《综合练习三.docx(24页珍藏版)》请在冰豆网上搜索。
综合练习三
综合练习三
一、填空(共10题,合计10分)
1.
设c语言中,int类型数据占2个字节,则long类型数据占________________个字节,short类型数据占________________个字节。
2.
intx=2,y=3,z=4;则表达式!
x+y>z的值为________________。
3.
预处理命令行都必须以________________号开始。
4.
intx;x=(3+4)%5-6,则x的值为________________。
5.
如果函数不要求带回值,可用________________来定义函数返回值为空。
6.
静态变量和外部变量的初始化是在________________阶段完成的,而自动变量的赋值是在________________时进行的。
7.
若有以下数组a,数组元素:
a[0]~a[9],其值为941282107513该数组可用的最大下标值是________________.
8.
下列语句输出的结果是________________,inta=-1;printf("%x",a);
9.
若有以下定义和语句:
inta[5]={1,3,5,7,9},*p;p=&a[2];则++(*p)的值是________________。
10.
一个C源程序中至少应包括一个________________函数。
二、判断(共20题,合计20分)
下列描述正确打(√),错误打(×)。
1.
若有说明intc;则while(c=getchar());是正确的C语句。
( )
2.
#define和printf都不是C语句。
( )
3.
charc[]="VeryGood";是一个合法的为字符串数组赋值的语句。
( )
4.
C程序中有调用关系的所有函数必须放在同一个源程序文件中。
( )
5.
若有intⅰ=10,j=0;则执行完语句if(j=0)ⅰ++;elseⅰ--;ⅰ的值为11。
( )
6.
在C语言中,此定义和语句是合法的:
enumaa{a=5,b,c}bb;bb=(enumaa)5;( )
7.
在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。
( )
8.
在TurboC中,下面的定义和语句是合法的:
file*fp;fp=fopen("a.txt","r");( )
9.
inti,*p=&i;是正确的C说明。
( )
10.
inti=20;switch(i/10){case2:
printf("A");case1:
printf("B");}的输出结果为A。
( )
11.
函数strlen("ASDFG\n")的值是7。
( )
12.
char*p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl"。
( )
13.
若有定义和语句:
inta[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++)sum+=a[i][2-i];则sum=21。
( )
14.
用fopen("file","r+");打开的文件"file"可以进行修改。
( )
15.
共同体变量所占的内存长度等于最长的成员的长度。
( )
16.
C语言中只能逐个引用数组元素而不能一次引用整个数组。
( )
17.
如果有一个字符串,其中第十个字符为'\n',则此字符串的有效字符为9个。
( )
18.
如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。
( )
19.
整数-32100可以赋值给int型和longint型变量。
( )
20.
C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的。
( )
三、单项选择(共20题,合计20分)
下列选项中,只有一个是正确的。
1.
下列四个选项中,均是C语言关键字的选项是()。
A.
autoenuminclude
B.
switchtypedefcontinue
C.
signedunionscanf
D.
ifstructtype
2.
若chara[10];已正确定义,以下语句中不能从键盘上给a数组的所有元素输入值的语句是()。
A.
gets(a);
B.
scanf("%s",a);
C.
for(i=0;i<10;i++)a[i]=getchar();
D.
a=getchar();
3.
下列变量说明语句中,正确的是()。
A.
char:
abc;
B.
chara;b;c;
C.
intx;z;
D.
intx,z;
4.
下面判断正确的是()。
A.
char*a="china";等价于char*a;*a="china";
B.
charstr[10]={"china"};等价于charstr[10];str[]={"china"};
C.
char*s="china";等价于char*s;s="china";
D.
charc[4]="abc",d[4]="abc";等价于charc[4]=d[4]="abc";
5.
若有定义:
int*p[3];,则以下叙述中正确的是()。
A.
定义了一个基类型为int的指针变量p,该变量具有三个指针
B.
定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C.
定义了一个名为*p的整型数组,该数组含有三个int类型元素
D.
定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
6.
以下叙述正确的是()。
A.
可以把define和if定义为用户标识符
B.
可以把define定义为用户标识符,但不能把if定义为用户标识符
C.
可以把if定义为用户标识符,但不能把define定义为用户标识符
D.
define和if都不能定义为用户标识符
7.
若以"a+"方式打开一个已存在的文件,则以下叙述正确的是()。
A.
文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作
B.
文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作
C.
文件打开时,原有文件内容被删除,只可作写操作
D.
以上各种说法皆不正确
8.
已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!
y)的值是()。
A.
0
B.
语法错
C.
1
D.
"假"
9.
以下正确的说法是()。
A.
定义函数时,形参的类型说明可以放在函数体内
B.
return后边的值不能为表达式
C.
如果函数值的类型与返回值类型不一致,以函数值类型为准
D.
如果形参与实参类型不一致,以实参类型为准
10.
利用fseek函数可以实现的操作是()。
A.
改变文件的位置指针
B.
文件的顺序读写
C.
文件的随机读写
D.
以上答案均正确
11.
下列说法不正确的是()。
A.
主函数main中定义的变量在整个文件或程序中有效
B.
不同函数中,可以使用相同名字的变量
C.
形式参数是局部变量
D.
在一个函数内部,可以在复合语句中定义变量,这些变量只在复合语句中有效
12.
若有说明:
inta[][4]={0,0};则下面不正确的叙述是()。
A.
数组a的每个元素都可得到初值0
B.
二维数组a的第一维大小为1
C.
因为二维数组a中第二维大小的值除经初值个数的商为1,故数组a的行数为1
D.
有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
13.
逻辑运算符两侧运算对象的数据类型()。
A.
只能是0或1
B.
只能是0或非0正数
C.
只能是整型或字符型数据
D.
可以是任何类型的数据
14.
下列程序的输出结果为()。
main( ){intm=7,n=4;floata=38.4,b=6.4,x;x=m/2+n*a/b+1/2;printf("%f\n",x);}
A.
27.000000
B.
27.500000
C.
28.000000
D.
28.500000
15.
在C语言中,形参的缺省存储类是()。
A.
auto
B.
register
C.
static
D.
extern
16.
以下叙述中不正确的是()。
A.
预处理命令行都必须以#号开始
B.
在程序中凡是以#号开始的语句行都是预处理命令行
C.
C程序在执行过程中对预处理命令行进行处理
D.
以下是正确的宏定义#defineIBM_PC
17.
语句while(!
E);中的表达式!
E等价于()。
A.
E==0
B.
E!
=1
C.
E!
=0
D.
E==1
18.
设j和k都是int类型,则for循环语句for(j=0,k=-1;k=1;j++,k++)printf("****\n");()。
A.
循环结束的条件不合法
B.
是无限循环
C.
循环体一次也不执行
D.
循环体只执行一次
19.
选择结构中的条件与循环结构中循环成立的条件,在写法上可以是任一表达式,但其值只能被判断为“真”或“假”。
哪个数作为逻辑“假”值()。
A.
-1
B.
1
C.
非零的数
D.
0
20.
设有如下定义:
structsk{inta;floatb;}data,*p;若要使p指向data中的a域,正确的赋值语句是()。
A.
p=(structsk*)&data.a;
B.
p=(structsk*)data.a;
C.
p=&data.a;
D.
*p=data.a;
四、多项选择(共10题,合计10分)
下列选项中,有一个或多个是正确的。
1.
已定义c为字符型变量,则下列语句中错误的是()。
A.
c='97';
B.
c="97";
C.
c=97;
D.
c="a";
2.
以下关于typedef的叙述正确的是()。
A.
用typedef可以定义各种类型名,但不能用来定义变量
B.
用typedef可以增加新类型
C.
用typedef只是将已存在的类型用一个新的名字来代表
D.
使用typedef便于程序的通用
3.
以下描述错误的是()。
A.
continue语句的作用是重新开始一次循环体的执行
B.
只能在循环体内和switch语句体内使用break语句
C.
在循环体内使用break语句和continue语句的作用相同
D.
从多重循环嵌套中退出是,只能使用goto语句
4.
以下对switch语句和break语句中描述错误的有()。
A.
在switch语句中必须使用break语句
B.
break语句只能用于switch语句
C.
在switch语句中,可以根据需要使用或不使用break语句
D.
break语句是switch语句的一部分
5.
以下关于数组描述错误的是()。
A.
数组的大小是固定的,但可以有不同的类型的数组元素
B.
数组的大小是可变的,但所有数组元素的类型必须相同
C.
数组的大小是固定的,所有数组元素的类型必须相同
D.
数组的大小是可变的,可以有不同的类型的数组元素
6.
以下描述正确的是()。
A.
使用while和do-while循环时,循环变量初始话的操作应在循环体语句之前完成
B.
while循环是先判断表达式,后执行循环语句
C.
do-while和for循环均是先执行循环语句,后判断表达式
D.
for,while和do-while循环中的循环体均可以由空语句构成
7.
以下用户标识符,其中合法的是()。
A.
return
B.
f2_G3
C.
A3-3
D.
abc
8.
以下选项中合法的表达式是()。
A.
0<=x<100
B.
i=j==0
C.
(char)(65+3)
D.
x+1=x+1
9.
以下描述正确的是()。
A.
调用函数时,实参可以是表达式
B.
调用函数时,实参与形参可以共用内存单元
C.
调用函数时,将为形参分配内存单元
D.
调用函数时,实参与形参的类型必须一致
10.
在定义inta[2][3];之后,对a的引用正确的有()。
A.
a[0][2]
B.
a[1,3]
C.
a[1>2][!
1]
D.
a[2][0]
五、程序填空(共2题,合计10分)
请在“**********SPACE**********”
语句的下一行完成程序填空。
1.
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
将长整型数中每一位上为奇数的数依次取出,构成一个新数
放在t中。
高位仍在高位,低位仍在低位。
-------------------------------------------------------*/
#include
#include
voidfun(longs,long*t)
{
intd;
longsl=1;
/***********SPACE***********/
________________=0;
while(s>0)
{
/***********SPACE***********/
d=________________;
if(d%2)
{
/***********SPACE***********/
*t=________________+*t;
/***********SPACE***********/
sl________________10;
}
s/=10;
}
}
main()
{
longs,t;
printf("\nPleaseenters:
");scanf("%ld",&s);
fun(s,&t);
printf("Theresultis:
%ld\n",t);
}
2.
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
从低位开始取出长整型变量s中奇数位上的数,依次构成一
个新数放在t中。
-------------------------------------------------------*/
#include
#include
voidfun(longs,long*t)
{
longsl=10;
s/=10;
/***********SPACE***********/
*t=s________________10;
while(s>0)
{
/***********SPACE***********/
s=________________;
/***********SPACE***********/
*t=s%10*sl________________;
/***********SPACE***********/
sl=sl________________10;
}
}
main()
{
longs,t;
printf("\nPleaseenters:
");
scanf("%ld",&s);
fun(s,&t);
printf("Theresultis:
%ld\n",t);
}
六、程序改错(共2题,合计10分)
程序代码中,“**********FOUND**********”
语句的下一行有错误。
1.
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
找出大于m的最小素数,并将其作为函数值返回。
------------------------------------------------------*/
#include
#include
intfun(intm)
{
inti,k;
for(i=m+1;;i++)
{
/**********FOUND**********/
for(k=1;k
请在此处填写答案:
_______________________________
/**********FOUND**********/
if(i%k!
=0)break;
请在此处填写答案:
_______________________________
/**********FOUND**********/
if(k
请在此处填写答案:
_______________________________
/**********FOUND**********/
returnk;
请在此处填写答案:
_______________________________
}
}
main()
{
intn;
scanf("%d",&n);
printf("%d\n",fun(n));
}
2.
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
在字符串str中找出ASCii码值最小的字符,将其放在第一
个位置上,并将该字符前的原字符向后顺序移动。
例如:
调用fun函数之前给字符串输入:
eBCDAFGH,调用后字符串
中的内容为:
AeBCDFGH。
------------------------------------------------------*/
#include
#include
fun(char*p)
{
charmin,*q=p;inti=0;
min=p[i];
while(p[i]!
=0)
{
if(min>p[i])
{
min=p[i];
/**********FOUND**********/
p=p+i;
请在此处填写答案:
_______________________________
}
i++;
}
/**********FOUND**********/
while(q
请在此处填写答案:
_______________________________
{
/**********FOUND**********/
*q=(q-1);
请在此处填写答案:
_______________________________
q--;
}
p[0]=min;
}
main()
{
charstr[80];
printf("Enterastring:
");gets(str);
printf("\nTheoriginalstring:
");puts(str);
fun(str);
printf("\nThestringaftermoving:
");puts(str);
}
七、程序设计(共2题,合计20分)
请在**********Program**********
和**********End**********范围内填写程序代码。
1.
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
求小于lim的所有素数并放在aa数组中,该函数返回
所求出素数的个数。
------------------------------------------------*/
#include
#include
#defineMAX100
voidwwjt();
intfun(intlim,intaa[MAX])
{
/**********Program**********/
/**********End**********/
}
main()
{
intlimit,i,sum;
intaa[MAX];
printf("Pleaseinputainteger:
");
scanf("%d",&limit);
sum=fun(limit,aa);
for(i=0;i if(i%10==0&&i! =0)printf("\n"); printf("%5d",aa[i]); } wwjt(); } voidwwjt() { inti,j,array[100],sum,lim; FILE*rf,*wf; rf=fopen("in.dat","r"); wf=fopen("out.dat","w"); for(j=0;j<=5;j++) { fscanf(rf,"%d",&lim); sum=fun(lim,array); for(i=0;i fprintf(wf,"%7d",array[i]); fprintf(wf,"\n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 综合 练习