第6章 函数.docx

上传人:b****5 文档编号:8412441 上传时间:2023-01-31 格式:DOCX 页数:20 大小:26.43KB
下载 相关 举报
第6章 函数.docx_第1页
第1页 / 共20页
第6章 函数.docx_第2页
第2页 / 共20页
第6章 函数.docx_第3页
第3页 / 共20页
第6章 函数.docx_第4页
第4页 / 共20页
第6章 函数.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

第6章 函数.docx

《第6章 函数.docx》由会员分享,可在线阅读,更多相关《第6章 函数.docx(20页珍藏版)》请在冰豆网上搜索。

第6章 函数.docx

第6章函数

函数

1、以下不正确的函数首部是()。

(A)f(inta)(B)fun(floata[5][])

(C)function(double*a)(D)fun(int*a[10])

2、设函数fun的定义形式为voidfun(charch,floatx){........}则以下对函数fun的调用语句中,正确的是()。

A.fun(65,32)B.fun(‘65’,2.8)C.fun(“abc”,3.0)D.t=fun(‘D’,16.5)

3、下列程序的输出结果是()。

(考点:

函数(地址参数和普通参数)、指针运算)

voidfun(char*c,intd)

{

*c=*c+1;

d=d+1;

}

voidmain()

{

chara='A',b='a';

fun(&b,a);

printf("%c,%c\n",a,b);

}

(A)B,A(B)a,B(C)A,B(D)A,b

4、有下列程序(考点:

函数(地址参数)、指针运算)

#include"stdio.h"

voidprt(int*x,int*y,int*z)

{

printf("%d,%d,%d\n",++*x,++*y,*(z++));

}

voidmain()

{

inta=10,b=40,c=20;

prt(&a,&b,&c);

prt(&a,&b,&c);

}

(1)第一次调用函数prt的运行结果是(32)。

32(A)11,42,31(B)11,41,20(C)11,21,40(D)11,41,21

(2)第二次调用函数prt的运行结果是(33)。

33(A)12,42,20(B)12,22,41(C)11,21,41(D)12,42,22

5、有下列程序(考点:

函数(地址参数)、指针运算)

#include

voidfun1(int*x,int*y)

{int*z;

z=x;x=y;y=z;

}

voidfun2(int*x,int*y)

{intz;

z=*x;*x=*y;*y=z;

(*x)++;(*y)++;

}

voidmain()

{inta=5,b=9;

fun1(&a,&b);

printf("a=%d,b=%d\n",a,b);

fun2(&a,&b);

printf("a=%d,b=%d\n",a,b);

}

main函数中第一个printf输出结果为()。

(A)a=9,b=5(B)a=5,b=9(C)a=10,b=6(D)a=6,b=10

main函数中第二个printf输出结果为()。

(A)a=9,b=5(B)a=5,b=9(C)a=10,b=6(D)a=6,b=10

1、读下面程序,回答问题。

#include"stdio.h"

voidsort(inta[],intn)

{

inti,j,t;

for(i=0;i

for(j=0;j

if(a[j]>a[i])

{t=a[j];a[j]=a[i];a[i]=t;}

}

voidmain()

{

intx[10]={1,0,-76,4,8,12,65,100,-45,123};

inti;

sort(x+5,5);

printf("%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、读程序并回答问题

#include

voidfun(int*a,intbott,inttop)

{

inti,j,t;

i=bott;j=top;

while(i

{t=a[i];a[i]=a[j];a[j]=t;

i++;j--;

}

}

voidmain()

{

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);

for(i=0;i<10;i++)

printf("%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、在下面程序中(考点:

数组、函数(地址参数)、删除字符算法)

#include

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]='\0';

}

voidmain()

{

chars[20]="ab12cd34";

fun(s);

printf("%3d%3d\n",sizeof(s),strlen(s));

printf("%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函数中输出这些整数的个数。

请将程序补充完整。

#include

#defineN300

intfun(intn)

{

intg,s,b,i,count=0;

for(i=100;i

{

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。

#include

intfun(intn)

{

inti;

if(n<=1)

return0;

else

{for(i=2;i<=n/2;i++)

if(①==0)return0;

②;

}

}

voidmain()

{

inti,a[10],sum=0;

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(i=0;i<10;i++)

if(③==1)

sum=sum+a[i];//是素数,相加

printf("sum=%d\n",sum);

}

3、以下程序的功能是求出小于或等于lim的所有素数并放在数组aa中,

fun()函数返回所求的素数的个数。

#include

#defineMAX100

1fun(intlim,intaa[MAX])

{

inti,j,m=0;

for(i=2;i

{

for(j=2;j

if(i%j==0)

2;

if(③)

aa[m++]=i;

}

returnm;

}

voidmain()

{

inti,m,lim,aa[MAX];

printf("lim=");

scanf("%d",&lim);

m=fum(lim,aa);

for(i=0;i

printf("%5d",aa[i]);

printf("\nm=%d",m);

}

4、下面程序中函数sort的功能是对a数组中的数据进行由大到小的排序。

#defineN10

voidsort(inta[])

{

inti,j,t;

for(i=0;i

for(j=i+1;j<①;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(③);

for(i=0;i

printf("%3d",a[i]);

printf("\n");

}

5、下面程序的功能是将数字字符串转换成对应的十进制整数。

#include

longfun(charstr[]);

intmain(void)

{

chardatastring[10];

longdata;

printf("Inputdatastring:

");

scanf("%s",datastring);

data=fun(datastring);

printf("outputnumber:

");

printf("%ld\n",data);

return0;

}

longfun(charstr[])

{

inti;

longdata;

___①________;

for(i=0;str[i]!

='\0';i_++)

data=data*10+(___②______);

return___③______;

}

5、下面函数fun()的功能是从NUM个字符中找出一个最长的一个字符串,并返回该串地址。

#include

#include

#defineNUM80

void*fun(char①)

{

inti;

char*max;

max=a[0];

for(i=0;i

if(strlen(max)

②;

return③;

}

voidmain()

{

chara[NUM][100];

inti;

for(i=0;i

gets(a[i]);

printf("%s\n",fun(s));

}

1.程序中函数fun()的功能是:

查找字符串str中指定字符ch出现的次数并返回,并将该字符出现时的下标位置记录于数据组bb中。

例如在字符串"1233211234567"中查找字符'1',其结果为3次,下标分别为0,5,6。

请填空。

#include"stdio.h"

#defineN20

intfun(char*str,charch,int*bb)

{

inti=0,n=0;

while(*str)

{

if()

bb[]=i;

str++;

i++;

}

return;

}

voidmain()

{

charstr[N],ch;

intbb[N]={0},i,n;

printf("\nInputtheoriginalstring:

");

gets(str);

printf("\nInputcharacter:

");

scanf("%c",&ch);

n=fun(str,ch,bb);

printf("\nThenumberofcharacteris:

%d\n",n);

printf("\nThesuffixofcharacter:

");

for(i=0;i

printf("%d",bb[i]);

}

1.函数fun的功能是:

将n×n(1

例如:

123若m=2,则处理后的方阵为:

223

4568106

789141618

在main函数中调用fun函数,并分行输出处理后的方阵。

请填空。

(考点:

矩阵处理算法)

#include

voidfun(inta[][10],intn,intm)

{

inti,j;

for(i=0;i

for(j=0;j<=①;j++)

a[i][j]=a[i][j]*m;

}

voidmain()

{

intw[10][10]={{1,2,3},{4,5,6},{7,8,9}},m,i,j;

scanf("%d",&m);

fun(②,3,m);

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

printf("%4d",w[i][j]);

printf(③);

}

}

6.有如下程序(考点:

字符数组、函数(地址参数)、逻辑表达式)

#include

voidfun(char*s,char*t1,char*t2)

{

inti,j=0;

for(i=0;s[i]!

='\0';i++)

{

if(i%2&&(s[i]>='a'&&s[i]<='z'))

t1[i]=s[i]-'a'+'A';

else

t1[i]=s[i];

if(s[i]>='0'&&s[i]<='9')

{

t2[j]=s[i];

j++;

}

}

t1[i]=t2[j]='\0';

}

voidmain()

{

chars[20]="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.有如下程序(考点:

函数、字符数组)

#include

voidfun(char*s)

{

inti;charc;

c=s[0];

for(i=1;s[i]!

='\0';i++)

s[i-1]=s[i];

s[i-1]=c;

}

voidmain()

{

chars[10]="abcdefg";

inti;

for(i=1;i<=3;i++)

fun(s);

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。

请填空。

(考点:

求最值、整数的分解算法)

#include

intfun(unsignedintn,int*zero)

{intcnt=0,max=0,t;

while(n!

=0)

{t=;

if(t==0)cnt++;

if(max

n=n/10;

}

=cnt;

returnmax;

}

voidmain()

{unsignedintn;

intzero,max;

printf("Inputn:

");

scanf("%u",&n);

max=fun(③);

printf("max=%d,zero=%d\n",max,zero);

}

递归调用

1、阅读下面的程序:

#include

intfun(intn)

{

if(n==1)

return1;

else

return(n+fun(n-1));

}

voidmain()

{

intx;

scanf("%d",&x);

x=fun(x);fun(100)=100+fun(99)=100+99+fun(98)

printf("%d\n",x);

}

(1)执行程序时,给变量x输入100,程序的输出结果是()。

A)5050B)5040C)6050D)4050

(2)该函数的功能是()。

A)利用递归函数计算n+n+1B)利用递归函数计算n+n-1+...+1

C)利用递归函数计算n+n-1+1D)以上都不是

2、阅读下面的程序:

#include

fun(intn)

{

if(n<1)

return1;

else

return(n*fun(n-1));

}

voidmain()

{

intx;

scanf("%d",&x);

x=fun(x);

printf("%d\n",x);

}

(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、对于如下程序

#include

longfun(intn)

{

longs;

if(n==1||n==2)

s=2;

else

s=n+fun(n-1);

return(s);

}

intmain(void)

{

longx;

x=fun(4);

printf("%ld\n",x);

return0;

}()程序的运行结果是()。

(A)5(B)7(C)9(D)11

4、读程序并回答问题。

#include

longfun(intn)

{

longz;

if(n==0||n==1)z=1;

elsez=n*fun(n-2);

returnz;

}

voidmain()

{

longz;

intn;

scanf("%d",&n);

z=fun(n);

printf("%ld\n",z);

}

若输入n的值为6,则程序的输出结果为(28)。

(A)21(B)15(C)48(D)720

(B)longfun(intn)

{

inti;

longz;

for(i=n,z=0;i>0;i-=2)

z=z+i;

returnz;

}

以下哪个非递归程序与函数fun的功能相同(29)。

(A)longfun(intn)

{

inti;

longz;

for(i=n,z=1;i>0;i-=2)

z=z*i;

retrunz;

}

(D)longfun(intn)

{

inti;

longz;

for(i=n,z=0;i>0;i--)

z=z+i;

returnz;

}

(C)longfun(intn)

{

inti;

longz;

for(i=n,z=1;i>0;i--)

z=z*i;

retrunz;

5、有如下程序:

(考点:

递归函数)

#include"stdio.h"

intfun(intn)

{

inty;

if(n==1)

y=1;

elseif(n==2)

y=2;

else

y=n+fun(n-2);

returny;

}

voidmain()

{

intx;

scanf("%d",&x);

printf("%d",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;i>=1;i=i-2)

s=s+i;

returns;

}

(C)intfun(intn)(D)

{inti,s=0;

for(i=n;i>=1;i--)

s=s+i;

returns;

命令行参数

1、下列程序编译连接后生成可执行文件CAD.EXE,输入以下命令行:

CADFILE1FILE2表示回车)

程序的运行结果是()。

(考点:

命令行参数)

#include"stdio.h"

voidmain(intargc,char*argv[])

{

inti;

printf("%d\n",argc);

for(i=0;i<=argc-1;i++)

printf("%s",argv[i]);

printf("\n");

}

(A)2(B)3

cadfile1file2cadfile1file2

(C)2(D)3

CAD.EXEFILE1FILE2CAD.EXEFILE1FILE2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 自然景观

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1