下列程序段执行后s的值为()。
int i=5, s=0;
while(i--)
if (1%2) continue;
else St=1i
O A. 15
O B. 10
O C. 9
• D. 6
你都懒到家了,纯靠自动识别文字,自己一点都不改呀
int i=5, s=0;
while(i--)
if (i%2) continue;
else s+=i;
printf("%d",s);
答案是D
随便举例写的代码,while内就拆解成类似下面这样去计算,对于while内的i--,拆成下面的while附近的4句去套:
int i=5, s=0;
int tmp=i;
while(tmp)
{
i=i-1;
tmp=i;
if(i%2)
continue;
else
s=1+i;
}
你的程序是错的else St=1i是什么鬼
该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下。
【选项D正确】,原因如下:
这段代码是一个简单的循环语句,在循环内根据条件对变量s
进行赋值。
代码执行过程如下:
i
为5,变量s
为0。while
循环,首先将i
减1,此时i
的值为4。1%2
的值是否为0,因为1除以2的余数为1,所以表达式的值为1,不等于0,因此执行else
语句块中的代码。St=1i
语句的意思是将变量s
的值赋为1乘以变量i
的值,即s=1*4
,因此s
的值变为4。i
减1,i
的值变为3。1%2
的值是否为0,因为1除以2的余数为1,所以表达式的值为1,不等于0,因此执行else
语句块中的代码。St=1i
语句的意思是将变量s
的值赋为1乘以变量i
的值,即s=1*3
,因此s
的值变为3。i
减1,i
的值变为2。1%2
的值是否为0,因为1除以2的余数为1,所以表达式的值为1,不等于0,因此执行else
语句块中的代码。St=1i
语句的意思是将变量s
的值赋为1乘以变量i
的值,即s=1*2
,因此s
的值变为2。i
减1,i
的值变为1。1%2
的值是否为0,因为1除以2的余数为1,所以表达式的值为1,不等于0,因此执行else
语句块中的代码。St=1i
语句的意思是将变量s
的值赋为1乘以变量i
的值,即s=1*1
,因此s
的值变为1。i
减1,i
的值变为0。1%2
的值是否为0,因为1除以2的余数为1,所以表达式的值为1,不等于0,因此执行else
语句块中的代码。St=1i
语句的意思是将变量s
的值赋为1乘以变量i
的值,即s=1*0
,因此s
的值变为0。i
减1,i
的值变为-1。i--
的值是否为0,因为i
的值为-1,所以表达式的值为非0,不执行continue
语句,而是退出while
循环。s
的值为最后一次执行else
语句块中代码后的值,即0。因此,根据上述执行过程,最终变量s
的值为0,选项D正确。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
将变量传递到函数中,函数得到的是变量的值。将指针传递到函数中,得到的是地址。那么把数组传递进去呢?我们用sizeof测试一下
可以看到,在主函数中数组的大小就是每个数组元素占据的空间之和。而在函数中数组大小正好为一个地址/指针的大小。
warning信息提示说:函数里的数组sizeof返回的是int*的大小而不是int[]的大小
我们再查看下数组在主函数和函数的地址:
可以看到无论在主函数还是函数中,数组a的地址相同。也就是说传到函数里的a就是外面的数组。
我们再试试,如果在函数里直接更改数组的值,到主函数里会不会发生改变?
于是综合一下前面的测试,我们得出结论:传递到函数的数组实际上是个指针!这也就解释了,为什么在函数的参数表中数组要留个括号,为什么在方括号里写上数组大小也没用。
那它既然是个指针,直接在函数头写指针如何?
没问题!编译运行都ok!warning都没有