第七章练习题及答案.docx

上传人:b****3 文档编号:3809063 上传时间:2022-11-25 格式:DOCX 页数:18 大小:21.55KB
下载 相关 举报
第七章练习题及答案.docx_第1页
第1页 / 共18页
第七章练习题及答案.docx_第2页
第2页 / 共18页
第七章练习题及答案.docx_第3页
第3页 / 共18页
第七章练习题及答案.docx_第4页
第4页 / 共18页
第七章练习题及答案.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

第七章练习题及答案.docx

《第七章练习题及答案.docx》由会员分享,可在线阅读,更多相关《第七章练习题及答案.docx(18页珍藏版)》请在冰豆网上搜索。

第七章练习题及答案.docx

第七章练习题及答案

第七章习题

一、选择题(*号题选做)

(1)若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是A

      A)main()

B)floatfun(inta,intb){……}

      {……x=fun(2,10);……}

main()

      floatfun(inta,intb){……}

{……x=fun(i,j);……}

      C)floatfun(int,int);

D)main()

      main()

{floatfun(inti,intj);

      {……x=fun(2,10);……}

……x=fun(i,j);……}

      floatfun(inta,intb){……}

floatfun(inta,intb){……}

*

(2)已定义以下函数

      intfun(int*p)

      {return*p;}

      fun函数返回值是B

      A)不确定的值B)一个整数C)形参p中存放的值D)形参p的地址值

*(3)若有以下函数首部。

intfun(doublex[10],int*n)

则下面针对此函数的函数声明语句中正确的是()。

D

A)intfun(doublex,int*n);B)intfun(double,int);

C)intfun(double*x,intn);D)intfun(double*,int*);

(4)若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是D

A)函数的实参和其对应的形参共占同一存储单元

B)形参只是形式上的存在,不占用具体存储单元

C)同名的实参和形参占同一存储单元

D)函数的形参和实参分别占用不同的存储单元

(5)下面的函数调用语句中func函数的是实参个数是 ()A

func(f2(v1,v2)),(v3,v4,v5),(v6,max(v7,v8)));

A)3  B)4 C)5 D)8

(6)以下叙述中错误的是()B

A)用户定义的函数中可以没有return语句

B)用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值

C)用户定义的函数中若没有return语句,则应当定义函数为void类型

D)函数的return语句中可以没有表达式

(7)以下关于return语句的叙述中正确的是B

A)一个自定义函数中必须有一条return语句

B)一个自定义函数中可以根据不同情况设置多条return语句

C)定义成viod类型的函数中可以有带返回值的return语句

D)没有return语句的自定义函数在执行结束时不能返回到调用处

(8)有以下程序

      intfun1(doublea){returna*=a;}

      intfun2(doublex,doubley)

      {

      doublea=0,b=0;

      a=fun1(x);b=fun1(y);return(int)(a+b);

      }

      main()

      {doublew;w=fun2(1.1,2.0);……}

      程序执行后变量w中的值是C

      A)5.21 B)5 C)5.0 D)0.0

(9)有以下程序:

fun(intx,inty){return(x+y);}

main()

{inta=1,b=2,c=3,sum;

sum=fun((a++,b++,a+b),c++);

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

}

执行后的输出结果是()。

C

A)6B)7C)8D)9

(10)有以下程序:

voidfun2(chara,charb){printf("%c,%c",a,b);}

chara='A',b='B';

voidfun1(){a='C';b='D';}

main()

{fun1();

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

fun2('E','F');

}

程序的运行结果是()。

A

A)CDEFB)ABEFC)ABCDD)CDAB

*(11)有以下程序

      main(intargc,char*argv[])

      {intn=0,i;

      for(i=1;i

      printf(“%d\n”,n);

      }

编译连接后生成可执行文件tt.exe,若运行时输入以下命令行

      tt12345678

程序运行后的输出结果是D

A)12 B)12345 C)12345678 D)136

(12)有如下程序:

  #include

  voidfun(inta,intb)

  {

     intt;

      t=a;a=b;b=t;

  }

  main()

  {intc[10]={1,2,3,4,5,6,7,8,9,0},i;

   for(i=0;k<10;i+=2)fun(c[i],c[i+1]);for(i=0;k<10;i++)printf("%d",c[i]);printf("\n");

  }

  程序的运行结果是A

A)1,2,3,4,5,6,7,8,9,0,  B)2,1,4,3,6,5,8,7,0,9, 

C)0,9,8,7,6,5,4,3,2,1,  D)0,1,2,3,4,5,6,7,8,9,

(13)有以下程序

#include 

int f(int x,int y)

{ return ((y-x)*x);}

main()

{ int a=3,b=4,c=5,d;

  d=f(f(a,b),f(a,c));

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

}

程序运行后的输出结果是B

A)10

B)9

C)8

D)7

(14)有以下程序

#include 

int fun(int x,int y)

{ if(x==y) return (x);

  else return((x+y)/2);

}

main()

{ int a=4,b=5,c=6;

  printf("%d\n",fun(2*a,fun(b,c)));

}

程序运行后的输出结果是B

A)3

B)6

C)8

D)12

(15)有以下程序

#include 

void fun(int p)

{  int d=2;

   p=d++; 

   printf("%d",p);

}

main()

{  int a=1;

   fun(a);

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

}

程序运行后的输出结果是C

A)32

B)12

C)21

D)22

(16)有以下程序

  #include<stdio.h>

  int  f(int x);

  main()

 {int n=1,m;

  m=f(f(f(n)));printf(”%d\n”,m);

 }

  int f(int x)

 {return x*2;}

程序运行后的输出结果是D

A)1     B)2     C)4     D)8

(17)有以下程序

      intfun(intn)

      {

      if(n==1)return1;

      else

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

      }

      main()

      {intx;

      scanf(“%d”,&x);x=fun(x);printf(“%d\n”,x);

      }

程序执行时,给变量x输入10,程序的输出结果是A

 A)55 B)54 C)65 D)45

(18)有以下程序:

fun(intx)

{intp;

if(x==0||x==1)return(3);

p=x-fun(x-2);

returnp;

}

main()

{printf("%d\n",fun(7));}

执行后的输出结果是()。

C

A)7B)3C)2D)0

(19)有以下程序

#include

intf(intx)

{inty;

if(x==0||x==1)return(3);

y=x*x-f(x-2);

returny;

}

main()

{intz;

z=f(3);printf(“%d\n”,z);

}

程序的运行结果是C

A)0B)9C)6D)8

(20)有以下程序

#include

int fun(inta,intb)

{if(b==0)return a;

 else return(fun(--a,--b));

}

main()

{ printf(“%d\n”,fun(4,2); }

程序的运行结果是B

A)1 B)2 C)3 D)4

(21)有以下程序

#include

intf(intt[],intn);

main()

{inta[4]={1,2,3,4},s;

s=f{a,4};printf("%d\n",s);

}

intf(intt[],intn)

{if(n>0)returnt[n-1]+f(t,n-1);

elsereturn0;

}

程序运行后的输出结果是B

A)4B)10C)14D)6

(22)有以下程序

  #include<stdio.h>

  void fun(intx)

  {if(x/2>1)fun(x/2);

  printf(”%d”,x);

  }

  main()

  {fun(7);printf(”\n”);}

程序运行后的输出结果是D

A)137  B)731  C)73  D)37

(23)有以下程序

      intfun(intx[],intn)

      {staticintsum=0,i;

      for(i=0;isum+=x[i];

      returnsum;

      }

      main()

      {inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;

      s=fun(a,5)+fun(b,4);printf(“%d\n”,s);

      }

程序执行后的输出结果是C

A)45 B)50 C)60 D)55

(24)有以下程序:

fun(intx,inty)

{staticintm=0,i=2;

i+=m+1;m=i+x+y;returnm;

}

main()

{intj=1,m=1,k;

k=fun(j,m);printf("%d",k);

k=fun(j,m);printf("%d\n",k);

}

执行后的输出结果是()。

B

A)5,5B)5,11C)11,11D)11,5

(25)有以下程序

      inta=4;

      intf(intn)

      {intt=0;staticinta=5;

      if(n%2){inta=6;t+=a++;}

      else{inta=7;t+=a++;}

      returnt+a++;

      }

      main()

      {ints=a,i=0;

      for(;i<2;i++)s+=f(i);

      printf(“%d\n”,s);

      }

程序运行后的输出结果是B

A)24 B)28 C)32 D)36

(26)设函数中有整型变量n,为保证其在未赋初值的情况下初值为0,应该选择的存储类别是C

A)auto

B)register

C)static

D)auto或register

(27)有以下程序

#include 

int f(int n);

main()

{  int a=3,s;

   s=f(a);s=s+f(a);printf("%d\n",s);

}

int f(int n)

{ static int a=1;

  n+=a++;

  return n;

}

程序运行后的输出结果是C

A)7

B)8

C)9

D)10

(28)有以下程序

#include

intfun()

{staticintx=1;

x*=2;returnx;

}

main()

{inti,s=1;

for(i=1;i<=2;i++)s=fun();

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

}

程序运行后的输出结果是C

A)0B)1C)4D)8

(29)有以下程序

  #include<stdio.h>

  intfun()

  {staticintx=1;

  x+=1;returnx;

  }

  main()

  {inti;s=1;

  for(i=1;i<=5;i++)s+=fun();

  printf(”%d\n”,s);

  }

程序运行后的输出结果是B

A)11  B)21  C)6  D)120

(30)有以下程序:

#include

#defineN5

#defineMN+1

#definef(x)(x*M)

main()

{inti1,i2;

i1=f

(2);

i2=f(1+1);

printf("%d%d\n",i1,i2);

}

程序的运行结果是()。

B

A)1212B)117C)1111D)127

(31)若程序中有宏定义行:

#define N  100  则以下叙述中正确的是B

A)宏定义行中定义了标识符N的值为整数100

B)在编译程序对C源程序进行预处理时用100替换标识符N

C)对C源程序进行编译时用100替换标识符N

D)在运行时用100替换标识符N

(32)以下叙述中错误的是D

A)在程序中凡是以“#”开始的语句行都是预处理命令行

B)预处理命令行的最后不能以分号表示结束

C)#defineMAX是合法的宏定义命令行

D)C程序对预处理命令行的处理是在程序执行的过程中进行的

(33)以下关于宏的叙述中正确的是()C

A)宏名必须用大写字母表示

B)宏定义必须位于源程序中所有语句之前

C)宏替换没有数据类型限制

D)宏调用比函数调用耗费时间

(34)有以下程序

#include 

#define PT 3.5 ;

#define S(x) PT*x*x ;

main()

{ int a=1,b=2 ;  printf("%4.1f\n",S(a+b));}

程序运行后的输出结果是C

A)14.0

B)31.5

C)7.5

D)程序有错无输出结果

(35)有以下程序

#include 

#define f(x) x*x*x

main()

{  int a=3,s,t;

   s=f(a+1);t=f((a+1));

   printf("%d,%d\n",s,t);

}

程序运行后的输出结果是A

A)10,64

B)10,10

C)64,10

D)64,64

(36)以下程序

#include

#defineSUB(a)(a)-(a)

main()

{inta=2,b=3,c=5,d;

d=SUB(a+b)*c;

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

}

程序运行后的结果是C

A)0B)-12C)-20D)10

二填空题

(1)以下isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0,请填空

      intisprime(inta)

      {inti;

      for(i=2;i<=a/2;i++)

      if(a%i==0)__[]___;//return0

      __[]___;//return1

      }

(2)以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

请填空。

#include"math.h"

doublefun(doublex){return(x*x-2*x+6);}

main()

{

doublex,y1,y2;

printf("Enterx:

");scanf("%lf",&x);

y1=fun(【】);//x+8

y2=fun(【】);//sin(x)

printf("y1=%lf,y2=%lf\n",y1,y2);

}

(3)以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换.请填空.

#include   

viod   f(int    x[],int    n)

{    int   p0,p1,i,j,t,m;

     i=j=x[0];         p0=p1=0;

     for(m=0;m

{   if(x[m]>i)         {i=x[m]; p0=m;}

     else   if(x[m]

}

t=x[p0];  x[p0]=x[n-1];    x[n-1]=t;

t=x[p1];x[p1]=_[]_______;_[]_______=t;//x[0],x[0]

}

main()

{  int   a[10],u;

   for(u=0;u<10;u++)    scanf("%d",&a[u]);

f(a,10);

for(u=0;u<10;u++)        printf("%d",a[u]);

printf("\n");

}

(4)请将以下程序中的函数声明语句补充完整。

#include 

int 【】;//max(int,int)

main()

{ int x,y,(*p)();

  scanf("%d%d",&x,&y);

  p=max;

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

}

int max(int a,int b)

{ return (a>b?

a:

b);}

(5)以下fun函数的功能是:

找出具有N个元素的一维数组中的最小值,并作为函数值返回。

请填空。

(设N已定义)i

  intfun(intx[N])

  {inti,k=0;

  for(i=0;i

if(x[i]

returnx[k];

  }

(6)以下fun函数的功能是在N行M列的整形二维数组中,选出一个最大值作为函数值返回,请填空。

(设M,.N已定义)a[row][col]

  intfun(inta[N][M])

  {inti,j,row=0,col=0;

  for(i=0;i

  for(j=0;j

  if(a[i][j]>a[row][col]){row=i;col=j;}

  return(【】):

  }

(7)以下程序的运行结果是:

__[]____11

      fun(intt[],intn)

      {inti,m;

      if(n==1)returnt[0];

      else

      if(n>=2){m=fun(t,n-1);returnm;}

      }

      main()

      {

      inta[]={11,4,6,3,8,2,3,5,9,2};

      printf(“%d\n”,fun(a,10));

      }

(8)下面程序的运行结果是【】。

18

#include

intf(inta[],intn)

{if(n>1)

returna[0]+f(a+1,n-1);

else

returna[0];

}

main()

{intaa[10]={1,2,3,4,5,6,7,8,9,10},s;

s=f(aa+2,4);printf("%d\n",s);

}

(9)以下程序的输出结果是【】。

13

#include

voidfun(intx)

{if(x/2>0)fun(x/2);

printf(“%d”,x);

}

main()

{fun(3);printf(“\n”);}

(10)以下程序的功能是:

通过函数func输入

字符并统计输入字符的个数。

输入时用字符@作为输入标志。

请填空。

#include

long【】;   

main()

{    longn;

       n=func();  printf("n=%ld\n",n);

}

longfunc()

{  longm;

       for(m=0;getchar()!

='@';【】);

         returnm;

}

答案:

func();m++

(11)有以下程序

#include 

fun(int x)

{  if(x/2>0) fun(x/2);

   printf("%d ",x);

}

main()

{ fun(6);printf("\n");}

程序运行后的输出结果是【】136

(12)以下程序的运行结果是m=4k=4i=5k=5。

      intk=0;

      voidfun(intm)

      {m+=k;k+=m;printf(“m=%d\nk=%d”,m,k++);}

      main()

      {inti=4;

      fun(i++);

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

当前位置:首页 > 农林牧渔 > 林学

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

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