请教有关C语言的问题

以下程序运行后的输出结果是:#include<stdio.h>main(){charb[]="ABCDEFG",*chp=&b[7];while(--p>&b[0])pu... 以下程序运行后的输出结果是:
#include<stdio.h>
main()
{ char b[]="ABCDEFG", *chp=&b[7];
while( --p > &b[0]) putchar( *chp);
putchar('\n');
}
麻烦各位大虾帮帮忙了,万分感谢,最好能把分析写一下!
展开
 我来答
翡翠翔
2009-03-24 · TA获得超过402个赞
知道小有建树答主
回答量:268
采纳率:0%
帮助的人:304万
展开全部
#include<stdio.h>
void main() //前面要加一个void,表示没有返回类型
{
char b[]="ABCDEFG", *chp=&b[7];/*定义一个字符型数组b[]和一个字符型指针*chp,并把b的第8个元素地地址赋给它*/
while( --chp > &b[0]) putchar( *chp); /*先把chp的值减1,再把值赋给chp,
即为:chp=&b[6];再判断它与数组第一个元素地址哪个大,如果chp大,即条件成立,那么就执行它后面的putchar(*chp);
如果不成立就执行下面这条语句,输出一个换行符,程序结束*/
putchar('\n');
}//输出结果为:GFEDCB
如果还不懂的话,你可以加我451952356
良微兰居画
2019-08-28 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:28%
帮助的人:981万
展开全部
10
因为S每次进入循环都会被赋值为1,那么我们可以直接跳到外层循环的最后一次进入,看K为多少。
第一次进入k=2,第二次k=4
所以最后一次,k=4,s=1,当j=4时,s
=
4
+
1,那么是s
=
5,当j=5时,s
=
5
+
5,那么s
=
10.
然后退出循环,所以s
=
10
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陀梅花舜碧
2019-09-17 · TA获得超过3.5万个赞
知道大有可为答主
回答量:1.2万
采纳率:25%
帮助的人:917万
展开全部
选D.
10
首先k一开始等于2,每次加2,所以k=2,4;
但因为s每次都等于一,所以只需考虑k=4时的情况——
j=4,5
则s=1+4+5;
最后输出s,此时s=10;
故答案选D。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暴孝不词
2020-04-07 · TA获得超过3.6万个赞
知道小有建树答主
回答量:1.2万
采纳率:30%
帮助的人:1045万
展开全部
第一个循环:s=1+2+3+4+5
再循环:s的值又变成1,子循环从4开始,s=1+4+5=10
所以
先D
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
965225646
2009-03-24 · TA获得超过289个赞
知道答主
回答量:145
采纳率:0%
帮助的人:0
展开全部
结果GFEDCB
你程序有点小问题,将while( --p > &b[0]) 改为while( --chp > &b[0])
--p的意思是每循环一次将字符数组的元素向前提一位,当*p<a[0]时退出循环,初始化时*chp=&b[7]; 将b[7](最后一个元素G)的值赋给*chp.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式