C语言题集三Word格式.docx
- 文档编号:22580845
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:75
- 大小:61.87KB
C语言题集三Word格式.docx
《C语言题集三Word格式.docx》由会员分享,可在线阅读,更多相关《C语言题集三Word格式.docx(75页珍藏版)》请在冰豆网上搜索。
A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B)若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正确调用函数f
C)对于以上程序,编译时系统会提示出错信息:
提示对f函数重复说明
D)函数f无返回值,所以可用void将其类型定义为无返回值型
8.C语言允许函数类型缺省定义,此时函数值隐含的类型是
A)float
B)int
C)long
D)double
9.以下程序有语法错误,有关错误原因的正确说法是
{intG=5,k;
voidprt_char();
...
k=prt_char(G);
A)语句voidprt_char();
有错,它是函数调用语句,不能用void说明
B)变量名不能使用大写字母
C)函数说明和函数调用语句之间有矛盾
D)函数名不能使用下划线
10.以下叙述中不正确的是
A)在不同的函数中可以使用相同的名字的变量
B)函数中的形式参数是局部变量
C)在一个函数内定义的变量只在本函数范围内有效
D)在一个函数内的复合语句中定义的变量在本函数范围内有效
11.以下正确的说法是
A)用户若需调用标准库函数,调用前必须重新定义
B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义
C)系统根本不允许用户重新定义标准库函数
D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动调用
12.以下正确的函数头定义形式是
A)doublefun(intx,inty)
B)doublefun(intx;
inty)
C)doublefun(intx,inty);
D)doublefun(intx,y);
13.有以下程序
fun(intx,inty,intz)
{z=x*y;
{inta=4,b=2,c=6;
fun(a,b,c);
%d"
c);
A)16
B)6
C)8
D)12
14.下列函数的运行结果是
{inti=2,p;
intj,k;
j=i;
k=++i;
p=f(j,k);
p);
intf(inta,intb)
{intc;
if(a>
b)c=1;
elseif(a==b)c=0;
elsec=-1;
return(c);
A)-1
B)1
D)编译出错,无法运行
15.以下对C语言函数的有关描述中,正确的是
A)在C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参
B)C函数既可以嵌套定义又可以递归调用
C)函数必须有返回值,否则不能使用函数
D)函数必须有返回值,返回值类型不定`
16.有以下程序:
voidfun(inta,intb,intc)
{a=456,b=567,c=678;
}
{intx=10,y=20,z=30;
fun(x,y,z);
%d,%d,%d\n"
x,y,z);
输出结果是
A)30,20,10
B)10,20,30
C)456,567,678
D)678,567,456
17.有以下函数:
fun(char*p)
{returnp;
该函数的返回值是
A)无确切值
B)形参p中存放的地址值
C)一个临时存储单元的地址
D)形参p自身的地址值
18.以下不正确的说法是
C语言规定:
A)实参可以是常量,变量或表达式
B)形参可以是常量,变量或表达式
C)实参可以为任何类型
D)形参应与其对应的实参类型一致
19.以下程序的输出结果是
longfun(intn)
{longs;
if(n==1||n==2)s=2;
elses=n-fun(n-1);
returns;
%ld\n"
fun(3));
A)1
B)2
C)3
D)4
20.以下所列的各函数首部中,正确的是
A)voidplay(var:
Integer,varb:
Integer)
B)voidplay(inta,b)
C)voidplay(inta,intb)
D)Subplay(aasinteger,basinteger)
21.下面函数调用语句含有实参的个数为
func((exp1,exp2),(exp3,exp4,exp5));
C)4
D)5
22.设有如下函数
fun(floatx)
{
\n%d"
x*x);
则函数的类型是
A)与参数x的类型相同
B)是void
C)是int型
D)无法确定
23.C语言规定,函数返回值的类型是由
A)return语句中的表达式类型所决定
B)调用该函数时的主调函数类型所决定
C)调用该函数时系统临时决定
D)在定义该函数时所指定的函数类型所决定
24.下面对C语言的描述中,正确的是
A)函数一定有返回值,否则无法使用函数
B)C语言函数既可以嵌套定义又可以递归调用
C)在C语言中,调用函数时,只能将实参的值传递给形参
D)C语言程序中有调用关系的所有函数都必须放在同一源程序文件中
25.阅读下面程序段,则执行后的结果为
#include"
stdio.h"
{intm=4,n=2,k;
k=fun(m,n);
k);
fun(intm,intn)
{return(m*m*m-n*n*n);
A)64
B)8
C)56
D)0
26.阅读下面程序段,则执行后输出的结果是
{charfun(char,int);
chara=′A′;
intb=13;
a=fun(a,b);
putchar(a);
charfun(chara,intb)
{chark;
k=a+b;
returnk;
A)A
B)M
C)N
D)L
27.编写求两个双精度数之和的函数,选项中正确的是
A)doubleadd(doublea,doubleb)
{doubles;
s=a+b;
returns;
B)doubleadd(doublea,b)
return(s);
C)doubleadd(doubleadoubleb)
s=a+b;
returns;
D)doubleadd(a,b)
{doublea,b,s;
return(s);
1.阅读下面程序,则程序的执行结果为【1】。
{inta=30,b=20,z;
z=fun(a+b,a-b);
z);
fun(inta,intb)
{intz;
z=a/b;
returnz;
2.函数fun的功能是:
根据以下公式求p的值,结果由函数值返回。
m与n为两个正数且要求m>
n。
例如:
m=12,n=8时,运行结果应该是495.000000。
请在题目的空白处填写适当的程序语句,将该程序补充完整。
conio.h>
floatfun(intm,intn)
{inti;
doublep=1.0;
=m;
i++)【2】;
=n;
i++)【3】;
=m-n;
i++)p=p/i;
returnp;
main()
{clrscr();
printf("
p=%f\n"
fun(12,8));
第2章指针
选择题
1.若有语句int*point,a=4;
和point=&
a;
下面均代表地址的一组选项是
A)a,point,*&
a
B)&
*a,&
a,*point
C)*&
point,*point,&
D)&
a,&
*point,point
2.以下程序的输出结果是
voidprt(int*x,int*y,int*z)
{printf("
++*x,++*y,*(z++));
{inta=10,b=40,c=20;
prt(&
b,&
c);
A)11,42,31
12,22,41
B)11,41,20
12,42,20
C)11,21,40
11,21,21
D)11,41,21
12,42,22
3.有以下函数
charfun(char*p)
A)无确切的值
B)形参p中存放的地址值
4.若说明int*p,n;
则通过语句scanf能够正确读入数据的程序段是
A)p=&
n;
scanf("
&
p);
B)p=&
*p);
C)scanf("
D)p=&
5.设有定义:
intn=0,*p=&
n,**q=&
p,则下列选项中正确的赋值语句是
A)p=1;
B)*q=2;
C)q=p;
D)*p=5;
6.下列程序的输出结果是
intb=2;
intfunc(int*a)
{b+=*a;
return(b);
{inta=2,res=2;
res+=func(&
a);
res);
D)10
7.执行以下程序后,a,b的值分别为
{inta,b,k=4,m=6,*p1=&
k,*p2=&
m;
a=p1==&
b=(*p1)/(*p2)+7;
a=%d\n"
a);
b=%d\n"
b);
A)-1,5
B)1,6
C)0,7
D)4,10
8.以下程序有错,错误原因是
{int*p,i;
char*q,ch;
p=&
i;
q=&
ch;
*p=40;
*p=*q;
......
A)p和q的类型不一致,不能执行*p=*q;
语句
B)*p中存放的是地址值,因此不能执行*p=40;
C)q没有指向具体的存储单元,所以*q没有实际意义
D)q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;
没有意义,可能会影响后面语句的执行结果
9.若有说明:
int*p,m=5,n;
以下正确的程序段是
*p)
n);
*p=n;
*p=m
10.有如下程序段
int*p,a=10,b=1;
a=*p+b;
执行该程序段后,a的值为
A)12
B)11
C)10
D)编译出错
11.以下程序执行后a的值是
{intx,y=252,i=386,*m=&
y,*z=&
x=(z==y);
x);
A)252
C)0
D)运行时出错,x无定值
12.请选出正确的程序段
A)int*p;
…
B)int*s,k;
*s=100;
C)int*s,k;
char*p,c;
s=&
k;
c;
*p=’a′;
D)int*s,k;
s=p;
*s=1;
13.以下程序的运行结果是
sub(intx,inty,int*z)
{*z=y-x;
{inta,b,c;
sub(10,5,&
sub(7,a,&
b);
sub(a,b,&
%4d,%4d,%4d\n"
a,b,c);
A)5,2,3
B)-5,-12,-7
C)-5,-12,-17
D)5,-2,-7
14.已有变量定义和函数调用语句:
inta=25;
print_value(&
下面函数的正确输出结果是
voidprint_value(int*x)
++*x);
A)23
B)24
C)25
D)26
15.下列程序的运行结果是
voidfun(int*a,int*b)
{int*k;
k=a;
a=b;
b=k;
{inta=2004,b=9,*x=&
a,*y=&
b;
fun(x,y);
%d%d"
a,b);
A)20049
B)92004
C)00
D)编译时出错
16.下面程序应能对两个整型变量的值进行交换。
以下正确的说法是
{inta=10,b=20;
(1)a=%d,b=%d\n"
swap(&
(2)a=%d,b=%d\n"
swap(intp,intq)
{intt;
t=p;
p=q;
q=t;
A)该程序完全正确
B)该程序有错,只要将语句swap(&
中的参数改为a,b即可
C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可
D)以上说法都不对
17.已知inta;
则下面的说明指针变量p的语句正确的是
A)intp=&
B)int*p=a
C)int*p=&
D)int*p=*a
18.已知char**t;
则变量t是
A)指向char变量的指针
B)指向指针的char变量
C)指向指针的指针
19.阅读下面程序,执行后的结果为
{intk;
k=5;
*a=k;
*b=*a+k;
{int*a,*b,x=10,y=15;
a=&
x;
b=&
y;
fun(a,b);
%d,%d\n"
*a,*b);
A)10,15
B)5,15
C)5,10
D)15,10
20.阅读下面程序,在程序执行后的结果为
int*fun(int*a,int*b)
{intm;
m=*a;
m+=*b-3;
return(&
m);
{intx=21,y=35,*a=&
x,*b=&
int*k;
k=fun(a,b);
*k);
A)53
B)21
C)35
D)14
填空题:
1.函数voidfun(float*sn,intn)的功能是:
根据以下公式计算S,计算结果通过形参指针sn传回;
n通过形参传入,n的值大于等于0。
请填空。
voidfun(float*sn,intn)
{floats=0.0,w,f=-1.0;
inti=0;
for(i=0;
i<
i++)
{f=【1】*f;
w=f/(2*i+1);
s+=w;
【2】=s;
2.下面的程序实现的是指针p所指向的地址的n个数中,求出最大的和最小的数据,请填空。
fun(int*p,intn)
{int*q;
intmax,min;
max=min=*p;
for(q=p;
【3】;
q++)
if(【4】)max=*q;
elseif(【5】)min=*q;
第3章数组
1.假定int类型变量占用两个字节,其有定义:
intx[10]={0,2,4};
,则数组x在内存中所占字节数是
A)3
D)20
2.对以下说明语句的正确理解是
inta[10]={6,7,8,9,10};
A)将5个初值依次赋给a[1]至a[5]
B)将5个初值依次赋给a[0]至a[4]
C)将5个初值依次赋给a[6]至a[10]
D)因为数组长度与初值的个数不相同,所以此语句不正确
3.若有说明:
inta[][4]={0,0};
则下面不正确的叙述是
A)数组a的每个元素都可得到初值0
B)二维数组a的第一维大小为1
C)当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小
D)只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值
4.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是
{int*p,*q,a,b;
inputa:
"
);
A)*p表示的是指针变量p的地址
B)*p表示的是变量a的值,而不是变量a的地址
C)*p表示的是指针变量p的值
D)*p只能用来说明p是一个指针变量
5.有如下说明
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是
A)*p+9
B)*(p+8)
C)*p+=9
D)p+8
6.若有以下调用语句,则不正确的fun函数的首部是
{…
inta[50],n;
fun(n,&
a[9]);
A)voidfun(intm,intx[])
B)voidfun(ints,inth[41])
C)voidfun(intp,int*s)
D)voidfun(intn,inta)
7.若有说明inta[3][4];
则a数组元素的非法引用是
A)a[0][2*1]
B)a[1][3]
C)a[4-2][0]
D)a[0][4]
8.C语言中,引用数组元素时,其数组下标的数据类型允许是
A)整型常量
B)整型表达式
C)整型常量或整型表达式
D)任何类型的表达式
9.下列程序执行后的输出结果是
voidfunc(int*a,intb[])
{b[0]=*a+6;
{inta,b[5];
a=0;
b[0]=3;
func(&
a,b);
b[0]);
A)6
B)7
D)9
10.以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序
voidsort(inta[],intn)
{inti,j,t;
n-1;
i++)
for(j=i+1;
j<
j++)
if(a[i]<
a[j])
{t=a[i];
a[i]=a[j];
a[j]=t;
{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&
aa[3],5);
10;
%d,"
aa[i]);
\n"
A)1,2,3,4,5,6,7,8,9,10,
B)10,9,8,7,6,5,4,3,2,1,
C)1,2,3,8,7,6,5,4,9,10,
D)1,2,10,9,8,7,6,5,4,3,
11.执行下面的程序段后,变量k中的值为
intk=3,s[2];
s[0]=k;
k=s[1]*10;
A)不定值
B)33
C)30
12.以下函数返回a所指数组中最大值所在的下标值
fun(int*a,intn)
{inti,j=0,p;
p=j;
for(i=j;
if(a[i]>
a[p])_________;
return(p);
在下划线处应
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 题集三