计算机二级c语言static 一道题,求大神解答

有以下程序: #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) 9 B) 8 C) 7 D) 10 答案是9而不是8,可是第一次执行完后n的值是4,但是a是静态变量,第二次执行的时候应该是4+1+3=8 为什么答案是9,跪求大神解答,谢谢!

第1个回答  2019-01-22
s=f(a);
////////static
变量不会随着函数调用完成而被回收的而且只会初始化一次,第一个s=f(a);时候int
f(int
n
)里面的static
int
a
已经变成了2;等到第二次调用s=s+f(a);其实就变成了
s
=
4(原来的S)
+
3(f的参数a)
+2(f里面的静态变量a);

计算机二级C语言程序的一个题目,不知道答案怎么来的。求解析
初值就是你在定义变量的同时就可以给他赋一个初始值 比如 int i=0;就是定义一个变量,并赋予初值0 一般是为了防止程序中误操作导致直接使用未赋值的变量进行计算 变量变量,之所以叫变量就是他的值是可以改变的,所以即使有初值也可以用赋值的手段来改变变量的值 这道题的话,因为scanf中要求的格式...

计算机二级C语言程序的一个题目,不知道答案怎么来的。求解析
最后,int 类型的变量,是整数型,12.3是带小数点的,如果把12.3赋值的任何int类型的变量,那么编译器会自动四舍五入,变成12了,scanf()是个C语言自带的输入函数,这个函数的参数有两个比如上面的,scanf("%d",&k),这个%d是指明接收的数是int类型,如果是小数,那就是%f,&k的意思是将输入的...

计算机二级c语言,我这最后一题能得几分?
因为这是递归调用,这里的返回值是很重要的,如果人工阅卷,估计会酌情给分,但如果是机器阅卷,给的分数应该会很少。空格无所谓的

两道题:计算机二级C语言?
…这一步的赋值运算是错误的。而C括号内有两种运算符,双等于号==是个逻辑运算符,是个判定运算,然后是赋值运算,没有问题。A中b=1改成b==1后还是错误,因为在括号右边还有个赋值运算,(b==1)=1,那么右边这个赋值运算也变成了给常量赋值,属于又多了一个错误。S的定义前有个static关键字,表...

急!!历年国家计算机二级c语言笔试真题答案。
2010年9月全国计算机二级C语言笔试试题:文字版 一、选择题(每小题2分,共70分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是 A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 B)线性表的链式...

计算机二级c语言问题,麻烦讲一下过程,麻烦不懂的千万不要回答,你回答会...
\/\/你的for执行2次,分别是0\/1,因此你的f里面都是计算elseelse{int a = 7; t += a++;}\/\/这里出来的t = 7;而计算后的a = 8;\/\/在到return时,return t += a++;\/\/注意此时的a为f里面的a,而不是else里面的a,因此这里的a=5;\/\/所以return 7 + 5;\/\/执行2次后,因此结果等于...

全国计算机等级考试二级C语言历年试题及答案
2010年9月全国计算机等级考试二级C语言笔试试题及答案一、选择题((1)-(10)每题2分,(11)-(50)每题1分.共60分))(1)下列选项中不属于软件生命周期开发阶段任务的是 A)详细设计 B)概要设计 C)软件维护 D)软件测试(2)树是结点的集合,它的根结点数目是A)有且只有1 B)1或多于1 C)0或1 D)至少2(3)...

计算机二级C语言选择题求助,请问下图里边为什么p的值没变啊?如果要变...
首先你要知道考的是什么考的是,形参和实参之间传值现象,形参是实参的拷贝本.什么是拷贝本,请看下图.修改的话,你应该使用二级指针,C++中可以使用引用

计算机等级考试二级C语言中那道程序设计题的评分标准是什么
计算机二级C语言题型和评分标准:1、选择题:40题,每题1分。按标答给分 2、程序填空:3处空,每空6分。共18分,按标答给分,如果和标答的写法不一样,就算对的也没有分。每一空有每一空的分数。做对一空就给6分 3、程序改错:2处错误,每处9分,共18分。都是\/*found*\/下面的一行有错误...

计算机二级C语言题
答案是A啊。'a'++自然是错误的,'a'是常量,不可能++;但++的不是'a',而是指针a指向的内容*a,*a=c2,c2是变量可以++;c2原来是'a',c2++当然就是'b'了。至于你说的“不能给实参”的问题,你理解成变量传递了,而这里是指针传递:传递的是指向变量的指针,函数中直接对指针指向的内容操作...

相似回答
大家正在搜