请教这段C语言程序输出结果为什么是1 0 2 3 没有6个0?

请问描述程序实现的功能... 请问描述程序实现的功能 展开
 我来答
自我编程
2019-11-19 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

静态全局变量初值是0。所以arr初值是0。

最后输出循环是10次,包含10个数组元素1111000000

对于循环嵌套逻辑,要是理不清,在原程序循环的地方加printf语句把对于的一些变量打印处理会更清晰。比如我下面把原码添加了printf。

#include<stdio.h>

int change(int n,int s,int c)

{

    return ((n==0)?(s+c-1)%c:(n+s)%c);

}

static int arr[10];

void solve(int man,int dis)

{

    int i,j,temp,sum=0;

    for(i=2;i<=man;i++)

    {

        sum+=i-1;

        temp=sum;

        printf("执行第%d次i循环:\n",i-2+1);

        for(j=0;j<i-1;j++)

        {

            printf("--第%d次J循环:i=%d,j=%d\n  执行arr[j](arr[%d])=change(arr[j],dis,i)=change(%d,%d,%d)=%d\n",j+1,i,j,j,arr[j],dis,i,change(arr[j],dis,i));

            arr[j]=change(arr[j],dis,i);

            temp=arr[j];

        }

        printf("第%d次i循环结束前执行arr[i-1](arr[%d])=temp(等同于a[%d]的值)\n\n",i-2+1,i-1,j-1);

        arr[i-1]=temp;

    }

}

int main()

{

    int i;

    solve(4,3);

    for(i=0;i<10;i++)

        printf("%4d",arr[i]);

   return 0;


}

追问
题目答案是1 0 2 3 我算的是1 0 2 3 0 0 0 0 0 0
追答
我是照着你图上代码敲了一遍,只是给你演示在循环中插入printf语句来帮助理解过程。
你的图片就那么大,我没打错字,输出结果就应该是对的。你要不你看我和原码打的有什么区别。
而且你看最后的输出
for(i=0;i<10;i++)
printf("%4d",arr[i]);
循环10次,怎么可能就打印4个数。
GrEh3995
2019-11-19 · 贡献了超过107个回答
知道答主
回答量:107
采纳率:0%
帮助的人:6.9万
展开全部
有什么要求?
追问
写出运行结果 分析程序功能
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式