第6章 函数Word文档下载推荐.docx
《第6章 函数Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第6章 函数Word文档下载推荐.docx(20页珍藏版)》请在冰豆网上搜索。
z=x;
x=y;
y=z;
voidfun2(int*x,int*y)
{intz;
z=*x;
*x=*y;
*y=z;
(*x)++;
(*y)++;
{inta=5,b=9;
fun1(&
b);
a=%d,b=%d\n"
fun2(&
main函数中第一个printf输出结果为()。
(A)a=9,b=5(B)a=5,b=9(C)a=10,b=6(D)a=6,b=10
main函数中第二个printf输出结果为()。
1、读下面程序,回答问题。
#include"
voidsort(inta[],intn)
inti,j,t;
for(i=0;
i<
n-1;
i++)
for(j=0;
j<
i;
j++)
if(a[j]>
a[i])
{t=a[j];
a[j]=a[i];
a[i]=t;
intx[10]={1,0,-76,4,8,12,65,100,-45,123};
inti;
sort(x+5,5);
%d"
x[5]);
(1)程序中sort函数的功能是()
(A)用起泡法对含有n个元素的数组a从小到大的排序
(B)用选择法对含有n个元素的数组a从大到小的排序
(C)用二分法对含有n个元素的数组a从小到大的排序
(D)用起泡法对含有n个元素的数组a从大到小的排序()
(2)该程序的运行输出结果为()
(A)-76(B)-45(C)8(D)123
2、读程序并回答问题
voidfun(int*a,intbott,inttop)
i=bott;
j=top;
while(i<
j)
{t=a[i];
a[i]=a[j];
a[j]=t;
i++;
j--;
}
inta[10]={1,2,3,4,5,6,7,8,9,0},i;
fun(a,0,3);
fun(a,4,9);
fun(a,0,9);
10;
%d"
a[i]);
函数fun的功能是()。
(A)将下标为bott到top之间的数组元素逆置
(B)将下标为bott到top之间数组元素进行升序排列
(C)将下标为bott到top之间数组元素进行降序排列
(D)将下标为bott和下标为top的两个元素互换
程序的运行结果为()。
(A)0987654321(B)4321098765(C)5678901234(D)0987651234
3、在下面程序中(考点:
数组、函数(地址参数)、删除字符算法)
voidfun(char*s)
inti,j;
for(i=0,j=0;
s[i]!
='
\0'
i++)
if(s[i]>
0'
&
&
s[i]<
9'
)
{s[j]=s[i];
j++;
s[j]='
chars[20]="
ab12cd34"
fun(s);
%3d%3d\n"
sizeof(s),strlen(s));
%s\n"
s);
(1)第1个printf输出的结果为(26)。
(A)88(B)208(C)2020(D)204
(2)第2个printf输出的结果为(27)。
(A)abcd(B)ab12cd(C)1234(D)ab12cd34
1、以下程序的功能是,求出100至300之间符合下述条件的所有整数输出。
整数的百位、十位、个位数字之和为5
并在main函数中输出这些整数的个数。
请将程序补充完整。
#defineN300
intfun(intn)
intg,s,b,i,count=0;
for(i=100;
n;
{
g=i%10;
s=;
b=i/100;
if()
printf(“%5d”,i);
count++;
returncount;
intmain()
intcnt;
printf(“Numbersare:
\n”);
cnt=;
printf(“\n%dnumberstotal\n”,cnt);
return0;
2、用以下程序求出数组a中所有素数的和,函数fun的功能是判断形参n是否为素数,是素数返回1,不是返回0。
if(n<
=1)
return0;
else
{for(i=2;
=n/2;
if(①==0)return0;
②;
inti,a[10],sum=0;
scanf("
&
a[i]);
if(③==1)
sum=sum+a[i];
//是素数,相加
sum=%d\n"
sum);
3、以下程序的功能是求出小于或等于lim的所有素数并放在数组aa中,
fun()函数返回所求的素数的个数。
#include<
#defineMAX100
1fun(intlim,intaa[MAX])
inti,j,m=0;
for(i=2;
lim;
for(j=2;
j++)
if(i%j==0)
2;
if(③)
aa[m++]=i;
returnm;
inti,m,lim,aa[MAX];
printf("
lim="
);
scanf("
lim);
m=fum(lim,aa);
for(i=0;
m;
%5d"
aa[i]);
\nm=%d"
m);
4、下面程序中函数sort的功能是对a数组中的数据进行由大到小的排序。
#defineN10
voidsort(inta[])
N-1;
for(j=i+1;
①;
j++)
if(a[i]②a[j])
{t=a[i];
a[i]=a[j];
a[j]=t;
intmain(void)
inta[N]={1,2,3,4,5,6,7,8,9,10},i;
sort(③);
N;
printf("
%3d"
\n"
5、下面程序的功能是将数字字符串转换成对应的十进制整数。
#include<
longfun(charstr[]);
chardatastring[10];
longdata;
Inputdatastring:
"
%s"
datastring);
data=fun(datastring);
outputnumber:
%ld\n"
data);
longfun(charstr[])
___①________;
str[i]!
i_++)
data=data*10+(___②______);
return___③______;
5、下面函数fun()的功能是从NUM个字符中找出一个最长的一个字符串,并返回该串地址。
string.h>
#defineNUM80
void*fun(char①)
inti;
char*max;
max=a[0];
NUM;
if(strlen(max)<
str(a[i]))
②;
return③;
chara[NUM][100];
gets(a[i]);
fun(s));
1.程序中函数fun()的功能是:
查找字符串str中指定字符ch出现的次数并返回,并将该字符出现时的下标位置记录于数据组bb中。
例如在字符串"
1233211234567"
中查找字符'
1'
,其结果为3次,下标分别为0,5,6。
请填空。
#defineN20
intfun(char*str,charch,int*bb)
inti=0,n=0;
while(*str)
if()
bb[]=i;
str++;
i++;
return;
charstr[N],ch;
intbb[N]={0},i,n;
\nInputtheoriginalstring:
gets(str);
\nInputcharacter:
%c"
ch);
n=fun(str,ch,bb);
\nThenumberofcharacteris:
%d\n"
n);
\nThesuffixofcharacter:
bb[i]);
1.函数fun的功能是:
将n×
n(1<
n<
=10)方阵的下三角(包括对角线元素)×
m,
例如:
123若m=2,则处理后的方阵为:
223
4568106
789141618
在main函数中调用fun函数,并分行输出处理后的方阵。
矩阵处理算法)
voidfun(inta[][10],intn,intm)
for(j=0;
=①;
a[i][j]=a[i][j]*m;
intw[10][10]={{1,2,3},{4,5,6},{7,8,9}},m,i,j;
m);
fun(②,3,m);
3;
%4d"
w[i][j]);
printf(③);
6.有如下程序(考点:
字符数组、函数(地址参数)、逻辑表达式)
voidfun(char*s,char*t1,char*t2)
inti,j=0;
if(i%2&
(s[i]>
s[i]<
z'
))
t1[i]=s[i]-'
+'
t1[i]=s[i];
t2[j]=s[i];
t1[i]=t2[j]='
2abcde3fg45"
t1[20],t2[20];
fun(s,t1,t2);
puts(t1);
puts(t2);
(1)程序中第一个puts的输出结果为(36)
36(A)abcdefg(B)2345(C)2AbCdE3Fg45(D)2aBcDe3fG45
(2)程序中第二个puts的输出结果为(37)
37(A)abcdefg(B)2345(C)2AbCdE3Fg45(D)2aBcDe3fG45
2.有如下程序(考点:
函数、字符数组)
charc;
c=s[0];
for(i=1;
s[i-1]=s[i];
s[i-1]=c;
chars[10]="
abcdefg"
=3;
puts(s);
}
函数fun的功能是()。
28(A)左移一个字符,并将第一个字符放到字符串末尾
(B)右移一个字符,并将最后一个字符放到字符串开头
(C)删除第一个字符(D)删除最后一个字符
程序的运行结果是()。
29(A)bcdefga(B)defgabc(C)efgabcd(D)bcdefg
2.函数fun的功能是:
求出无符号十进制数n中包含0的个数,及各位数字的最大值。
最大值通过函数值返回,0的个数通过形参指针zero带回。
在main函数中输入n的值,调用fun函数并输出结果。
n=300800,则0的个数为4,各位数字的最大值为8。
求最值、整数的分解算法)
intfun(unsignedintn,int*zero)
{intcnt=0,max=0,t;
while(n!
=0)
{t=;
if(t==0)cnt++;
if(max<
t)max=t;
n=n/10;
=cnt;
returnmax;
{unsignedintn;
intzero,max;
Inputn:
%u"
n);
max=fun(③);
max=%d,zero=%d\n"
max,zero);
递归调用
1、阅读下面的程序:
intfun(intn)
if(n==1)
return1;
else
return(n+fun(n-1));
intx;
x);
x=fun(x);
fun(100)=100+fun(99)=100+99+fun(98)
x);
(1)执行程序时,给变量x输入100,程序的输出结果是()。
A)5050B)5040C)6050D)4050
(2)该函数的功能是()。
A)利用递归函数计算n+n+1B)利用递归函数计算n+n-1+...+1
C)利用递归函数计算n+n-1+1D)以上都不是
2、阅读下面的程序:
fun(intn)
if(n<
1)
return(n*fun(n-1));
(1)如果执行程序时给变量x输入7,则程序的输出结果是()。
A)5040B)5050C)6050D)4200
(2)该fun()函数的功能是()。
A)利用递归函数计算n*(n-1)B)利用递归函数计算n*(n-1)*1
C)利用递归函数计算n*(n-1)*...*1D)计算n的值
3、对于如下程序
longfun(intn)
longs;
if(n==1||n==2)
s=2;
else
s=n+fun(n-1);
return(s);
longx;
x=fun(4);
}()程序的运行结果是()。
(A)5(B)7(C)9(D)11
4、读程序并回答问题。
longz;
if(n==0||n==1)z=1;
elsez=n*fun(n-2);
returnz;
intn;
z=fun(n);
z);
若输入n的值为6,则程序的输出结果为(28)。
(A)21(B)15(C)48(D)720
(B)longfun(intn)
for(i=n,z=0;
i>
0;
i-=2)
z=z+i;
以下哪个非递归程序与函数fun的功能相同(29)。
(A)longfun(intn)
for(i=n,z=1;
z=z*i;
retrunz;
}
(D)longfun(intn)
i--)
(C)longfun(intn)
5、有如下程序:
递归函数)
inty;
if(n==1)
y=1;
elseif(n==2)
y=2;
y=n+fun(n-2);
returny;
intx;
fun(x));
若输入x的值为8,则程序的输出结果为(36)。
(A)16(B)36(C)30(D)20
与函数fun等价的非递归程序为(37)。
(A)intfun(intn)(B)
{inti,s=0;
for(i=n;
=1;
i=i-2)
s=s+i;
returns;
(C)intfun(intn)(D)
命令行参数
1、下列程序编译连接后生成可执行文件CAD.EXE,输入以下命令行:
CADFILE1FILE2<
CR>
(<
表示回车)
命令行参数)
voidmain(intargc,char*argv[])
argc);
=argc-1;
argv[i]);
(A)2(B)3
cadfile1file2cadfile1file2
(C)2(D)3
CAD.EXEFILE1FILE2CAD.EXEFILE1FILE2