int f(int n); main() { int a=3,s; s=f(a); s=s+f(a); printf("%d\n",s); } int f(int n){ static int a=1;n+=a++;return n;} 语句n+=a++中的a=3还是a=1?它是静态局部变量,主函数中的a=3是对整个程序起作用吗?

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/28 03:18:55
intf(intn);main(){inta=3,s;s=f(a);s=s+f(a);printf("%d\n",s);}intf(intn){staticinta=1;n+=a++;returnn;

int f(int n); main() { int a=3,s; s=f(a); s=s+f(a); printf("%d\n",s); } int f(int n){ static int a=1;n+=a++;return n;} 语句n+=a++中的a=3还是a=1?它是静态局部变量,主函数中的a=3是对整个程序起作用吗?
int f(int n); main() { int a=3,s; s=f(a); s=s+f(a); printf("%d\n",s); } int f(int n)
{ static int a=1;
n+=a++;
return n;
} 语句n+=a++中的a=3还是a=1?它是静态局部变量,主函数中的a=3是对整个程序起作用吗?

int f(int n); main() { int a=3,s; s=f(a); s=s+f(a); printf("%d\n",s); } int f(int n){ static int a=1;n+=a++;return n;} 语句n+=a++中的a=3还是a=1?它是静态局部变量,主函数中的a=3是对整个程序起作用吗?
在s=f(a)的时候;a=1;
static 在编译的时候就分配存储空间一直到程序执行完前再释放
也就是 不释放空间 、、、
所以第一次调用函数执行n+=a++;时 a行加 再进行自增.执行完后空间没有释放,
根据静态局部变量的特点,可以看出它是一种生存期为整个源程序的量.虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值.a=2了.
在执行 s=s+f(a)时 n+=a++;……等于 n+n+a 这时a保留了上次的值为2了;
2)它是静态局部变量,主函数中的a=3是对整个程序起作用吗?
个人觉得不能这么问,因为这个a它并不是什么宏定义啊之类的,所以不存在什么说对整个程序起作用,它的作用范围也就是只能在定义该变量的函数内是使用.
3) 语句n+=a++中的a=3还是a=1?
不知道LZ是不是搞错了?这里的a和主函数中的a并没有什么关系,在不同函数中定义的.
这里的n就是对应着主函数中的a ,函数调用 值的对应关系.
这里的a 就是指int f(int n) 函数定义的a.它定义了a=1.但是随着程序执行a会变(前面解释了)
希望对你有用 ,发现有错联系我
结果是 第一次s为4 后来s为9

C++进制转换问题#include using namespace std;int F(int,int);int main(){int num;int n;coutnum>>n;int z;z=F(num,n);cout 这个代码的意思#include int f(int n){if (n == 1){return 1;}return f(n-1)+n*n;}int main(){int n;while (scanf(%d,&n) == 1){printf(%d ,f(n));}return 0;} c语言 求Fibonacci数列前N项的函数,从主函数输出数列,哪错了..#include#includevoid main(){ int feibo(int n);int n;printf(input n);scanf(%d,&n);printf(%d,int feibo(int n));}int feibo(int n){int i;int f[n]={1,1};for (i=2;i 我想搞个X的Y次方的 算法 #include stdafx.hint main(int argc,char* argv[]){int pow(int x,int y);int a,b,c;scanf(%f,%f,&a,&b);c=pow(a,b);printf(%f ,c);return 0;}int pow(int x,int y){int i,z;i=1;z=x;while(i #include int f(int n); main() {int a=3,s; s=f(a);s=s+=(a);printf(%d ,s); } f(int n) {st解释一下#includeint f(int n);main(){int a=3,s;s=f(a);s=s+=(a);printf(%d ,s);}f(int n){static int a=1;n+=a++;return n;} 麻烦不要复制百度上的答案,int fa(int x){ return x*x; }int fb(int x){ return x*x*x; }int f(int (*f1)(),int (*f2)(),int x){ return f2(x)-f1(x); }main(){ int i;i=f(fa,fb,2); printf(“%d ”,i);} c语言求阶乘的函数int fac(int n){static int f=1; f=f*n; return(f);}main(){int i; for(i=1;i 37、有以下程序 int a=2; int f(int *a) {return (*a)++;} main( ) { int s=0; { int a=5; s+=f(&a); } s+答案为什么是C,37、有以下程序 int a=2; int f(int *a) {return (*a)++;} main( ) { int s=0; { int a=5; s+=f(&a); } s+=f(&a); printf(%d void Function() { printf(Call Function! ); } int main() { void (*p)(); *(int*)&p=(int)Function; #include void f(int *p,int*q); main() {int m=1,n=2,*r=&m; f(r,&n);printf(%d,%d,m,n);}#include void f(int *p,int*q);main(){int m=1,n=2,*r=&m;f(r,&n);printf(%d,%d,m,n);}void f(int *p,int *q){p=p+1;*q=*q+1;}运行后的结果是A 1,3 B 1,2 说说为 int a=2; int f(int a); {return (a)++;} main() {int s=0; {int a=5; s+=f(&&a);} s+=f(&&a); printf(%da=2;int f(int a);{return (a)++;}main(){int s=0;{int a=5;s+=f(&&a);}s+=f(&&a);printf(%d ,s);}执行的输出结果是()A 10 B 9 C 7 D 8 #include void f(int*x,int y) {*x=y+1;y=*x+2;} main() {int a=2,b=2; f(&a,b); printf(%d %d#includevoid f(int*x,int y){*x=y+1;y=*x+2;}main(){int a=2,b=2;f(&a,b);printf(%d %d,a,b);} 16、下面程序的运行结果是:int f( int a[],int n) { if(n>1) return a[0]+f(&a[1],n-1); else return a麻烦说明过程16、下面程序的运行结果是:int f( int a[],int n){ if(n>1) return a[0]+f(&a[1],n-1);else return a[0];}main ( ){ i int 还有int *f(); int f(int a[],int n) { if(n%2==0){ if(n>=1) return f(a,n-1)-a[n-1]; else return 0;} else { if(n>=1)int f(int a[],int n){ if(n%2==0){if(n>=1) return f(a,n-1)-a[n-1];else return 0;}else { if(n>=1)return f(a,n-1)+a[n-1];else return 0;}}main(){int aa[5]= c语言:main()?{int n;?scanf(%d,&n);?if(n++ main() { int n=4; while(n--) printf(%d,--n); } return的意思?#include int f(int i){printf(i=%d ,i);return 0;}int main(void){int i=10;f(i);return 0;}第一个return 为什么return几都是i=10这个答案?