C语言程序设计函数问题

C语言函数习题:以下函数定义正确的是: ( a    )A.  double  fun(int x, int y)   B. double  fun(int x;  int y)C.  double  fun(int x, int y) ;   D. double  fun(int  x , y) 2.   C语言规定,简单变量作实参,它与对应形参之间的数据传递方式是: (  b  )地址传递;                  B.  单向值传递;C. 双向值传递; D.  由用户指定传递方式3. 以下关于C语言程序中函数的说法正确的是: ( b )A.函数的定义可以嵌套,但函数的调用不可以嵌套;B.函数的定义不可以嵌套,但函数的调用可以嵌套;C.函数的定义和调用均不可以嵌套;D.函数的定义和点用都可以嵌套。4. 下面程序的正确运行结果是: (d ) main( )   {  int a=2, I;    for(I=0;I<3;I++)    printf(“%4d”,f(a) );     }   f( int a) {  int b=0;  static  int c=3; b++;  c++;      return (a+b+c);   }A.7 7 7       B.7 10 13       C.7 9 11    D.7   8 95.下面程序的运行结果是:__15___main(  )     {  int  i=5;                      printf(“%d\n”, sub(i) ) ;  }sub  ( int n )    {  int  a ;    if  ( n==1)  a=1;    else     a=n+sub(n-1);     return( a ) ; }6. 下面程序的功能是利用函数调用求两整数的最大公约数,请填空。     main( )     {  int  a, b ,c;        scanf(“%d, %d”, &a, &b ) ;        c = gongyue( a,  b ) ;        printf(“%d\n”, c ) ;  }     gongyue( int num1,  int num2 )     { int   temp, x, y ;       if (_num1<num2_____)           {  temp=num1;   num1=num2 ;  num2=temp ;  }       x=num1 ;   y=num2 ;       while(_x%y!=0______)             { temp=a%b ;   a =b ;   b = temp ; }       return ( a ) ;  }备注:上面答案未必正确,有不同答案的请直接提出,并予以说明!特别是第5/6题,希望有高手讲解下!谢谢

第1个回答  2011-11-26
(a)。C ---A中语句结束没有分号,B中参数分割用了分号,应该是逗号隔开,D中y没有类型
2. B ---A中地址传递应该用指针或数组名,这个是双向值传递。
3. 应该是B吧,函数内部不能嵌套定义函数。但是函数可以嵌套调用
4.D 循环中c是静态变量,存储在全局区域,b是局部变量存在栈区,在第一次I=0时,a+b+c=7(2+1+4)返回7后,函数f(int a)调用退出,静态数据c仍为4而b由于函数的返回而数据丢失
进入第二次循环I=1时,所以a+b+c就是2+1+5=8,同理3
5. 15 开始调用sub(5),由于i=5,所以执行a=n+sub(n-1)=5+sub(4),这时又调用sub(4),执行else后语句为a=5+(n+sub(n-1))=5+4+sub(3),依次类推直到n=1,就是5+4+3+2+1=15

6。 在哪里填空?怎么在函数gongyue(int,int)中还有主函数中得a,b变量啊,搞错了吧!题目在写下看看~
第2个回答  2011-12-02
您好,

第一题 C , 您的答案,A答案后面没有分号C语言一句话是以分号作为结束语的。
第二题 B
第三题 B
第四题 D static int c=3; 静态变量,只做一次初值赋值,即:第一次调用c=3
而B只是int ,并没有static,所以B的赋值没有改变
第五题 15 a=5+sub(4)=5+4+sub(3)=5+4+3+sub(2)=5+4+3+2+sub(1)=5+4+3+2+1=15
第六题 我不知道空在哪,但是我写了一个求最大公约数的,希望对你有所帮助
int f1(int a,int b)
{int x;
x=a>b?b:a;
while (x>1 && (a%x!=0 || b%x!=0))
x--;
return x;
}

main()
{
int a,b,x;
printf("输入两个正整数:");
scanf("%d%d",&a,&b);
x=f1(a,b);
printf("%d 和 %d 的最大公约数是 %d\n",a,b,x);
}本回答被网友采纳
第3个回答  2011-11-27
- -
第4个回答  2011-11-27
afasff
第5个回答  2011-11-26
a,b,d,d
相似回答