补充函数部分答案.docx
《补充函数部分答案.docx》由会员分享,可在线阅读,更多相关《补充函数部分答案.docx(30页珍藏版)》请在冰豆网上搜索。
补充函数部分答案
补充函数部分答案
C程序设计题库
一、单项选择题
1.基础知识
1、以下说法中正确的是()
A、C语言程序总是从第一个的函数开始执行
B、在C语言程序中,要调用的函数必须在main()函数中定义
C、C语言程序总是从main()函数开始执行
D、C语言程序中的main()函数必须放在程序的开始部分
答案:
C
2、下列字符序列中,可用作C标识符的一组字符序列是()。
A)S.b,sum,average,_aboveB)class,day,lotus_1,2day
C)#md,&12x,month,student_n!
D)D56,r_1_2,name,_st_1
答案:
D
3、以下标识符中,不能作为合法的C用户定义标识符的是()。
A)a3_b3B)voidC)_123D)IF
答案:
B
4、设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(D)
A、6.500000B、6C、5.500000D、6.000000
5、以下的选择中,正确的赋值语句是()。
A)a=1,b=2B)j++C)a=b=5;D)y=int(x)
答案:
C
6、在C语言中,能代表逻辑值“真”的是()。
A)TrueB)大于0的数C)非0整数D)非0的数
答案:
D
7、下列程序的输出结果是()。
main()
{charc1=97,c2=98;
printf("%d%c",c1,c2);
}
A)9798B)97bC)a98D)ab
答案:
B
8、执行下列语句后变量x和y的值是()。
y=10;x=y++;
A)x=10,y=10B)x=11,y=11C)x=10,y=11D)x=11,y=10
答案:
C
9、设a=12,且a定义为整型变量。
执行语句a+=a-=a*=a;后a的值为()。
A)12B)144C)0D)132
答案:
C
10、已知year为整型变量,不能使表达式(year%4==0&&year%100!
=0)||year%400==0的值为“真”的数据是()。
A)1990B)1992C)1996D)2000
答案:
A
11、下列程序的输出结果是()。
main()
{inta=7,b=5;
printf("%d\n",b=b/a);
}
A)0B)5C)1D)不确定值
答案:
A
12.以下关于运算符优先顺序的描述中正确的是()。
A)关系运算符<算术运算符<赋值运算符<逻辑运算符
B)逻辑运算符<关系运算符<算术运算符<赋值运算符
C)赋值运算符<逻辑运算符<关系运算符<算术运算符
D)算术运算符<关系运算符<赋值运算符<逻辑运算符
答案:
C
13、已知i、j、k为int型变量,若从键盘输入:
1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是()
A、scanf("%2d%2d%2d",&i,&j,&k);
B、scanf("%d%d%d",&i,&j,&k);C、scanf("%d,%d,%d",&i,&j,&k);
D、scanf("i=%d,j=%d,k=%d",&i,&j,&k);
答案:
C
14有以下程序
#include
main()
{charc1,c2;
c1=’A’+’8’-‘4’;
c2=’A’+’8’-‘5’;
printf(“%c,%d\n”,c1,c2);
}
已知字母A的ASCII码为65,程序运行后的输出结果是()
(A)E,68(B)D,69(C)E,D(D)输出无定值
答案:
A
15、若有以下类型说明语句:
charw;intx;floaty;doublez;则表达式w*x+z-y的结果类型是()
A、floatB、charC、intD、double
答案:
D
16、关于局部变量,下列说法正确的是()。
A、定义该变量的程序文件中的函数都可以访问。
B、定义该变量的函数中的定义处以下的任何语句都可以访问。
C、定义该变量的复合语句的定义处以下的任何语句都可以访问。
D、局部变量可用于函数之间传递数据。
答案:
D
17.若变量已正确说明为float类型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:
()
A)10<回车>B)10.0,22.0,33.0<回车>
22<回车>
33<回车>
C)10.0<回车>D)1022<回车>
22.033.0<回车>33<回车>
答案:
B
2.三大结构
(1)下列程序的运行结果是()
#include
voidmain()
{
charc1='6',c2='0';
printf("%c,%c,%d\n",c1,c2,c1-c2);
}
A.因程序格式不合法,提示出错信息B.6,0,6
C.6,0,7D.6,0,5
(2)下列程序的运行结果是()
#include
voidmain()
{
doublex=2.0,y;
if(x<0.0)y=0.0;
elseif(x<10.0)y=1.0/x;
elsey=1.0;
printf("%f\n",y);
}
A.0.000000B.0.250000C.0.500000D.1.000000
(3)下列程序的运行结果是()
#include
voidmain()
{
inta=2,b=-1,c=2;
if(b<0)c=0;
elsec=c+1;
printf("%d\n",c);
}
A.0B.1C.2D.有语法错误
(4)下列程序的运行结果是()
#include
voidmain()
{
inta=100;
if(a>0)printf("%d\n",a>100);
elseprintf("%d\n",a<=100);
}
A.0B.1C.100D.-1
(5)下列程序的运行结果是()
#include
voidmain()
{
intx=1,a=0,b=0;
switch(x)
{
case0:
b=b+1;
case1:
a=a+1;
case2:
a=a+1;b=b+1;
}
printf("a=%d,b=%d\n",a,b);
}
A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2
3.函数
1.以下正确的函数定义形式是()。
A.doublefun(intx,inty)
B.doublefun(intx;inty)
C.doublefun(intx,inty);
D.doublefun(intx,y)
答案:
A
2.C语言中,简单变量作为实参时,它和对应形参之间的数据传递方式是()。
A.地址传递B.单向值传递
C.由实参传递给形参,再由形参传递给实参D.由用户指定传递方式
答案:
B
3.在C语言程序中以下正确的描述是()。
A.函数的定义可以嵌套,但函数的调用不可以嵌套
B.函数的定义不可以嵌套,但函数的调用可以嵌套
C.函数的定义和函数的调用均不可以嵌套
D.函数的定义和函数的调用均可以嵌套
答案:
B
4.若数组名作为函数调用的参数,则传递给形参的是()。
A.数组的首地址B.数组第一个元素的值
C.数组中全部元素的值D.数组元素的个数
答案:
A
5.若调用一个函数,且此函数中没有return语句,则正确的说法是()。
A.没有返回值B.返回若干个系统默认值
C.能返回一个用户所希望的函数值D.返回一个不确定的值
答案:
D
6.在C语言中,以下说法正确的是()。
A.实参和与其对应的形参各占用独立的存储单元
B.实参和与其对应的形参共占用一个存储单元
C.只有当实参与其对应的形参同名时才共占用存储单元
D.形参是虚拟的,不占用存储单元
答案:
A
7.以下正确的说法是()。
A.用户若需要调用标准库函数,调用前必须重新定义
B.用户可以重新定义标准库函数,如若此,该函数将失去原有定义
C.系统不允许用户重新定义标准库函数
D.用户若需要使用标准库函数,调用前不必使用预处理命令将该函数所在的头文件包含编译,系统会自动调用。
答案:
B
8.以下不正确的说法是()。
A.实参可以是常量,变量或表达式
B.形参可以是常量,变量或表达式
C.实参可以为任意类型
D.如果形参和实参的类型不一致,以形参类型为准
答案:
B
9.C语言规定,函数返回值的类型是由()决定的。
A.return语句中的表达式类型
B.调用该函数时的主调函数类型
C.调用该函数时由系统临时
D.在定义函数时所指定的函数类型
答案:
D
10.以下正确的函数定义是()。
A.doublefun(intx,inty)B.doublefun(intx,y)
{z=x+y;returnz;}{intz;returnz}
C.fun(x,y)D.doublefun(intx,inty)
{intx,y;doublez;{doublez;
z=x+yreturnz}z=x+y;returnz}
答案:
D
4.数组
1.在C语言中,引用数组元素时,其数组下标的数据类型允许是(C)
A整型常量B整型表达式
C整型常量或整型表达式D任何类型的表达式
2.对以下说明语句的正确理解是(B)
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[3][4];则对a数组元素的非法引用是(D)
Aa[0][2*1]Ba[1][3]Ca[4-2][0]Da[0][4]
4.若:
inta[3][4]={0};则下面正确的叙述是(D)
A只有元素a[0][0]可得到初值0
B此说明语句不正确
C数组a中各元素都可得到初值,但其值不一定为0
D数组a中每个元素均可得到初值0
5.已有定义:
chara[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是(C)
A.数组a和b的长度相同
B.a数组长度小于b数组长度
C.a数组长度大于b数组长度
D.上述说法都不对
6.若有定义语句:
chars[10]="1234567\0\0";,则strlen(s)的值是(A)。
A.7B.8C.9D.10
7.如下代码:
intk,a[3][3]={1,2,3,4,5,6,7,8,9};
for(k=0;k<3;k++)
printf(“%d”,a[k][2-k]);
输出结果为(A)
A357B369C159D147
8.判断字符串a和b是否相等,应当使用(D)
Aif(a==b)Bif(a=b)Cif(strcpy(a,b))Dif(strcmp(a,b)==0)
9.有两个字符数组a、b,则以下正确的输入语句是(B)
Agets(a,b)Bscanf(“%s%s”,a,b);
Cscanf(“%s%s”,&a,&b);Dgets(“a”),gets(“b”);
10.下述描述中错误的是(C)
A字符数组可以存放字符串
B字符数组的字符串可以整体输入、输出
C可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D不可以用关系运算符对字符数组中的字符串进行比较
5.结构体
1.在说明一个结构体变量时系统分配给它的存储空间是(D)
A)该结构体中第一个成员所需存储空间
B)该结构体中最后一个成员所需存储空间
C)该结构体中占用最大存储空间的成员所需存储空间
D)该结构体中所有成员所需存储空间的总和
2.以下对结构体类型变量的定义中不正确的是(D)
A)#defineSTUstructstudentB)structstudent
STU{intnum;
{intnum;floatage;
floatage;}std1;};std1;
C)structD)struct
{intnum;{intnum;
floatage;floatage;}student;
}std1;structstudentstd1;
3.设有以下说明语句
structstu
{inta;floatb;}stutype;
则下面的叙述不正确的是(C)。
A)struct是结构体类型的关键字B)structstu是用户定义的结构体类型
C)stutype是用户定义的结构体类型名D)a和b都是结构体成员名
4.定义以下结构体数组
structc
{intx;
inty;
}s[2]={1,3,2,7};
语句printf("%d",s[0].x*s[1].x)的输出结果为(C)
A)14B)6C)2D)21
5.根据下面的定义,能输出Mary的语句是(B)
structperson
{
charname[9];
intage;
};
structpersonclass[5]={"John",17,"Paul",19,"Mary",18,"Adam",16};
A)printf("%s\n",class[1].name);
B)printf("%s\n",class[2].name);
C)printf("%s\n",class[3].name);
D)printf("%s\n",class[0].name);
6.定义以下结构体数组
struct
{
intnum;
charname[10];
}x[3]={1,"china",2,"USA",3,"England"};
语句printf("\n%d,%s",x[1].num,x[2].name)的输出结果为(D)
A)2,USA
B)3,England
C)1,china
D)2,England
7.执行下面的程序后,输出的结果是(B)
structabc{inta,b,c;};
voidmain()
{structabcs[2]={{1,2,3},{4,5,6}};
intt;
t=s[0].a+s[1].b;
printf("%d\n",t);
}
A)5B)6C)7D)8C
6.指针
1.有以下程序
#include
main()
{intm=1,n=2,*p=&m,*q=&n,*r;
r=p;p=q;q=r;
printf(“%d,%d,%d,%d\n”,m,n,*p,*q);
}
程序运行后的输出结果是(B)
A)1,2,1,2B)1,2,2,1C)2,1,2,1D)2,1,1,2
2.以下选项中正确的语句组是(d)
A)chars[];s=”BOOK!
”;B)char*s;s={”BOOK!
”};
C)chars[10];s=”BOOK!
”;D)char*s;s=”BOOK!
”;
3.以下选项中正确的语句组是
若有以下定义
intx[10],*pt=x;
则对x数组元素的正确应用是(C)
A)*&x[10]B)*(x+10)C)*(pt+3)D)pt+3
4.若有定义语句:
doublex,y,*px,*py,执行了px=&x,py=&y;之后,正确的输入语句是(C)
A)scanf(“%f%f”,x,y);B)scanf(“%f%f”,&x,&y);
C)scanf(“%lf%le”,px,py);D)scanf(“%lf%lf”,x,y);
7.文件
(1)下列关于C语言数据文件的叙述中正确的是(D)
A)文件由ASCII码字符序列组成,C语言只能读写文本文件
B)文件由二进制数据序列组成,C语言只能读写二进制文件
C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
(2)有如下程序
#include
main()
{FILE *fp1;
fp1=fopen("f1.txt","w");
fprintf(fp1,"abc");
fclose(fp1);
}
若文本文件f1.txt中原有内容为:
good,则运行以上程序后文件f1.txt中的内容为(C) A)goodabc B)abcd C)abc D)abcgood
(3)以下叙述中错误的是(D)
A)二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B)在程序结束时,应当用fclose函数关闭已打开的文件
C)在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D)不可以用FILE定义指向二进制文件的文件指针
(4)若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是(B)
A)fopen("A:
\user\abc.txt","r") B)fopen("A:
\\user\\abc.txt","r+")
C)fopen("A:
\user\abc.txt","rb") C)fopen("A:
\\user\\abc.txt","w")
(5)
二、读程序写结果
2.三大结构
3.函数
1.下列程序的执行结果为()。
floatf1(floatx)
{
intk=2;
k=k*x;
returnk;
}
voidmain()
{
floatb=4.3;
printf("%.1f",f1(b));
}
答案:
8.6
2.下面程序的输出是()。
#include
voidmain()
{
charss[10]="12345";
strcat(ss,"6789");
printf("%s\n",ss);
}
答案:
123456789
3.程序执行时,若输入10,程序的输出结果是()。
intfun(intn)
{
if(n==1)
return1;
else
return(n+fun(n-1));
}
main()
{
intx,y;
scanf("%d",&x);
y=fun(x);
printf("%d\n",y);
}
答案:
55
4.下面程序的输出是()。
#include
voidfun(int*s,intm,intn)
{
intt;
while(m{
t=s[m];
s[m]=s[n];
s[n]=t;
m++;
n--;
}
}
voidmain()
{
inta[5]={1,2,3,4,5},k;
fun(a,0,4);
for(k=0;k<5;k++)
printf("%d",a[k]);
}
答案:
54321
5.运行程序时,若从键盘输入asdafaaz67(回车),分析以下程序的输出结果()。
#include
intfun(char*str)
{
inti,j=0;
for(i=0;str[i]!
=’\0’;i++)
if(str[i]!
=’’)
str[j++]=str[i];
str[j]=’\0’;
}
voidmain()
{
charstr[81];
intn;
printf("Inputastring:
");
gets(str);
fun(str);
printf("%s\n",str);
}
答案:
asdafaaz67
6.程序运行后的输出结果是(64)。
#include
intfun()
{
staticintx=1;
x*=2;
returnx;
}
voidmain()
{
inti,s=1;
for(i=1;i<=3;i++)s*=fun();
printf("%d\n",s);
}
7.以下程序的输出结果是(4)
#include
intm=13;
intfun(intx,inty)
{
intm=2;
return(x*y-m);
}
main()
{
inta=7,b=6;
printf("%d",fun(a,b)/m);
}
8.以下程序输出结果为(6)
#include
fun(intx)
{
staticinta=3;
a+=x;
return(a);
}
main()
{
intk=2,m=1,n;
n=fun(k);
n=fun(m);
printf("%d",n);
}
4.数组
1.下面程序的运行结果是_____________
voidmain()
{
inta[6][6],i,j;
for(i=1;i<6;i++)
for(j=