C语言题目 求大佬帮看一下

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-08-01
求大佬帮忙告诉一下这个c语言题的过程 小白一枚

这个程序的运行结果可以有两种方法得出,一是模拟运行。第二种办法是看懂函数fun的功能。
这个函数的功能是把数组中从下标n1开始到n2为止的这一段数组元素进行逆置存放。然后就按着这个方法对整个数组进行三次的函数调用。所以最后的结果,他实际是把A数组中下标从0到3的元素移到数组的后段,应该选择答案C。

这个程序实现的原理是:

循环将非数字字符移动到字符串的开头,然后最后一个非数字字符后面添加一个结束符号0(这样输出的时候字符串只会输出到0的位置,后面的数字就不打印了。)
1、scanf("%s",&str);肯定是错的,str是数组名,表示数组首地址,应该直接写scanf("%s",str);或者写scanf("%s",&str[0]);
2、16行就是我上面说的添加结束符号,要是删除的话,那么打印输出的时候会连同后面数字字符一起输出,就起不到删除数字的做用。

首先说一下题目的答案是:11

程序运行了一下, 截图如下:

下面解析一下原因:

1、根据判断条件来看,当 k = 10时, while 条件不成立。

2、但是需要注意的一点是,在while条件中,使用的是 K++, 而++符号在后面。

3、++运算符使用有两种, 先+1在用, 和先使用在+1。而此处使用的明明是后者。

4、++在后, 变量k==10时,在判断不成立后, 会在进行+1运算,所以最后结果为11。

以上是我对这道题目的解析, 如果对你有帮助,请采纳一下, 谢谢。



当k等于9时,k++,k变为10,10不小于10,循环跳出,k=10

当然是十了,因为是小于十,所以不会到11的,等于十的时候就跳出循环了

应该是11,答案可能有问题

用编译器运行一下不就知道了吗?