有以下程序: #include<stdio.h> int f(int n); main(){int a=3,s; s=f(a);s=s+f(a);printf("%d\n",s); }

有以下程序:
#include<stdio.h>
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;
}
程序运行后的输出结果是().
A.10
B.8
C.7
D.9
求解答过程

#include<stdio.h>
int f(int n);
main(){
int a=3,s;
s=f(a);//s=4
s=s+f(a);//f(a)=5;s=4+5=9;
printf("%d\n",s);
}
int f(int n){
static int a=1;//这里是静态变量,静态变量的特点是赋值语句仅执行一次
n+=a++;//这句话相当于n=n+a;a++;后置++先返回原数值,然后自变量+1
//所以第一次s=f(3)n=3,a=1;n+=1=4,a=2,f(a)=4
//s=4;
//第二次f(3),n=3,(a=1这句话不执行),a=2,n+=2=5,a=3,f(3)=5
//s+=5=9
return n;
}
程序运行后的输出结果是 9;
温馨提示:内容为网友见解,仅供参考
无其他回答

...int f(int n); main() {int a=3,s; s=f(a);s=s+=(a);printf("%d\\n...
main(){ char a[]="369",*p=a;int s=0,t=1;while(*++p) t*=10; \/\/这里的while(*++p)是简写形式,它等价于while(*++p!=0)又等价于 while(*++p!='\\0')。因为"*"和"++"的优先级相同,而且是自由向左结合,p先加1再指向a数组,所以在这条语句中刚开始p是指向a[1]的也...

int f(int n); main() { int a=3,s; s=f(a); s=s+f(a); printf("%d\\n...
这里的n就是对应着主函数中的a ,函数调用 值的对应关系。这里的a 就是指int f(int n) 函数定义的a。它定义了a=1.但是随着程序执行a会变(前面解释了)希望对你有用 ,发现有错联系我 结果是 第一次s为4 后来s为9

int f(int n); main() { int a=3,s; s=f(a); s=s+f(a); printf("%d\\n...
这里的n就是对应着主函数中的a ,函数调用 值的对应关系。这里的a 就是指int f(int n) 函数定义的a。它定义了a=1.但是随着程序执行a会变(前面解释了)希望对你有用 ,发现有错联系我 结果是 第一次s为4 后来s为9

#include<stdio.h> void main() {int a; printf("%d\\n",(a=3*5,a*...
a=3*5是第一部分 a*4是第二部分 a+5是第三部分。

有以下程序: int a=2; int f(int n) {static int a=3; int t=0; if...
程序运行后的输出结果是 __29___。选答案C

35.有以下程序 int a=3; main() {  int s=0; { int...
结果是8 8 知识点1:仔细看这两个a的作用域,颜色不一样的,全局变量和局部变量的区别。知识点2:a++和++a区别,a++是先计算后+1,++a是先+1后计算。下面是++a的情况,结果是10。++a的情况=10

c语言问题#include <stdio.h> int f() { static int i = 0; int s...
a+=f(),f()里面,由于 i 是静态变量static,所以i 的值被保存到现在,i=2,s没保存,s=1,s+=i,s=3;i+=2,i=4,返回s=3,得a+=3,a=4;接着,a=4,a+=f(),f()里面i=4,s=1,s+=i,s=5,i+=2,i=6,返回s=5,得a+=5,a=9;三次完毕,打印a=9;...

#include<stdio.h> void main() { char a='本金',b='年数',c='年利率...
{int x ;printf(“%d\\n”,(x=4*5,x*2,x+20));}A)20B)40C)60D)809.执行以下程序后的输出结果是( )。#include "stdio.h"void main(){int i = 0, j = 0, a = 6;if ((++i0)||(++j0)) a ++;printf("i=%d, j=%d, a=%d\\n", i, j, a);}A)i=0, j=0, a=6B)i=...

#include<stdio.h> main() {int a[3][3]={{1,2},{3,4},{5,6}},i,j...
{ s+=a[i][j];} } printf("%d\\n",s);首先运行第一个for循环满足条件i=1&&i<3===>i只能是1和2 再到第二个for循环满足条件j=0&&j<i===>当i=1时j只能==0,当i=2时j只能是==0或1(条件j<i)如下:i=1 j=0 ===》 s1=a[1][0]+0=3;i=2 j=0 ===》 s2=a[2]...

#include<stdio.h> main()
include<stdio.h> main(){ int s=0, n; for(n=0;n<3;n++) { switch(s) { case 0: case 1: s+=1; case 2: s+=2; break; case 3: s+=3; default: s+=4;

相似回答