计算机程序设计

请读程序: #include f(int b[],int n) { int i,r;r=1; for(i=0;i<=n;i++)r=r*b[i]; return r; } main() { int x,a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf("%d/n",x); } 上面程序的输出结果是()A、720B、120C、24D、6

题目

请读程序: #include f(int b[],int n) { int i,r;r=1; for(i=0;i<=n;i++)r=r*b[i]; return r; } main() { int x,a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf("%d/n",x); } 上面程序的输出结果是()

  • A、720
  • B、120
  • C、24
  • D、6
参考答案和解析
正确答案:B
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

请读程序: include f(int b[],int n) { int i,r; r=l; for(i=0;i<=n;i++

请读程序: # include<stdio.h> f(int b[],int n) { int i,r; r=l; for(i=0;i<=n;i++)r=r*b[i]; return r; } main() { int x a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf ("%d\n",x); } 上面程序的输出结果是 ( )

A.720

B.120

C.24

D.6


正确答案:B

第2题:

有以下程序 include define F(X,Y) (X)*(Y) main( ) { int a=3, b=4; prin

有以下程序

#include <stdio.h>

#define F(X,Y) (X)*(Y)

main( )

{ int a=3, b=4;

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

}

程序运行后的输出结果是

A.12

B.15

C.16

D.20


正确答案:A
解析:本题考查了带参数的宏定义。参数只是进行简单的替换而不是把其值求出后替换形式参数。本题中用a++替换X,用b++替换Y,再求(a++)*(b++)的值。

第3题:

下列程序的输出结果是()。 include main() {int a=2,b=3,p; p=f(a,B) ; pdntf("%d",p);

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

#include<stdio.h>

main()

{ int a=2,b=3,p;

p=f(a,B) ;

pdntf("%d",p);

}

int f(a,B)

{ int c;

if(a>B) c=1;

else if(a==B) c=0;

elSe c=-1;

return(C) ;

}

A.-1

B.0

C.1

D.2


正确答案:A
解析:本题考查if else语句。在int f(a,b)中:第一个if语句,先判断条件,发现a>b条件不成立,则执行与其配对的else语句:第二个if语句,先判断条件,发现a==b条件不成立,则执行与其配对的else语句,c=-1。

第4题:

下列程序的运行结果为【】。 include include {int a; char b[10]; double c;};

下列程序的运行结果为【 】。

include<stdio.h>

include<string.h>

{ int a; char b[10]; double c; };

void f (struct A *t);

main()

{ struct A a={1001,"ZhangDa",1098.0};

f(&a) ; printf("%d,%s,%6.lf\n",a.a,a.b,a.C);

}

void f(struct A*t)

{ strcpy(t->b, "ChangRong");}


正确答案:1001ChangRong1098.0
1001,ChangRong,1098.0 解析:本题主要考查结构体变量赋初值,刚一开始给a赋值1001,b数组什"zhangDa",c赋值1098.0,由于被调函数中引用了结构体成员b,因此在使用strcpy时,strcpy(字符数组1,字符串2),作用是将字符串2复制到字符数组1中, b数组变成了"ChangRong",所以在最后输出时,结果为:1001,ChangRong,1098.0。

第5题:

有以下程序 include int a=1; int f(int c) { stati

有以下程序 #include <stdio.h> int a=1; int f(int c) { static int a=2; c=c+1; return (a++) + c; } main() { int i, k=0; for(i=0;i<2;i++) { int a=3; k += f(a); k +=a; printf("%d\n",k); }

A.14

B.15

C.16

D.17


正确答案:A
解析:静态局部变量的作用域跟一般局部变量相同,都是从声明处开始到声明所在函数或语句块结束为止。但静态局部变量的生存周期却是从第1次执行到该静态局部变量的声明语句时起,直到程序结束。而—般局部变量的生存周期到离开它的作用域时就结束了。本题的f()函数中static int a=2;语句就声明了一个静态局部变量a,并初始化为2。主函数中,通过一个for循环连着调用了2次f()函数。两次调用形参c都为3,f()函数中让c增1变为4,然后输出(a++) +c,第1次调用a为2,所以输出结果为3+4=6,而第2次调用a被上次调用时的++运算符增1,所以为3,输出结果为3+4=7。所以主函数for循环结束后,k的值是13,下面一条k+=a;语句中的a是全局变量a,值为1。故最终输出结果是14,应该选择 A。

第6题:

请读程序:includemain(){int a,b; for(a = 1,b = 1 ;a<= 100;a++) {if(b>=20)break;if

请读程序: #include <stdio.h> main() { int a,b; for(a = 1,b = 1 ;a <= 100;a++) { if(b>=20) break; if(b%3 ==1) { b +=3;continue; } b-=5; } printf("%d\n",a); } 上面程序的输出结果是( )。

A.7

B.8

C.9

D.10


正确答案:B
解析:本题考查break语句和continue语句。程序要输出循环结束时循环变量a的值,执行第一次循环时,条件(b%3==1)为真,b=4,继续下一次循环,如此反复,当b=22时,条件(b>=20)为真,跳出循环,此时共循环8次,即a=8。

第7题:

下面程序的运行结果是[]。include int f(int a[],int n){ if(n>1)return a[0]+f(a+1,n-1

下面程序的运行结果是[ ]。

include <stdio.h>

int f(int a[],int n)

{ if(n>1)

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

else

return a[0];

}

main()

{int aa[10]={12,3,4,5,6,7,8,9,10},s;

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


正确答案:18
18 解析:实参中aa+2是指将数组元素3的地址传递绐形参a,应当注意—点,用数纽名作函数实参时,不是把数组的值传给形参,而是把实参数组的地址传绐形参数组,两个数组共用一段内存单元。所以a[]={3,4,5,6,7,8,9,10),n=4,a[0]=3。形参中a+1表示数组元素4的地址传递绐形参a,所以a[0]+f(a+1,n-1)=3+f(a+1)),3),此时a[]={4,5,6,7,8,9,10),n=3,a[0]=4。n=3同样满足n>1的条件a[0]+f(a+1,n-1)=4+f(a+1,2)此时a[]={5,67,8,9,10},n=2, a[0]=5。n=2同样满足n>1的条件a[0]+f(a+1,n-1)=5+f(a+1,2)此时a[]={6,7,8,9,10},n=1,a[0]=6。n=1不再满足条件返回a[0]=6, 6+5+4+3=18,所以最后的结果为18。

第8题:

下列程序的输出结果是()。 include f(int a) {int b=0; static int c=4; a=c++;b++; re

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

#include<stdio.h>

f(int a)

{ int b=0;

static int c=4;

a=c++;b++;

return(a);

}

main()

{ int a=2,i,c;

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

C=f(a++);

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

}

A.4

B.7

C.6

D.5


正确答案:D
解析:本题考查静态变量的使用方法和for循环。在函数调用时,static变量在函数调用结束后所作的所有变化均不保持,所以当i=1时,第2次进入f函数时c=5,所以最终main函数中c的值为5。

第9题:

有以下程序 include void fun(int n, int *p) { int f1,t2; if(n==1 |

有以下程序 #include <stdio.h> void fun(int n, int *p) { int f1,t2; if(n==1 ||n==2) *p=1; else { fun(n-1,&f1); fun(n-2,&f2); *p=f1+f2; } } main() { int s; fun(3,&s); printf("%d\n", s ); }

A.2

B.3

C.4

D.5


正确答案:A
解析:在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。本题中的fun()函数直接调用了自身,所以它是一个递归函数。fun()函数中,当形参n为1或2时,让形参p所指内容为1。从这里可以看出形参p的用途是输出一个整数,所以我们不妨记作fun(1)=1、 fun(2)=1。如果是其他情况,那么输出结果*p的内容为f(n)=f(n-1)+f(n-2)。由此可见, fun()函数的作用是求斐波纳契数列第n项的值(斐波纳契数列第1和2项的值为1,以后各项分别为前两项之和:1、1、2、3、5、8、13……)。主函数中通过fun()函数,求第3项值;所以输出结果为2,故应该选择A。

第10题:

下列程序执行输出的结果是______。 include f (int a) {int b=0;static c=7;a=c++; b++

下列程序执行输出的结果是______。

include <stdio.h>

f (int a)

{ int b=0;

static c=7;

a=c++; b++;

return (a);

}

main()

{ int a=2,i,k;

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

k=f(a++);

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

}


正确答案:8
8 解析:第1次for循环,i=0,调用函数f(2),然后将a的值加1,在f()函数中,变量c为static类型,所以c=8;第2次for循环, i=1,调用函数f(3),然后将a的值加1,调用函数f(3)时,a=c++=8,所以k=8。

更多相关问题