函数指针与结构体练习题参考答案Word格式文档下载.docx
- 文档编号:17065648
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:17
- 大小:21.07KB
函数指针与结构体练习题参考答案Word格式文档下载.docx
《函数指针与结构体练习题参考答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《函数指针与结构体练习题参考答案Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
标识的控制行都是预处理指令
d)C语言的编译预处理就是对源程序进行初步的语法检查
8.在"
文件包含"
预处理语句的使用形式中,当#include后面的文件名用<
>
(尖括号)括起时,找寻被包含文件的方式是_______.
a)仅仅搜索当前目录
b)仅仅搜索源程序所在目录
c)直接按系统设定的标准方式搜索目录
d)先在源程序所在目录搜索,再按照系统设定的标准方式搜索
9.
当调用函数时,实参是一个数组名,则向函数传送的是_____.
A.数组的长度B.数组的首地址C.数组每一个元素的地址D.数组每个元素中的值
10.函数的值通过return语句返回,下面关于return语句的形式描述错误的是_____.
A.return表达式;
B.return(表达式);
C.一个return语句可以返回多个函数值D.一个return语句只能返回一个函数值
11.设函数fun的定义形式为
voidfun(charch,floatx){…}
则以下对函数fun的调用语句中,正确的是_____.
A.fun("
abc"
3.0);
B.t=fun('
D'
16.5);
C.fun('
65'
2.8);
D.fun(32,32);
12.以下程序的输出结果是_____.
voidreverse(inta[],intn)
{inti,t;
for(i=0;
i<
n/2;
i++)
{t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
main()
{intb[10]={1,2,3,4,5,6,7,8,9,10};
inti,s=0;
reverse(b,8);
for(i=6;
10;
i++)s+=b[i];
%d\n"
s);
A.22B.10C.34D.30
13.阅读下列程序,则运行结果为_____.
fun()
{staticintx=5;
x++;
returnx;
{inti,x;
3;
x=fun();
%d\n"
x);
A.5B.6C.7D.8
14.若使用一维数组名作函数实参,则以下正确的说法是_____.
A.必须在主调函数中说明此数组的大小
B.实参数组类型与形参数组类型可以不匹配
C.在被调用函数中,不需要考虑形参数组的大小
D.实参数组名与形参数组名必须一致
15.在C语言中,定义函数时函数的类型可以缺省,此时函数的隐含类型是_____.
A.voidB.intC.floatD.double
16.在C语言中,形参的缺省存储类别是().
A.autoB.registerC.staticD.extern
17.以下关于字符串的叙述中正确的是_____.
A.C语言中有字符串类型的常量和变量
B.两个字符串中的字符个数相同时才能进行字符串大小的比较
C.可以用关系运算符对字符串的大小进行比较
D.空串一定比空格打头的字符串小
18.阅读程序,选择程序的运行结果。
#include<
intTry(intn)
{
if(n>
0)
return(n*Try(n-2));
else
return1;
voidmain()
{
intx;
x=Try(5);
printf(“%d\n”,x);
A.15B.120C.1D.前面三个答案都是错的
(二)填空题
1.以下程序的运行结果是maxis2.
#include<
max(intx,inty)
{intz;
z=(x>
y)?
x:
y;
return(z);
{inta=1,b=2,c;
c=max(a,b);
maxis%d\n"
c);
2.函数gongyu的作用是求整数num1和num2的最大公约数,并返回该值。
请填空。
gongyu(intnum1,intnum2)
{inttemp,a,b;
if(num1(_____)num2)
{temp=num1;
num1=num2;
num2=temp;
a=num1;
b=num2;
while(____)
{temp=a%b;
a=b;
b=temp;
return(a);
3.以下程序的运行结果是A+B=9.
inta=5;
intb=7;
{inta=4,b=5,c;
c=plus(a,b);
A+B=%d\n"
plus(intx,inty)
z=x+y;
4.以下程序的运行结果是_______.
{incx();
incy();
incx();
incx()
intx=0;
x=%d\t"
++x);
incy()
{staticinty=0;
\ny=%d\n"
++y);
}
答案:
x=1
y=1
x=1
y=2
y=3
5.以下程序功能是求两个正整数的最大公约数。
#include<
main()
intr,m,n,_____;
scanf("
%d%d"
&
m,&
n);
if(m<
n)
________________
r=m%n;
while(r)
{m=n;
n=r;
r=____;
printf("
n);
指针
1.若有以下定义,则对a数组元素的正确引用是_________.
inta[5],*p=a;
a)*&
a[5]b)a+2c)*(p+5)d)*(a+2)
2.若有定义:
inta[2][3],则对a数组的第i行j列元素地址的正确引用为______.
a)*(a[i]+j)b)(a+i)c)*(a+j)d)a[i]+j
3.若有以下定义,则p+5表示_______.
inta[10],*p=a;
a)元素a[5]的地址b)元素a[5]的值
c)元素a[6]的地址d)元素a[6]的值
4.下面程序段的运行结果是_________.
char*s="
abcde"
;
s+=2;
%d"
a)cdeb)字符'
c'
c)字符'
的地址d)无确定的输出结果
5.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确
执行的赋值语句是________.
a)c=*p1+*p2;
b)p2=cc)p1=p2d)c=*p1*(*p2);
6.以下正确的程序段是_________.
a)charstr[20];
b)char*p;
scanf("
%s"
str);
p);
c)charstr[20];
d)charstr[20],*p=str;
str[2]);
p[2]);
7.若有说明语句
chara[]="
Itismine"
char*p="
则以下不正确的叙述是________.
a)a+1表示的是字符t的地址
b)p指向另外的字符串时,字符串的长度不受限制
c)p变量中存放的地址值可以改变
d)a中只能存放10个字符
8.下面程序的运行结果是_______.
string.h>
char*s1="
AbDeG"
char*s2="
AbdEg"
s1+=2;
s2+=2;
strcmp(s1,s2));
a)正数b)负数c)零d)不确定的值
9.下面程序的运行结果是_______.
fun(char*w,intn)
{chart,*s1,*s2;
s1=w;
s2=w+n-1;
while(s1<
s2){t=*s1++;
*s1=*s2--;
*s2=t;
{charp[]="
1234567"
//这里存在错误,通过字符指针无法改变字符串常量的值,因此改为数组
fun(p,strlen(p));
puts(p);
a)7654321b)1714171c)1711717d)7177171
10.变量的指针,其含义是指该变量的_________.
a)值b)地址
c)名d)一个标志
11.若有语句int*point,a=4;
和point=&
a;
下面均代表地址的一组选项是_____.
a)a,point,*&
ab)&
*a,&
a,*point
c)*&
point,*point,&
ad)&
a,&
*point,point
12.若有说明;
int*p,m=5,n;
以下正确的程序段的是________.
a)p=&
n;
b)p=&
p);
*p);
c)scanf("
d)p=&
*p=n;
*p=m;
13.若有以下定义,则对a数组元素的正确引用是_____.
A.*&
a[5]B.a+2C.*(p+2)D.*(a+5)
14.下列程序执行后的输出结果是_____.
{inta[3][3],*p,i;
p=&
a[0][0];
for(i=1;
i<
9;
i++)p[i]=i+1;
a[1][2]);
A.3B.6C.9D.随机数
15.下面程序段的运行结果是_____.(该题题目有错,而且考的内容偏了,是一题面试题)
char*p="
abcdefgh"
p+=3;
strlen(strcpy(p,"
ABCD"
)));
A.8B.12C.4D.7
1.以下程序的功能是:
通过指针操作,找出三个整数中的最小值并输出。
#include"
stdlib.h"
{int*a,*b,*c,num,x,y,z;
a=&
x;
b=&
c=&
z;
输入3个整数:
"
);
%d%d%d"
a,b,c);
%d,%d,%d\n"
*a,*b,*c);
num=*a;
if(*a>
*b)num=*b;
if(num>
*c)num=*c;
输出最小整数:
num);
2.下面程序段的运行结果是hELLO!
.
chars[80],*sp="
HELLO!
sp=strcpy(s,sp);
s[0]='
h'
puts(sp);
3.下面程序段的运行结果是ef.
charstr[]="
abc\0def\0ghi"
*p=str;
p+5);
4.下面程序的功能是将两个字符串s1和s2连接起来。
#include<
{chars1[80],s2[80];
gets(s1);
gets(s2);
conj(s1,s2);
puts(s1);
conj(char*p1,char*p2)
{char*p=p1;
while(*p1)p1++;
while(*p2){*p1=*p2;
p1++;
p2++;
*p1='
\0'
_return0_________;
//可以省略不要
5.若有定义:
inta[]={2,4,6,8,10,12},*p=a;
则*(p+1)的值是__4____.*(a+5)的值是__12_______.
6.若有以下定义:
inta[2][3]={2,4,6,8,10,12};
则a[1][0]的值是__8___.*(*(a+1)+0))的值是___8___.
7.以下程序将数组a中的数据按逆序存放,请填空。
#defineM8
{inta[M],i,j,t;
M;
i++)scanf("
a+i);
i=0;
j=M-1;
while(i<
j)
t=*(a+i);
*(a+i)=*(a+j);
*(a+j)=t;
i++;
j--;
i++)printf("
%3d"
*(a+i));
8.若有定义:
inta[3][5],i,j;
(且0<
=i<
3,0<
=j<
5),则a数组中任一元素可用
五种形式引用。
它们是:
(1)a[i][j]
(2)*(a[i]+j)
(3)*(*(a+i)+j);
(4)(*(a+i))[j]
(5)*(a+5*i+j)
9.下面程序的运行结果是_________.
{char*a[]={"
Pascal"
"
Clanguage"
dBase"
Coble"
};
char(**p)[];
intj;
p=a+3;
for(j=3;
j>
=0;
j--)printf("
%s\n"
*(p--));
Coble
dBase
Clanguage
Pascal
结构体
1.C语言结构体类型变量在程序执行期间_________.
a)所有成员一直驻留在内存中
b)只有一个成员驻留在内存中
c)部分成员驻留在内存中
d)没有成员驻留在内存中
2.下面程序的运行结果是___________.
structcmplx{intx;
inty;
}cnum[2]={1,3,2,7};
cnum[0].y/cnum[0].x*cnum[1].x);
a)0b)1c)3d)6
3.设有如下定义:
structsk
{intn;
floatx;
}data,*p;
若要使p指向data中的n域,正确的赋值语句是_______.
data.n;
b)*p=data.n;
c)p=(structsk*)&
d)p=(structsk*)data.n;
4.以下对结构体变量stu1中成员age的非法引用是________.
structstudent
{intage;
intnum;
}stu1,*p;
stu1;
a)stu1.ageb)student.age
c)p->
aged)(*p).age
5.下面对typedef的叙述中不正确的是______.
a)用typedef可以定义各种类型名,但不能用来定义变量
b)用typedef可以增加新类型
c)用typedef只是将已存在的类型用一个新的标识符来代表
d)使用typedef有利于程序的通用和移植
6.以下scanf函数调用语句中对结构体变量成员的不正确引用是________.
structpupil
{charname[20];
intage;
intsex;
}pup[5],*p;
p=pup;
a)scanf("
pup[0].name);
b)scanf("
pup[0].age);
(p->
sex));
d)scanf("
p->
age);
(二)填空题
1.以下程序的运行结果是__10,x______.
structn{
charc;
};
{structna={10,'
x'
func(a);
%d,%c"
a.x,a.c);
func(structnb)
b.x=20;
b.c='
y'
structnum
{inta;
intb;
floatf;
}n={1,3,5.0};
structnum*pn=&
则表达式pn->
b/n.a*++pn->
b的值是___12_____,表达式(*pn).a+pn->
f的值是6.00000
3.以下程序的运行结果是5,3.
structks
int*b;
}s[4],*p;
intn=1,i;
\n"
4;
s[i].a=n;
s[i].b=&
s[i].a;
n=n+2;
s[0];
p++;
(++p)->
a,(p++)->
a);
4.结构数组中存有三人的姓名和年龄,以下程序输出三人中最年长者的姓名
和年龄。
请在_______内填入正确内容。
statistructman{
charname[20];
}person[]={"
li=ming"
18,
"
wang-hua"
19,
zhang-ping"
20
{structman*p,*q;
intold=0
p=person;
for(;
p<
person+3;
p++)
if(old<
p->
age)
{q=p;
old=p->
age;
%s%d"
q->
name,q->
age);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 指针 结构 练习题 参考答案