关于c语言的问题,紧急!

来源:百度知道 编辑:UC知道 时间:2024/06/01 13:45:43
#include <stdio.h>
int m=13;
void main()
{ int fun(int x,int y);
int a=7,b=5;
printf("%d\n",fun(a,b)/m);
}
int fun(int x,int y)
{ int m=3;
return x*y-m;
}
#include <stdio.h>
viod main()
{ int a[]={1,3,5},s=1,j,*p=a;
for(j=0;j<3;j++)
s*=*(p+j);
printf("s=%d\n",s);
}
请高手解答一下,这2道题的答案及数学和程序的运算过程,希望详尽一地,我C语言比较菜.....谢谢!!!!

#include <stdio.h>

int fun(int x,int y)
{
int m=3; //局部变量
return x*y-m; //这里的m是本函数fun()的局部变量,其值为3
//x=5,y=7,m=3,所以x*y-m=32
}

int m=13; //全局变量
void main()
{
int fun(int x,int y);
int a=7,b=5;
printf("%d\n",fun(a,b)/m); //这里m是全局变量,其值是13
//fun(a,b)=32,m=13,所以,最后输出2(取整了)
}

#include <stdio.h>
viod main()
{
int a[]={1,3,5},s=1,j,*p=a;
for(j=0;j<3;j++)
s*=*(p+j); //*(p+j)相当于p[j]=a[j],这句相当于s=s*a[i]
//循环3次,所以结果是s=1*1*3*5=15
printf("s=%d\n",s);
}

第一题 应该是考察局部变量与全局变量的

fun(a,b)/m
其中m是全局变量值为13
fun(a,b)如下
int fun(int x,int y) 把a赋给x=7,b赋给y=5,然后计算
{ int m=3; //局部变量覆盖了全局变量m,所以在这个函数里m的值为3,外部变量不受影响.
return x*y-m; //这里是返回值 7*5-3=32;

所以main()函数里fun(a,b)/m就等于32/13 由于都是int类型,忽略小数
最后的值为2

第二题是对数组a中的元素求积的运算。
s=s*(*(p+j))这里的p的运算与a[i]的效果是一样的,所以就是1*