第六章函数ReadWord文档下载推荐.docx
《第六章函数ReadWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第六章函数ReadWord文档下载推荐.docx(48页珍藏版)》请在冰豆网上搜索。
charname[10];
intnum;
};
voidf(char*name,intnum)
structSTUs[2]={{"
SunDan"
20044},{"
Penghua"
20045}};
num=s[0].num;
strcpy(name,s[0].name);
YangSan"
20041},{"
LiSiGuo"
20042}},*p;
p=&
s[1];
f(p->
name,p->
num);
%s%d\n"
p->
程序运行后的输出结果是______。
A)SunDan20042B)SunDan20044
C)LiSiGuo20042D)YangSan20041
4.有以下程序
floatTotalScore;
voidf(structSTU*p)
20044,550},{"
20045,537}},*q=s;
++p;
++q;
*p=*q;
structSTUs[3]={{"
20041,703},{"
20042,580}};
f(s);
%s%d%3.0f\n"
s[1].name,s[1].num,s[1].TotalScore);
A)SunDan20044550B)Penghua20045537
C)LiSiGuo20042580D)SunDan20041703
B
5.有以下程序
charname[10];
intnum;
voidf1(structSTUc)
structSTUb={"
2042};
c=b;
voidf2(structSTU*c)
2044};
*c=b;
voidmain()
structSTUa={"
2041},b={"
WangYin"
2043};
f1(a);
f2(&
b);
printf("
%d%d\n"
a.num,b.num);
执行后的输出结果是
A)20412044B)20412043C)20422044D)20422043
13.以下程序的输出结果。
voidfunc(char**m);
voidmain()
{
staticchar*a[]={"
MORNING"
"
AFTERTOON"
EVENING"
char**n;
n=a;
func(n);
voidfunc(char**m)
++m;
printf("
%s\n"
*m);
A.为空B.MORNINGC.AFTERTOOND.EVENING
C
15.有以下函数定义:
voidfun(intn,doublex){……}
若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是。
A)fun(inty,doublem);
B)k=fun(10,12.5);
C)fun(x,n);
D)voidfun(n,x);
16.以下程序运行后,输出结果是。
intd=1;
voidfun(intp)
intd=5;
d+=p++;
%d"
d);
inta=3;
fun(a);
d+=a++;
%d\n"
A)84B)99C)95D)44
17.以下程序的输出结果是。
intx=3;
voidincre()
staticintx=1;
x*=x+1;
%d"
x);
inti;
for(i=1;
i<
x;
i++)
incre();
A)33B)22C)26D)25
18.若程序中定义了以下函数:
doublemyadd(doublea,doubleb)
{return(a+b);
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是。
A)doublemyadd(doublea,b);
B)doublemyadd(double,double);
C)doublemyadd(doubleb,doublea);
D)doublemyadd(doublex,doubley);
21.以下叙述中正确的是。
A)全局变量的的作用域一定比局部变量的作用域范围大
B)静态(static)类别变量的生存期贯穿于整个程序的运行期间
C)函数的形参都属于全局变量
D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值
22.以下函数
fff(floatx)
{printf(“%d\n”,x*x);
的类型是
A)与参数x的类型相同B)void类型
C)int类型D)无法确定
C)
23.以下程序:
intfunc(inta,intb)
intc;
c=a+b;
returnc;
intx=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--);
r);
其输出结果是
A)11B)20C)21D)31
26.有如下函数调用语句
fuc(rec1,rec2+rec3,(rec4,rec5));
该函数调用语句中,含有的实参个数是。
A)3B)4C)5D)有语法错
29.有以下程序
voidfun(int*a,inti,intj)
intt;
if(i<
j)
t=a[i];
a[i]=a[j];
a[j]=t;
i++;
j--;
fun(a,i,j);
intx[]={2,6,1,8},i;
fun(x,0,3);
for(i=0;
4;
i++)printf("
%2d"
x[i]);
程序运行后的输出结果是。
A)1268B)8621C)8162D)8612
35.若函数的形参为一维数组,则下列说法中正确的是()。
(A)调用函数时的对应实参必为数组名
(B)形参数组可以不指定大小
(C)形参数组的元素个数必须等于实参数组的元素个数
(D)形参数组的元素个数必须多于实参数组的元素个数
答案;
(B)
40.C语言程序由函数组成。
以下说法正确的是()。
A)主函数必须在其它函数之前,函数内可以嵌套定义函数
B)主函数可以在其它函数之后,函数内不可以嵌套定义函数
C)主函数必须在其它函数之前,函数内不可以嵌套定义函数
D)主函数必须在其它函数之后,函数内可以定义函数
B
41.返回值为void的函数,其含义是()。
A)调用函数之后,被调用的函数没有返回值
B)调用函数之后,被调用的函数不返回
C)调用函数之后,被调用的函数的返回值为任意的类型
D)以上三种说法都是错误的
A
42.若用数组名作为函数调用的实参,传递给形参的是()。
A)数组的首地址
B)数组第一个元素的值
C)数组中全部元素的值
D)数组元素的个数
A
43.一个函数返回值的类型是由()。
A)return语句中的表达式类型决定
B)定义函数时所指定的函数类型决定
C)调用该函数的主调函数的类型决定
D)在调用函数时临时指定
B
44.关于C语言以下说法正确的是()。
A)只有当实参和与其对应的形参同名时才共占用存储单元
B)形参是虚拟的,不占用存储单元
C)实参和与其对应的形参各占用独立的存储单元
D)实参和与其对应的形参共占用一个存储单元
.C
47.有以下程序
intfun(intx)
intp;
if(x==0||x==1)
return3;
else
p=x-fun(x-2);
returnp;
\n%d"
fun(9));
程序执行后的输出结果是_______。
A)10B)9
C)8D)7
.D
50.以下关于函数的叙述中正确的是______。
A)每个函数都可以被其它函数调用(包括main函数)
B)每个函数都可以被单独编译
C)每个函数都可以单独运行
D)在一个函数内部可以定义另一个函数
B;
54.以下程序
voidf(char*s,char*t)
chark;
k=*s;
*s=*t;
*t=k;
s++;
t--;
if(*s)f(s,t);
charstr[10]="
abcdefg"
*p;
p=str+strlen(str)/2+1;
f(p,p-2);
str);
A)abcdefgB)gfedcbaC)gbcdefaD)abedcfg
55.有以下程序
intf1(intx,inty)
returnx>
y?
x:
y;
intf2(intx,inty)
y:
inta=4,b=3,c=5,d=2,e,f,g;
e=f2(f1(a,b),f1(c,d));
f=f1(f2(a,b),f2(c,d));
g=a+b+c+d-e-f;
%d,%d,%d\n"
e,f,g);
A)4,3,7B)3,4,7C)5,2,7D)2,5,7
59.下面函数的功能是。
intfun1(char*x)
char*y=x;
while(*y++);
return(y-x-1);
A)求字符串的的长度
B)比较两个字符串的大小
C)将字符串x复制到字符串y
D)将字符串x连接到字符串y后面
60.要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。
能正确表示此功能的函数是。
A)funa(int*x,int*y)B)funb(intx,inty)
{int*p;
{intt;
*p=*x;
*x=*y,*y=*p;
}t=x;
x=y;
y=t;
C)func(int*x,int*y)D)fund(int*x,int*y)
{*x=*y;
*y=*x;
}{*x=*x+*y;
*y=*x-*y;
*x=*x-*y;
65.以下程序:
malloc.h>
voidfut(int**s,intp[2][3])
**s=p[1][1];
inta[2][3]={1,3,5,7,9,11},*p;
p=(int*)malloc(sizeof(int));
fut(&
p,a);
*p);
A)1B)7C)9D)11
73.下面程序中存在语法错误,关于错误的原因正确说法是()。
stio.h>
voidp_ch1();
inta=5,b;
…
b=p_ch1(A);
A)语句voidp_ch1();
有错,它是函数调用语句,不能使用void说明
B)变量名不能使用大写字母
C)函数说明和函数调用语句之间有矛盾
D)函数名中不能使用下划线
76.若定义了以下函数:
voidf(……)
{……
*p=(double*)malloc(10*sizeof(double));
……
p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是。
A)double*pB)float**pC)double**pD)float*p
二、填空题
2.可以将结构体变量作为函数参数,采用_【_1_】_调用方式比较好,能提高运行效率。
【1】传址
4.下列函数在一维数组v上将x插入到下标为i的元素前,i≥0。
如果i≥元素的个数,则x插到末尾。
原有的元素个数存放在指针n所指向的变量中,插入后元素个数加1。
请填空。
voidinsline(intv[],int*n,intx,inti)
intj;
if(【1】)
for(j=*n-1;
【2】;
j--)
【3】=v[j];
i=*n;
v[i]=【4】;
*n=(*n)+1;
return;
【1】i<
*n【2】j>
=i【3】v[j+1]【4】x
6.下列程序在数组中同时查找最大元素和最小元素的下标,分别存放在main()函数的max和min中,请填空。
voidfind(int*a,intn,int*max,int*min);
intmax,min,a[]={5,3,7,9,2,0,4,1,6,8};
find(【1】);
%d,%d\n"
max,min);
voidfind(int*a,intn,int*max,int*min)
*max=*min=0;
for(i=1;
n;
{
if(a[i]>
a[*max])
【2】;
if(a[i]<
a[*min])
【3】;
【1】a,10,&
max,&
min【2】*max=i【3】*min=i
8.下列程序用于求数组a中所有素数之和。
prime()用来判断自变量是否是素数。
intprime(intx);
inti,a[10],*p=a,sum=0;
Input10numbers:
\n"
);
10;
scanf("
&
a[i]);
if(prime(*(p+【1】))==1)
{
printf("
*(a+i));
sum+=*(a+i);
}
\n%Thesum=%d\n"
sum);
intprime(intx)
for(i=2;
x/2;
if(x%i==0)
return(0);
【2】;
【1】i【2】return
(1)]
14.以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:
yes!
;
否则函数返回字符串:
no!
,并在主函数中输出。
所谓回文即正向与反向的拼写都一样,例如:
adgda。
char*huiwen(char*str)
char*p1,*p2;
inti,t=0;
p1=str;
p2=
(1);
=strlen(str)/2;
if(*p1++!
=*p2--)
t=1;
break;
if(
(2))return("
yes!
"
elsereturn("
no!
charstr[50];
Input:
scanf("
%s"
(3));
(1)str+strlen(str)-1或&
str[strlen(str)-1]
(2)t==0或t!
=1或!
t
(3)huiwen(str)或huiwen(&
str[0])
15.有一个名为eval的函数,它返回一个整数值,有一个整型参数x,一个指向函数的指针poly。
poly所指函数有一个整数参数,返回值也是整数。
那么eval函数的函数头应该写成。
inteval(intx,int(*poly)(int))
17.以下程序编译链接后生成p.exe文件,在DOS下运行键入:
pABCDEFGHIJKL
则输出结果为。
voidmain(intargc,char*argv[])
while(--argc>
0)
printf("
argv[argc]);
答:
IJKLEFGHABCD
18.下面程序的运行结果是:
。
voidswap(int*a,int*b)
int*t;
t=a;
a=b;
b=t;
intx=3,y=5,*p=&
x,*q=&
swap(p,q);
*p,*q);
35
20.以下程序的运行结果是:
char*ss(char*s)
returns+strlen(s)/2;
char*p,*str="
abcdefgh"
;
p=ss(str);
p);
efgh
24.以下程序从所读入的若干字符串中,找出最大的一个串并输出该串(用“****”作为结束输入的标志),请填空。
voidreadin(char(*a)[5],int*num)
inti=0;
gets(a[i]);
while(!
strcmp(a[i],"
****"
)==0)
①;
gets(a[i]);
②=i;
voidfindmax(char(*a)[5],③num,④max)
for(*max=a[0],i=1;
num;
if(strcmp(a[i],*max)>
0)
⑤;
charss[10][5],*ps;
intn;
readin(ss,&
n);
findmax(ss,n,&
ps);
max=%s\n"
ps);
①++i或i++②*num③int④char**⑤*max=a[i]
25.以下程序将“Hello”反向显示出来。
请在程序中的空白处填入一条语句或一个表达式。
voidprint(char*string);
charstr[]="
Hello"
print(str);
v