第八章 函数

更新时间:2023-11-15 14:23:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第八章 函数

一、选择题

1. 以下关于函数的叙述中正确的是_______________。

A) 每个函数都可以被其他函数调用(包括main函数) B) 每个函数都可以被单独编译 C) 每个函数都可以单独执行

D) 在一个函数内部可以定义另一个函数 2. 对于函数,正确的说法是________________。

A) 必须有形式参数 B) 必须有返回类型说明 C) 必须有返回语句 D)必须包含函数体 3. 以下叙述中正确的是________________。

A) 函数的定义可以嵌套,但函数的调用不可以嵌套 B) 函数的定义不可以嵌套,但函数的调用可以嵌套 C) 函数的定义和函数的调用均不可以嵌套 D) 函数的定义和函数的调用均可以嵌套 4.以下叙述中正确的是________________。

A) C语言编译时不检查语法 B) C语言的子程序有过程和函数两种 C) C语言的函数可以嵌套定义 D) C语言所有函数都是外部函数 5.以下函数定义正确的是____________。

A) double f(int x, int y) B) double f(int x, y) { z=x+y; { double z=x+y; return z; return z; } }

C) double f(x, y) D) double f(int x, int y) { int x, y; double z; { double z; z=x+y; z=x+y; return z; return z; } }

6.若调用一个函数int f(),且此函数中没有return语句,则正确的说法是____________。

A) 该函数没有返回值 B) 该函数返回一个系统默认值 C) 该函数返回一个确定的值 D) 该函数返回一个不确定的值 7. 若定义函数:

fun (int a, flaot b) { return a+b; }

则该函数的返回类型是____________。 A) void B) int C) float D) 不确定

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

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

C) 调用该函数时由系统临时 D) 在定义函数时所指定的函数类型 9. 对于函数返回类型,不正确的说法是____________。

A) 可以是int类型 B)可以是数组类型 C) 可以是char类型 D) 可以是void类型 10. 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是__________。

A) 函数调用可以作为独立的语句存在 B) 函数调用可以作为一个函数的实参 C) 函数调用可以出现在表达式中 D) 函数调用可以作为一个函数的形参 11. 基本类型变量作实参时,它和对应的形参之间的数据传递方式是___________。

A) 值传递 B) 地址传递

C) 由实参传给形参,再由形参传给实参 D) 由函数定义指定传递方式 12. 以下叙述中错误的是___________。

A) 实参可以是常量、变量或表达式 B) 形参可以是常量、变量或表达式 C) 实参可以为任意类型 D) 如果形参与实参的类型不一致,以形参类型为准。 13. 以下函数调用语句中,含有的实参个数是_____________。 calc(exp1, (exp3, exp4, exp5));

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

14. 在函数调用时,以下叙述中正确的是_____________。

A)函数调用后必须带回返回值 B)实际参数和形式参数可以同名

C)函数间的数据传递不可以使用全局变量 D)主调函数和被调函数总是在同一个文件里 15. 设函数f的定义形式为

void f(char ch, float x) { …… }

则以下对函数f的调用语句中,正确的是_____________。

A)f(\ B)t=f('D', 16.5); C)f('65', 2.8); D)f(32, 32);

16. 有函数定义void fun(int n, double x) { …… },若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是___________。

A) fun(int y, double m); B) k=fun(10, 12.5); C) fun(x, n); D) void fun(n, x); 17. 若程序中定义了以下函数: double f(double a, double b) { return (a+b); }

并将其放在调用语句之后,则在调用之前应该对该函数进行函数原型说明,以下选项中错误的是________________。

A) double f(double a,b); B) double f(double, double); C) double f(double b, double a); D) double f(double x, double y);

18设函数fun的定义形式为:void fun(char ch[], float x) { …… },则以下对函数fun的调用语句中,正确的是___________。

A) fun(\ B) t=fun('D', 16.5); c) fun('65', 2.8); D) fun(32, 32);

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

A) void main() B) float fun(int a, int b) { …… } { …… x=fun(2,10); …… } void main()

float fun(int a, int b) { …… } { …… x=fun(i, j); …… } C) float fun(int , int); D) void main()

void main() { float fun(int i, int j);

{ …… x=fun(2,10); …… } …… x=fun(i, j); …… } float fun(int a, int b) { …… } float fun(int a, int b) { …… } 20. 下面程序执行后的输出结果是___________。

# include # define P 3

void F(int x) { return (P*x*x); }

void main() {

printf(\

A) 192 B) 29 C) 25 D) 编译出错 21. 下面程序执行后的输出结果是___________。

# include int f(int n) {

if(n= =1) return 1; return f(n-1)+1; }

void main() {

int i, j=0;

for(i=1; i<3; i++) j+=f(i); printf(\

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

22. 若用数组名作为函数调用的参数,传递给形参的是_____。

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

23.设主调用函数为如下程序,则函数f中对形参数组定义错误的是_____。itn a[3][4]; f(a);

A) f(int array[3][4]) B) f(int array[][4]) C) f(int array[3][]) 24. 下面程序执行后的输出结果是___________。

# include

int f(int b[], int m, int n) { int i, s=0;

for(i=m; i

void main() {

int x, a[]=}{1, 2, 3, 4, 5, 6, 7, 8, 9}; x=f(a, 3, 7); printf(\

A) 10 B) 18 C) 8 D) 15 25. 下面程序执行后的输出结果是___________。

# include #define N 20

void fun(int a[], int n, int m) { int i;

for(i=m; i>=n; i--) a[i+1]=a[i]; }

D) f(int array[4][3])

void main() {

int i;

int a[N]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; fun(a, 2, 9);

for( i=0; i<5; i++) printf(\

A) 10234 B) 12344 C) 12334 D) 12234 26. 下面程序执行后的输出结果是___________。

# include

void f(int a[], int i, int j) { int t;

if(i

t=a[i]; a[i]=a[j]; a[j]=t; f(a, i+1, j-1); } }

void main() {

int i, aa[5]={1, 2, 3, 4, 5}; f(aa, 0, 4);

for(i=0; i<5; i++) printf(\

A) 54321 B) 52341 C) 12345 D) 12543 27. 下面程序执行后的输出结果是___________。

# include void swap1(int c[]) { int t;

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

void swap2(int c0, int c1) { itn t;

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

void main() {

int a[2]={3, 5}, b[2]={3, 5}; swap1(a); swap2(b[0],b[1]);

printf(\}

A) 5353 B) 5335 C) 3535 D) 3553 28. 以下叙述中错误的是_____。

A) 在不同函数中可以使用相同名字的变量 B) 形式参数只在本函数范围内有定义

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

D) 全局变量在函数内有同名变量定义时,在该函数范围内没有定义

29. 在某源程序文件中,若全局变量与局部变量同名,则_____。

A)视为同一个变量 B) 变量作用域不确定 C) 不允许 D) 允许 30. 如果在一个函数的复合语句中定义了一个变量,则该变量_____。 A) 只在该复合语句中有定义 B)在该函数中有定义 C) 在本程序范围内有定义 D) 为非法定义 31.下面程序执行后的输出结果是___________。

#include int a=3; void main() {

int s=0; {

int a=5; s+=a++; }

s+=a++;

printf(\ }

A) 7 B) 8 C) 10 D) 11 32.以下叙述中错误的是___________。

A) 形参的存储单元是动态分配的 B)函数中的局部变量都是动态存储

C) 全局变量都是静态存储 D) 动态分配变量的存储空间在函数结束调用后就被释放了 33. 以下叙述中错误的是___________。

A) 全局变量、静态变量的初值是在编译时指定的 B) 静态变量如果没有指定初值,则其初值是0 C) 局部变量如果没有指定初值,则其初值不确定

D) 函数中的静态变量在函数每次调用时,都会重新设置初值

34.若函数中局部变量的值经函数调用后仍然保留,则该局部变量定义为___________。 A) 自动变量 B) 内部变量 C) 外部变量 D) 静态变量 35.若变量定义时未初始化,则其值不确定的是___________。

A) 静态全局变量 B) 局部变量 C) 静态局部变量 D) 全局变量 36.以下叙述中正确的是___________。

A) 局部变量说明为static存储类型,其生存期将得到延长 B) 全局变量说明为static存储类型,其作用域将被扩大 C) 任何存储类型的变量在未赋初值时,其值都是不确定的

D) 形参可以使用的存储类型说明符与局部变量完全相同

37.全局变量的存储类型可以定义为___。

A) auto或static B) extern或register C) auto或extern D) extern或static 38. 以下只有在使用时才为该类型变量分配内存的存储类型是___________。

A) auto和static B) auto和register C) register和static D) extern和register 39.下面程序执行后的输出结果是_______________。

#include int f() {

static int i=0; int s=1;

s+=i; i++; return s; }

void main() {

int i, a=0;

for(i=0; i<5; i++) a+=f(); printf(\ }

A) 20 B) 24 C) 25 D) 15

40. 下面程序执行后的输出结果是_______________。

#include int a=2; int f(int n) {

static int a=3; int t=0;

if(n%2) { static int a=4; t+=a++; } else { static int a=5; t+=a++; } return t+a++; }

void main() {

int i, s=a;

for(i=0; i<3; i++) s+=f(i); printf(\ }

A) 24 B) 26 C) 28 D) 29

41. 在C语言中,计算xy正确的是_____________。

A) x^y B) pow(x, y) C) x**y D) power(x, y) 42.自动型局部变量分配在___________________。

A) 内存的数据区中 B) CPU的通用寄存器中 C) 内存的程序区中 D) 内存的堆栈区中 二、填空题

1.C语言函数返回类型的默认定义类型是__________。

2.可以将被调函数中获得的值返回给主调函数的语句是_____________________。 3.在C语言中,当定义一个函数的类型为void时,说明执行该函数_____________。 4.若函数定义为:

int data() { float x=9.9; return (x); }

则函数返回的值地_________。

5.函数调用语句fun((a,b), (c, d, e));的实参个数是_________。

6.函数调用语句func(rec1, rec2+rec3, (rec4, rec5));的实参个数是_________。 7.函数的实参传递到形参有两种方式:___________和_____________。 8.在C语言中,若函数的形参是整型变量,而对应的实参是整型数,则形实结合的方式是___________传递。

9.函数fun的功能是计算x n

double fun(double x, int n) { int i; double y=1;

for(i=1; i<=n; i++) y=y*x; return y; }

主函数中已经正确定义m,a,b变量并赋值,调用fun函数计算m=a4+b4-(a+b)3的调用语句为________________。

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

11. 在一个函数内部调用另一个函数的调用方式称为________;在一个函数内部直接或间接调用该函数称为函数________的调用方式。

12. 对于以下递归函数f,调用f(4)的返回值是________。

int f(int n) {

if(n) return f(n-1)+n; else return n; } 13. 函数pi的功能是根据近似公式

???6?1?111??...?求π值。请在下面的函数2?23?3n?n中填空,完成求π的功能。

#include double pi(long n)

{ double s=0.0; long i;

for(i=1; i<=n; i++) s=s+_______; return (sqrt(6*s)); }

14. C语言变量按其作用域分为________和______,按其生存期分为________和_________。 15. C语言变量的存储类别有___________、__________、______________和________________。 16. 凡在函数中未指定存储类别的局部变量,其默认的存储类别为_________________。 17. 被调用函数执行结束时,此函数中定义的________________类型的变量不能被释放_。 18. 静态型外部变量的作用域是_________________。

19. 在一个C程序中,若要定义一个只允许本文件中函数使用的全局变量,则该变量需要定义的存储类别为_________________。

20.变量赋初值可以在两个阶段,即______________和___________。 三、判断题

1. 函数的定义和函数的调用均可以嵌套。【_____________】 2. 函数必须有返回值,否则不能定义成函数。【_____________】

3. 在C语言中,调用函数时,只能把实参的值传递给形参,形参的值不能传递给实参。

【_____________】

4. 程序中定义的整型变量的初值都为0。【_____________】

5. C程序中,有调用关系的所有函数必须放在同一个源程序文件中。【_____________】 四、程序阅读题

1. 简要叙述下面程序的功能。 # include int func(int n) {

int i, j, k;

i=n/100; j=n/10-i*10; k=n;

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) return n; return 0; }

void main() {

int n, k;

for(n=100; n<1000; n++)

if(k=func(n)) printf(\}

2.下面程序运行时从键盘上输入:-125回车,写出程序的运行结果。 # include # include void fun(int n) {

int k, r;

for(k=2; k<=sqrt(n); k++) { r=n%k;

while(!r) {

printf(\ n=n/k;

if(n>1) printf(\ r=n%k; } }

if(n!=1) printf(\}

void main() { int n;

scanf(\ printf(\ if(n<0) printf(\ n=abs(n); fun (n);

}

3.写出下面程序执行后的运行结果。 # include int Fun(int n); void main() {

printf(\ printf(\}

int Fun(int n) {

int result=1;

while(n>1) result*=n--; return result; }

4. 下面程序运行时从键盘上输入:282回车,写出程序的运行结果。 # include # include int sub(int n) {

int s=1; do {

s*=n; n/=10; }while (n); return s; }

void main() {

int n;

scanf(\ n=sub(n);

printf(\}

5.写出下面程序执行后的运行结果。 # include int i=0;

int fun1(int i) {

i=(i%i)*((i*i)/(2*i)+4); printf(\reutrn i; }

int fun2(int i) {

i=i<=2?5:0; return i;

}

void main() {

int i=5; fun2(i/2);

printf(\ fun2(i/2);

printf(\ fun2(i/2);

printf(\ fun2(i/2);

printf(\}

6. 下面程序运行时从键盘上输入:1234出程序的运行结果。 # include int sub(int n) {

return (n/10+n); }

void main() {

int x, y;

scanf(\ y=sub(sub(sub(x))); printf(\}

7.写出下面程序执行后的运行结果。 # include int f1(int x, int y) {

return x>y? x : y; }

int f2(int x, int y) {

return x>y? y : x; }

void main() {

int a=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;

printf(\

}

8.写出下面程序执行后的运行结果。 # include long f(int b) {

if(b==1 || b==2) return 1; else return f(b-1)+f(b-2); }

void main() {

printf(\}

9.写出下面程序执行后的运行结果。 # include int SUM(int n) {

if(n==1) return 1;

else return n*n+SUM(n-1);

}

void main() {

printf(\}

10.写出下面程序执行后的运行结果。 # include int func(int n) {

static int m=0, i=2; i+=m+1; m=i+a+b; return (m); }

void main() {

int k=4, m=1, p1, p2; p1=func(k, m); p2=func(k, m);

printf(\}

11.写出下面程序执行后的运行结果。 # include int fun() {

int y=1;

static int z=4;

z++; ++y; return (y*z);

}

void main() {

int i;

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

printf(\}

12. .写出下面程序执行后的运行结果。 # include int fuc(int j) {

static int k; return (++k+j); }

void main() {

int j;

for( j=1; j<=3; j++) printf(\ \}

13.写出下面程序执行后的运行结果。 # include void f(int j) {

static int a=100; int k=1; ++k;

printf(\ \ a-=2; }

void main() {

int i;

p=func(&b, a);

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

14.写出下面程序执行后的运行结果。 # include int a1=300, a2=400; void sub1(int x, int y); void main() {

int a3=100, a4=200; sub1(a3, a4);

sub1(a1, a2);

printf(\}

void sub1(int x, int y) {

a1=x; x=y; y=a1; }

15.写出下面程序执行后的运行结果。 # include int x=30, y=50; int sub(int x, int y) {

y=x>y? x : y; return y; }

void main() { {

int x=100;

printf(\ \ }

printf(\ %d\}

16. 下面程序运行时从键盘上输入:abcd回车,写出程序的运行结果。。 # include #include void insert(char str[]) { int i;

i=strlen(str); while(i>0) {

str[2*i]=str[i]; str[2*i-1]='*'; i--; }

printf(\}

void main() {

char str[40];; scanf(\ insert(str); }

17.写出下面程序执行后的运行结果。 # include int fun(int x[], int n) {

static int sum=0, i;

for(i=0; i

}

void main() {

int a[]={1, 2, 3, 4, 5}, b[]={6, 7, 8, 9}, s=0; s=fun(a, 5) + fun(b, 4); printf(\}

18.写出下面程序执行后的运行结果。 # include

void sort(int a[], int s, int N) {

int i, j, t;

for(i=s; i t=a[i], a[i]=a[j], a[j]=t; } }

void main() {

int aa[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, i; sort(aa, 3, 8);

for(i=0; i<10; i++) printf(\ \}

19.写出下面程序执行后的运行结果。 # include #include

void f(char p[][10], int N) {

char t[20]; int i, j; for(i=0; i

if(strcmp(p[i], p[j])<0) { strcpy(t, p[i]); strcpy(p[i], p[j]); strcpy(p[j], t); } }

void main() {

char p[][10]={\

f(p, 5);

printf(\

}

20.写出下面程序执行后的运行结果。 # include int fun(char p[][10]) {

int n=0, i;

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

if(p[i][0]=='T') n++; return n; }

void main() {

char str[][10]={\printf(\}

21.写出下面程序执行后的运行结果。 # include int f(int a[], int n) {

if(n>=1) return f(a, n-1) + a[n-1]; else return 0; }

void main() {

int aa[5]={1, 2, 3, 4, 5}, s; s=f(aa, 5); printf(\}

22.写出下面程序执行后的运行结果。 # include #include int f(int b[][4]) {

int i, j, s=0;

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

if(i>2) i=3-j; s+=b[i][j]; }

return s; }

void main() {

int a[4][4]={{1, 2, 3, 4}, {0, 2, 4, 5}, {3, 6, 9, 12}, {3, 2, 1, 0}}; printf(\

}

23.写出下面程序执行后的运行结果。 # include

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

void main() {

int b[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; reverse(b, 8);

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

24.将下面两个C源程序文件放到一个C项目中编译运行,程序运行时从键盘上输入:Thank回车,写出程序的运行结果。 a1.c文件如下: void fun1(); void fun2(); int M;

void main() {

M=102; fun1(); fun2(); }

a2.c文件如下: #include extern int M; void fun1() {

char s[80], c; int n=0;

while((c=getchar())!='\\n') s[n++]=c; n--;

while(n>=0) printf(\}

void fun2() {

printf(\}

五、程序判断题

1.下面函数add的功能是求两个参数的和。判断下面程序的正误,如果有错误请改正过来。 void add(int a, int b) {

int c; c=a+b; return ( c ); }

2.下面函数fun的功能是根据整型形参m,计算如下公式的值:

y?1111???...?

100*100200*200300*300m*m判断下面程序的正误,如果有错误请改正过来。

fun( int m) {

double y=0, d; int i;

for(i=100, i

return ( y ); }

3.下面函数fun的功能是将长整型数中偶数位置上的数依次取出,构成一个新数返回,例如,当s中的数为87653142时,则返回的数为8634。判断下面程序的正误,如果有错误请改正过来。 long fun(long s) {

long t=0, s1=1; int d; while (s>0) { d=s;

if (d%2=0) { t=d*s1+t; s1*=10; }

s/=10; }

return ( t ); }

4.下面函数fun的功能是依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。判断下面程序的正误,如果有错误请改正过来。 void fun (char s[])

{

int i, j;

for (i=0, j=0; s[i]!='\\0'; i++) if(s[i]>='0' && s[i] <='9') s[j]=s[i]; s[j]='\\0';

}

5.下面函数fun的功能是统计字符串s中各元音字母(即A,E,I,O,U)的个数(注意:字母不分大、小写)。判断下面程序的正误,如果有错误请改正过来。 void fun (char s[], int num[5]) {

int k, i=5;

for (k=0; k

for(k=0; s[k]; k++) { i=-1;

switch(s[k]) {

case 'a' : case \ case 'e' : case \ case 'i' : case \ case 'o' : case \ case 'u' : case \ }

if (i>=0) num[i]++; } }

六、程序填空题

1.下面函数的功能是计算函数F(x,y,z)?# include 【______________】; void main() {

float x, y, z, f ;

scanf(\ f=fun(【______________】);

f+=fun(【______________】); printf(\}

float fun(float a, float b) {

return (a/b);

x?yz?y?。请填空使程序完整、正确。 x?yz?y}

2. 下面函数的功能是键入10个整数,统计其中正数(neg)、负数(pos)和零(zero)的个数并将三者输出。请填空使程序完整、正确。 #include

int neg=0, pos=0, zero=0; void self(int num) {

if(num>0) neg++;

else if(num<0) pos++; else 【______________】; }

x2x3xn??...?3.下面sum函数的功能是计算S?1?x?级数之和并返回。请填空使程序完整、2!3!n!正确。

double sum(double x, int n) {

int i; double a, b, s; 【______________】; for(i=1; i<=n; i++) {

a=a*x; b=b*i; s=s+a/b; }

【______________】; }

return min; }

4.下面函数的功能是调用函数fun得到两个数中的最大值。请填空使程序完整、正确。 #include

【______________】(double , double ); void main() {

double x, y;

scanf(\printf(\}

double fun(double a, double b) {

return (a>b ? a : b); }

5.下面函数用“折半查找法”从有10个数的a数组中对关键字m查找,若找到,返回其下标值,否则返回-1。请填空使程序完整、正确。 int search(int a[10], int m) {

int x1=0, x2=9, mid;

while (x1<=x2) { mid=(x1+x2)/2;

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

}

return (-1); }

6.del函数的作用是删除有序数组a中的指定元素x,n为数组a的元素个数,函数返回删除以后的数组a元素的个数。请填空使程序完整、正确。 int del (int a[10], int n, int x) {

int p=0, i;

while (x>=a[p] && p

【______________】; return (n-1); }

7.avg函数的作用是计算数组array的平均值返回。请填空使程序完整、正确。 float avg(float array[10]) {

int i; float avgr, sum=0;

for (i=1; 【______________】; i++) sum+=【______________】; avgr=sum/10;

【______________】; }

8.下面函数的作用是通过递归的方法将字符串倒置。请填空使程序完整、正确。 void fun(char s[], int l, int h) {

if(【______________】) return; else {

char t;

fun(【______________】); t=s[l], s[l]=s[h], s[h]=t; } }

9.下面函数的作用是求任意阶多项式a0+a1x+a2x2+…+an-1xn-1的值并返回多项式的值。请填空使程序完整、正确。

float fun(float a[], int n, int x) {

float y, t=1; int i;

y=【______________】;

for(i=1; i

【______________】; y+=a[i]*t; }

【______________】; }

10.下面rotate函数的作用是将n行n列的矩阵A转置为A'。请填空使程序完整、正确。 # define N 4

void rotate(int a[N][N]) {

int i, j, t;

for(i=0; i

for(j=0; 【______________】; j++) { t=a[i][j];

【______________】; a[j][i]=t } }

11.下面fun函数的作用是将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。请填空使程序完整、正确。 # define N 4

void fun(int a[][N], int b[][N]) {

int i, j;

for (i=0; i

b[i][N-1]=【______________】; 【______________】=a[N-1][i]; } }

12.下面程序中,函数SumColumMin的功能是求出M行N列二维数组每列元素中的最小值,并计算它们的和值,和值返回到主函数输出。请填空使程序完整、正确。 # include # define M 2 # define N 4

int SumColumMin(int a[M][N]) {

int i, j, k, s=0;

for(i=0; i

for(j=1; ja[j]) k=j; s+=【______________】; }

【______________】;

}

void main() {

int x[M][N]={3, 2, 5, 1, 4, 1, 8, 3}, s; s=SumColumMin(【______________】); printf(\}

七、编程题

1.按下列要求分别写出两个函数。

(1)计算n!,计算公式为n!=1×2×3×…×n,函数原型为double fac(int n);

k(2)调用上述函数计算Cm,计算公式为Cm?km!,函数原型为double cmk(int m, int k);

k!(m?k)!3在主函数中调用这两个函数计算C8的结果。

2.编写函数实现冒泡法排序(升序),在主函数中输入数组数据(7,12,-88,23,44,8,33,-100,11,22)并调用函数得到排序结果。 3. 编写函数实现选择法排序(降序),在主函数中输入数组数据(7,12,-88,23,44,8,33,-100,11,22)并调用函数得到排序结果。 4. 编写函数实现快速排序(降序),在主函数中输入数组数据(7,12,-88,23,44,8,33,-100,11,22)并调用函数得到排序结果。

5.编写函数实现折半查找算法。在主函数中输入数组数据(7,12,88,231,244,328,333,1000,1001,2200)并调用函数分别查找2,333,5600是否在数组中。

6.编写函数将给定的一个二维数组(N×N)转置(即行列互换,N是不大于10的数,由输入决定)。在主函数中输入数据并调用函数得到结果。

7.编写函数求3行4列整型数组中最大、最小元素值及它们的位置;要求在主函数中输入数组数据,并输出结果。该整型数组必须为全局变量。

8.编写fun函数void fun(char s1[], char s2[]),将两个字符串s1和s2连接起来存放在s1中。在主函数中输入数据“shanxi”、“xian”并调用函数得到结果。

9.编写实现下面字符串操作要求的函数。在主函数中输入字符串“www.nwpu.edu.cn”,调用该函数并得到结果。

(1)函数Left(char src[], int n, char dest[])将字符串src左边n个字符复制到dest中。 (2)函数Right(char src[], int n, char dest[])将字符串src右边n个字符复制到dest中。 (3)函数Mid(char src[], int loc, int n, char dest[])将字符串src自下标loc开始的n个字符复制到dest中。

10. 编写fun函数long fun(char s[]),将一个数字字符串转换为一个整数(不得调用标准库函数)。例如,若输入字符串“-1234”,则函数把它转换为整数值-1234,在主函数中分别输入字符串\、\,调用函数得到结果。

11. 编写fun函数,函数的功能是移动一维数组中的内容:若数组中有n个整数,要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10;p的值为3。移动后,一维数组中的内容应为5,6,7,8,9,10,1,2,3,4。在主函数中输入数据并调用函数得到结果。

12. 编写fun函数 int fun(int a[],int n),删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,一维数组中的数据是2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,删除后,数组中的内容应为2,3,4,5,6,7,8,9,10。在主函数中输入数据并调用函数得到结果。

本文来源:https://www.bwwdw.com/article/zciv.html

Top