您的当前位置:首页C语言习题(7)

C语言习题(7)

2021-11-12 来源:乌哈旅游
2012至2013学年度上期重庆市蜀都职业技术校X期考试

C语言习题(7)

第7章 函数

一.填空题

1. C语言中从函数的形式分可分为无参函数和 。

2. 在C语言中,一个自定义函数一般由两部分组成,它们是函数首部和 。

3. 从用户使用角度看,函数有两种:标准函数和 。

4. 若一个函数不需要形参,则在定义该函数时应使形参表为空或者放置一个标识符 。

5. 有函数调用fun1(x+y, (y,z), 10, fun((x,y-1))); 函数fun1有 个参数。

6. 已知函数定义:void dothat(int n, double x) { …… },其函数声明的两种写法为_________________________,_________________________。

7. C语言变量按其作用域分为 和 ;按其生存期分为___________和 。

8. C语言变量的存储类别有 , , 和 。

9. 凡在函数中未指定存储类别的局部变量,其默认的存储类别为 。

页脚内容1

2012至2013学年度上期重庆市蜀都职业技术校X期考试

10. 在一个C程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要定

义的存储类别为 。

11. C语言中,形式参数的缺省存储类型是 。

12. C语言中,若为指定函数是内部函数或外部函数,则默认该函数是 。

二.选择题

1. 以下正确的说法是___________。

A)用户若需要调用标准库函数,调用前必须重新定义

B)用户可以重新定义标准库函数,如若此,该函数将失去原有定义

C)系统不允许用户重新定义标准库函数

D)用户若需要使用标准库函数,调用前不必使用预处理命令将该函数所在的头文件包含编译,系统会自动调用。

2. 以下正确的函数定义是___________。

A)double fun(int x, int y); B)int fun(int x,y)

页脚内容2

2012至2013学年度上期重庆市蜀都职业技术校X期考试

{ z=x+y ; return z ; } { int z ; return 3;}

C)double fun (x,y) D)double fun (int x, int y)

{ int x, y ; double z ; { double z ; z=x+y;

z=x+y ; return z ; } return z ; }

3. C语言中,简单变量做实参和形参时,以下正确的说法是___________。

A)实参和与其对应的形参各占用独立的存储单元

B)实参和与其对应的形参共占用一个存储单元

C)只有当实参和与其对应的形参同名时才共占用相同的存储单元

D)形参时虚拟的,不占用存储单元

4. C语言规定,简单变量做实参时,它和对应的形参之间的数据传递方式是___________。

A)地址传递

B)单向值传递

页脚内容3

2012至2013学年度上期重庆市蜀都职业技术校X期考试

C)有实参传给形参,再由形参传给实参

D)由用户指定传递方式

5. C语言规定,函数返回值的类型是由___________决定的。

A)return语句中的表达式类型 B)调用该函数时的主调函数类型

C)调用该函数时由系统临时 D)在定义函数时所指定的函数类型

6. 以下正确的描述是___________。

A)函数的定义可以嵌套,但函数的调用不可以嵌套

B)函数的定义不可以嵌套,但函数的调用可以嵌套

C)函数的定义和函数的调用均不可以嵌套

D)函数的定义和函数的调用均可以嵌套

7. 若用数组名作为函数调用的实参,传递给形参的是___________。

A)数组的首地址 B)数组中第一个元素的值

页脚内容4

2012至2013学年度上期重庆市蜀都职业技术校X期考试

C)数组中的全部元素的值 D)数组元素的个数

8. 如果在一个函数中的复合语句中定义了一个变量,则该变量___________。

A)只在该复合语句中有定义 B)在该函数中有定义

C)在本程序范围内有定义 D)为非法变量

9. 以下不正确的说法是___________。

A)在不同函数中可以使用相同名字的变量

B)形式参数是局部变量

C)在函数内定义的变量只在本函数范围内有定义

D)在函数内的复合语句中定义的变量在本函数范围内有定义

10. 关于函数声明,以下不正确的说法是___________。

A)如果函数定义出现在函数调用之前,可以不必加函数原型声明

B)如果在所有函数定义之前,在函数外部已做了声明,则各个主调函数不必再做函数原型声明

页脚内容5

2012至2013学年度上期重庆市蜀都职业技术校X期考试

C)函数在调用之前,一定要声明函数原型,保证编译系统进行全面的调用检查

D)标准库不需要函数原型声明

11. 以下func()函数的调用中实参的个数是___________。

func((exp1,exp2),(exp3,exp4,exp5));

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

12. 有如下程序,该程序的输出结果是___________。

int func(int a, int b)

{ return (a+b); }

int main()

{ int x=2,y=5,z=8,r;

r=func(func(x,y), z);

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

页脚内容6

2012至2013学年度上期重庆市蜀都职业技术校X期考试

return 0; }

A)12 B)13 C)14 D)15

13. 以下程序运行的结果是___________。

void fun(int a, int b, int c)

{a=456; b=567; c=678;}

int main()

{ int x=10,y=20,z=30;

fun(x,y,z);

printf(“%d,%d,%d”,x,y,z);

return 0; }

A)30,20,10 B)10,20,30 C)456,567,678 14. 以下程序运行的结果是___________。

页脚内容7

D)678,567,456

2012至2013学年度上期重庆市蜀都职业技术校X期考试

void fun(int b)

{if(b>0) fun(b-1);

printf(“%d”,b);}

int main()

{ int a=5; fun(a); return 0;}

A)54321 B)012345 C)12345 D)543210

15. 函数f定义如下,执行语句sum=f(5)+f(3);后,sum的值应为___________。

int f(int m)

{ static int i=0; int s=0;

for(;i<=m;i++) s+=i;

return s; }

A)21 B)16 C)15 D)8

页脚内容8

2012至2013学年度上期重庆市蜀都职业技术校X期考试

16. 以下程序运行的结果是___________。

void reverse(int a[], int n)

{ int i,t;

for(i=0;i{t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t;}

}

int main()

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

reverse(b,8);

for(i=6;i<10;i++) s+=b[i];

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

return 0; }

页脚内容9

2012至2013学年度上期重庆市蜀都职业技术校X期考试

A)22 B)10 C)34 D)30

三.程序阅读题

1. 写出下面程序的运行结果___________。

#include

int a,b;

void fun()

{ a=100;b=200;}

int main()

{ int a=5,b=7;

fun();

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

return 0; }

页脚内容10

2012至2013学年度上期重庆市蜀都职业技术校X期考试

2. 以下程序的第一行的输出结果是是___________,第二行的输出结果是___________,第三行的输出结果是___________,第四行的输出结果是___________。

#include

int main()

{ int a=5,b=-3,c=-7;

printf(”%d,%d,%d\\n”,a,b,c);

{ int b=8;float c=9.9;

printf(“%d,%d,%.1f\\n”,a,b,c);

a=b;

{ int c=b;

printf(”%d,%d,%d\\n”,a,b,c); }

printf(”%d,%d,%d\\n”,a,b,c);

}

页脚内容11

2012至2013学年度上期重庆市蜀都职业技术校X期考试

return 0; }

3. 写出下面程序的运行结果___________。

#include

void swap1(int c[])

{ int t;

t=c[0];c[0]=c[1];c[1]=t;}

void swap2(int c0,int c1)

{ int t;

t=c0; c0=c1;c1=t; }

int main()

{ int a[2]={3,5},b[2]={3,5};

swap1(a); swap2(b[0],b[1]);

页脚内容12

2012至2013学年度上期重庆市蜀都职业技术校X期考试

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

return 0;

}

4. 以下程序的输出结果第一行是___________,第二行是___________,第三行是___________。

#include

int n=1;

void func()

{ static int x=4;

int y=10;

x=x+2;

n=n+10;

y=y+n;

页脚内容13

2012至2013学年度上期重庆市蜀都职业技术校X期考试

printf(\"FUNC: x=%d y=%d n=%d\\n\

void main()

{ int x=5,y;

y=n;

printf(\"MAIN:x=%d y=%d n=%d\\n\

func( );

printf(\"MAIN:n=%d\\n\

}

5. 写出下面程序的运行结果___________。

#include

int max_value(int array[][4],int i)

{ int j,max;

页脚内容14

2012至2013学年度上期重庆市蜀都职业技术校X期考试

max=array[i][0];

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

if (maxreturn(max);

}

int main ( )

{ int a[3][4]={{1,3,5,7},{2,4,6,8},{12,15,56,32}},i;

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

printf(“%d\\n”,max_value(a,i));

return 0; }

6. 写出下面程序的运行结果___________。

#include

页脚内容15

2012至2013学年度上期重庆市蜀都职业技术校X期考试

int func (int array[][4], int m)

{ int i,j,k=0;

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

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

if(array[i][j]return (k) ;

}

int main ( )

{ int a[3][4]={1,13,5,7,2,4,26,8,10,1,3,12};

int m;

m=10;

printf(“%d\\n”,func(a,m)) ;

页脚内容16

2012至2013学年度上期重庆市蜀都职业技术校X期考试

return 0;

}

7. 写出下面程序的运行结果___________。

#include

void main()

{ int add(int x,int y);

int a=1,b=2,x1,x2,x3;

x1=add(a,b);

x2=add(a,b);

x3=add(a,b);

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

}

页脚内容17

2012至2013学年度上期重庆市蜀都职业技术校X期考试

int add(int x,int y)

{ static int z=1;

z=x+y+z;

return(z);

}

8. 以下程序运行时第一行、第二行、最后一行分别输出为___________、___________、___________。

#include

int sub(int n)

{ int a;

if(n==1)a=1;

else a=n+sub(n-1);

printf(\"%d\\n\

页脚内容18

2012至2013学年度上期重庆市蜀都职业技术校X期考试

return(a);

}

int main()

{ int i=5;

printf(\"%d\\n\

return 0;

}

四.程序填空题

1. 以下程序的功能是:用average函数计算平均成绩。

#include

float average(float array[],int n)

{ float sum=0,ave;

页脚内容19

2012至2013学年度上期重庆市蜀都职业技术校X期考试

int i;

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

ave=(【 1 】); 【 2 】; }

int main()

{ float score[10],aver;

int i;

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

scanf(“%f”,&score[i]);

aver=average【 3 】;

printf(“aver=%f\\n”,aver);

页脚内容20

2012至2013学年度上期重庆市蜀都职业技术校X期考试

return 0; }

2. 函数void fun(char s[],char c)的功能是从字符串s中删除字符c,在主函数中输入要删除的字符,并将删除后的字符输出。

#include

void fun(char s[],char c)

{ int i,j;

for(i=0,j=0;s[i]!=’\\0’;i++)

if(【 1 】) s[j++]=s[i];

s[j]=’\\0’;

}

int main()

{ char str[80]=”adadfeeafard”,ch;

scanf(“%c”,&ch);

页脚内容21

2012至2013学年度上期重庆市蜀都职业技术校X期考试

fun(【 2 】,ch);

【 3 】;

return 0; }

3. 下面程序用“折半查找法”从有10个数的a数组中对关键字m查找,若找到,返回其下标值,否则返回-1,请填空。

#include

int search(int a[10],int m)

{ int x1=0,x2=9,mid ;

while (x1<=x2) {

mid = (x1+x2)/2;

if (ma[mid]) 【 2 】; else return (mid) ;

页脚内容22

2012至2013学年度上期重庆市蜀都职业技术校X期考试

}

return (-1) ;

}

int main()

{ int a[10]={1,4,6,8,12,44,55,67,89,98},key,k;

printf(\"please input:\");

scanf(\"%d\

k=【 3 】;

if(k==-1) printf(\"can't find!\\n\");

else printf(\"pos=%d\\n\

return 0;

}

页脚内容23

2012至2013学年度上期重庆市蜀都职业技术校X期考试

4. 下面程序的功能是将一个字符串中元音字母复制到另一个字符串,然后输出,请填空。

#include

int main()

{【 1 】

char str[80],c[80];

printf(\"input string:\");

【 2 】

cpy(str,c);

printf(\"The vowel letters are:%s\\n\

return 0;

}

void cpy(char s[],char c[])

页脚内容24

2012至2013学年度上期重庆市蜀都职业技术校X期考试

{ int i,j;

for (i=0,j=0;s[i]!='\\0';i++)

if (s[i]=='a'||s[i]=='A'||s[i]=='e'||s[i]=='E'||s[i]=='i'||

s[i]=='I'||s[i]=='o'||s[i]=='O'||s[i]=='u'||s[i]=='U')

{【 3 】;

j++;

}

【 4 】

}

5. 下面程序的功能是给出年、月、日,计算该日是该年的第几天,请填空。

#include

int main()

页脚内容25

2012至2013学年度上期重庆市蜀都职业技术校X期考试

{int sum_day(int month,int day);

int leap(int year);

int year,month,day,days;

printf(\"input date(year,month,day):\");

scanf(\"%d,%d,%d\

printf(\"%d/%d/%d \

days=sum_day(month,day);

if(leap(year)&&month>=3)

【 1 】

printf(\"is the %dth day in this year.\\n\

return 0;

}

页脚内容26

2012至2013学年度上期重庆市蜀都职业技术校X期考试

int sum_day(int month,int day)

{int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

int i;

for (i=1;i【 2 】];

return(day);

}

int leap(int year)

{int leap;

if(【 3 】) leap=1;

else leap=0;

return(leap);

页脚内容27

2012至2013学年度上期重庆市蜀都职业技术校X期考试

}

页脚内容28

因篇幅问题不能全部显示,请点此查看更多更全内容