C语言,题目有图,基础比较差,希望过程详细一些!!!

56.请写出以下程序的运行结果。#include<stdio.h>intDivide(longx){ints=0;while(x!=0){s+=x%10;x/=10;}r... 56. 请写出以下程序的运行结果。
# include < stdio. h>
int Divide(long x){
int s=0;
while(x!=0)
{s+=x% 10;x/=10;}
return s;
}
void main(){
printf("%d\n" ,Divide(43961));
}
展开
 我来答
自我编程
2021-03-02 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

结果是23,这个代码就是将43961这个数字,从最低位开始取,然后将每一位数字累加到一起(1+6+9+3+4累加在变量s中)并返回

Divide这个函数就是将传入的数值x通过循环取余(x%10)再取整(x/10)来实现从个位开始取出每一位数字并累加在s变量中(s+=x% 10)

关于取余再取整的思路理解,你可跟这程序走一遍:

步骤1:mian函数调用Divide函数,并传入数字43961。

步骤2:执行Divide函数,变量x值=43961,s初值=0。

步骤3:开始循环,循环条件:只要x不是0就一直循环(while(x!=0))。

循环第一次:s+=x% 10;x/=10;(此时x=43961,所以x%10=1,s=0+1=1。执行x/=10后x变成4396)第一次执行结束x=4396,s=1。

循环第二次:s+=x% 10;x/=10;(此时x=4396,所以x%10=6,s=1+6=7。执行x/=10后x变成439)第二次执行结束x=439,s=7。

循环第三次:同上,执行结束x=43,s=16。

循环第四次:同上,执行结束x=4,s=19。

循环第五次:同上,执行结束x=0,s=23。

步骤4:循环结束,返回s的值,并在main函数中执行打印。

zhangsonglin_c
高粉答主

2021-03-02 · 醉心答题,欢迎关注
知道大有可为答主
回答量:3.7万
采纳率:83%
帮助的人:6819万
展开全部
函数devide求的是一个整数的各位数字之和。x%10运算,得到个位数,x/=10,将x向右移10进制的一位,10位变个位。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式