第9章 指针练习4

更新时间:2023-09-28 13:38:01 阅读量: 综合文库 文档下载

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

指针与函数4

一.选择题

1、以下叙述不正确的是

A) C程序的main函数可以没有参数 B) C程序的main函数可以有参数。

C) C程序的main函数可若有参数时,第一个参数的值最少是1。 D) main函数的第一个参数必须是整型,其名字必须是argv;第二个参数可以定义成: char*argv[ ],名字必须是argv。

2、 若有以下说明和定义,则对fun函数的正确调用语句是

main()

{ int (*a)(int*),*b( ),w[10],c; : : }

fun(int *c) {...}

A) a=fun; a(w); B) a=fun; (*a)(&c); C) b=fun; *b(w); D) fun(b); 3、 以下叙述正确的是

A)C语言中各函数之间既允许直接递归调用也允许间接递归调用 B) C语言中各函数之间既不允许直接递归调用也不允许间接递归调用 C) C语言中各函数之间允许直接递归调用不允许间接递归调用 D) C语言中各函数之间既不允许直接递归调用允许间接递归调用 4、 以下程序的输出结果是

long fib (int n)

{ if (n>2) return (fib(n-1)+fib(n-2)); else return(2); }

main()

{ printf(“%ld\\n”,fit(6) ); }

A) 8 B) 30 C) 16 D) 2 5、 以下程序的输出结果是

main()

{ int i=1, j=3; printf(“%d,”,i++); { int i=0; i +=j *2;

printf(“%d,%d,” , i,j); }

printf(“%d,%d\\n” , i,j); }

A) 1,6,3,1,3. B) 1,6,3,2,3. C) 1,6,3,6,3. D)1,7,3,2,3

6、以下程序的输出结果是

sub( int *s, int *y)

{ static int t=3; *y=s[t]; t-- ; }

main()

{ int a[]={1,2,3,4 },i,x=0;

for(i=0; i<4; i++) { sub(a,&x); printf(“%d”, x); } printf(“\\n”); }

A) 1 2 3 4 B) 4 3 2 1 C) 0 0 0 0 D) 4 4 4 4 7、 以下程序的输出结果是

func( int a, int b) { static int m, i=2;

i+=m+1; m=i+a+b; return(m); }

main()

{ int k=4, m=1,p; p=func(k,m); printf(“%d,”,p); p=func(k,m);

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

A) 8,17 B) 8,16 C)8,20 D) 8,8

8、 以下程序的输出结果是

void fun(int *s) { static int j=0; do

s[j]+=s[j+1]; while(++j<2); }

main()

{ int k,a[10]={1,2,3,4,5}; for(k=1; k<3; k++) fun(a);

for(k=0; k<5; k++) printf(“%d”,a[k] ); }

A) 34756 B) 23445 C)35745 D)12345

9、以下程序的输出结果是

f(int a)

{ int b=0;

static int c=3; a=c ++,b ++; return( a ); }

main()

{ int a=2,i,k;

for(i=0 ; i<2; i++) k=f(a++); printf(“%d\\n”,k); }

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

10 以下程序的输出结果是

int m=13;

int fun2(int x, int y) { int m=3;

return(x * y – m); }

main()

{ int a=7,b=5;

printf(“%d\\n”,fun2(a,b)/m ); }

A) 1 B) 2 C) 7 D) 10

11 C语言中, 形参的缺省的存储类说明是

A)auto ( 自动 ) B) static ( 静态 ) C) register ( 寄存器 ) D) extern ( 外部 )

12 以下叙述不正确的是

A) 一个变量的作用域完全取决于变量定义语句的位置. B) 全局变量可以在函数以外的任何部位进行定义.

C) 局部变量的”生存期”只限于本次函数调用,因此不可能将局部变量的运算结果保

存至下一次调用.

D) 一个变量说明为static存储类是为了限制其它编译单位的引用.

二.填空题

1 假定以下程序经过编译和连接后生成可执行文件PROG.EXE,如果在DOS提示符下键入: PROG ABCD EFGH IJKL (表示Enter键) 则输出结果是:____________.

main (int argc,char *argv[])

{ while(--argc>0) printf(\printf(\}

2 以下程序的输出结果是______.

fun(int x) {int p;

if(x==0||x==1) return(3); p=x-fun(x-2); return p; }

main( )

{ printf(\

3 以下程序的输出结果是_____.

fun (int n,int *s) { int f1,f2;

if (n==1||n==2) *s=1; else

{ fun(n-1,&f1); fun(n-2,&f2); *s=f1+f2; } }

main( )

{ int x; fun(6,&x);

printf(\}

4 以下程序调用invert函数按逆序重新放置a数组中元素的值,a数组中的值在main函数中读入. 请填空.

void invert (int *s, int i , int j) { int t; if(i

{ t=*(s+i); *(s+i)=_____; *(s+j)=t; invert (s,____,j-1); } }

main( )

{ int a[10],i;

for(i=0;i<10;i++) scanf(\ invert(a,0,10-1);

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

5 以下程序的输出结果是_____.

funa(int a, int b) { return a+b;} funb(int a, int b) { return a-b;}

sub (int(*t)( int,int), int x, int y) { return(*t)(x,y); } main( )

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

p=funa;

x=sub(p,9,3); x+=sub(funb,8,3);

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

6、以下程序的输出结果是______.

main()

{ int a=3, b=2, c=1; c-=++b; b*=a+c;

{ int b=5, c=12; c/=b*2; a-=c;

printf(“%d,%d,%d,”,a,b,c); a+=- -c; }

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

7、 以下程序的输出结果是______.

void fun()

{ static int a;

a +=2; printf(“%d”,a ); }

main()

{ int cc;

for(cc=1; cc<=4 ; cc++) fun(); printf(“\\n”); }

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

Top