请问这个代码是啥意思啊🆘

下列程序段执行后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进行赋值。

代码执行过程如下:

  1. 初始化变量i为5,变量s为0。
  2. 进入while循环,首先将i减1,此时i的值为4。
  3. 判断表达式1%2的值是否为0,因为1除以2的余数为1,所以表达式的值为1,不等于0,因此执行else语句块中的代码。
  4. St=1i语句的意思是将变量s的值赋为1乘以变量i的值,即s=1*4,因此s的值变为4。
  5. 回到步骤2,继续循环,将i减1,i的值变为3。
  6. 判断表达式1%2的值是否为0,因为1除以2的余数为1,所以表达式的值为1,不等于0,因此执行else语句块中的代码。
  7. St=1i语句的意思是将变量s的值赋为1乘以变量i的值,即s=1*3,因此s的值变为3。
  8. 回到步骤2,继续循环,将i减1,i的值变为2。
  9. 判断表达式1%2的值是否为0,因为1除以2的余数为1,所以表达式的值为1,不等于0,因此执行else语句块中的代码。
  10. St=1i语句的意思是将变量s的值赋为1乘以变量i的值,即s=1*2,因此s的值变为2。
  11. 回到步骤2,继续循环,将i减1,i的值变为1。
  12. 判断表达式1%2的值是否为0,因为1除以2的余数为1,所以表达式的值为1,不等于0,因此执行else语句块中的代码。
  13. St=1i语句的意思是将变量s的值赋为1乘以变量i的值,即s=1*1,因此s的值变为1。
  14. 回到步骤2,继续循环,将i减1,i的值变为0。
  15. 判断表达式1%2的值是否为0,因为1除以2的余数为1,所以表达式的值为1,不等于0,因此执行else语句块中的代码。
  16. St=1i语句的意思是将变量s的值赋为1乘以变量i的值,即s=1*0,因此s的值变为0。
  17. 回到步骤2,继续循环,将i减1,i的值变为-1。
  18. 判断表达式i--的值是否为0,因为i的值为-1,所以表达式的值为非0,不执行continue语句,而是退出while循环。
  19. 最终,变量s的值为最后一次执行else语句块中代码后的值,即0。

因此,根据上述执行过程,最终变量s的值为0,选项D正确。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7621986
  • 这篇博客也不错, 你可以看下(C)输入整数数组,奇数移到偶数之前且奇偶部分分别有序(2019.11.7)
  • 除此之外, 这篇博客: C语言学习笔记(浙大翁恺版)第九周(指针部分)(1)中的 9.1.4 指针与数组 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 将变量传递到函数中,函数得到的是变量的值。将指针传递到函数中,得到的是地址。那么把数组传递进去呢?我们用sizeof测试一下

     可以看到,在主函数中数组的大小就是每个数组元素占据的空间之和。而在函数中数组大小正好为一个地址/指针的大小。

    warning信息提示说:函数里的数组sizeof返回的是int*的大小而不是int[]的大小

    我们再查看下数组在主函数和函数的地址:

     可以看到无论在主函数还是函数中,数组a的地址相同。也就是说传到函数里的a就是外面的数组。

    我们再试试,如果在函数里直接更改数组的值,到主函数里会不会发生改变?

     于是综合一下前面的测试,我们得出结论:传递到函数的数组实际上是个指针!这也就解释了,为什么在函数的参数表中数组要留个括号,为什么在方括号里写上数组大小也没用。

    那它既然是个指针,直接在函数头写指针如何?

    没问题!编译运行都ok!warning都没有

  • 您还可以看一下 朱有鹏老师的内存这个大话题-4.1.C语言专题第一部分课程中的 4.1.9、复杂数据结构小节, 巩固相关知识点