c语言看程序写结果

c语言看程序写结果,第1张

请问为什么答案是8 1 9 6 0 ——d>=0时才为数组a赋值,-5 8 1 -3 9 6 -2 -7 0输入中只有8 1 9 6 0符合>=0的条件。

a[0]的值是什么?——显然是8,因为肆敏8是第一个>=0的数,尺雹冲赋给了a[0]。

我做出来的陵歼答案是a[1]=8 a[2]=1 a[3]=9 a[4]=6, 8 1 9 6——肯定不是这个结果,依次应该是1 9 6 0。

a[5]=0但是for循环输出j<5,只会到a[4],求解最后的0是怎么得出的——代码没有 *** 作到a[5],只 *** 作到a[4],最后d==0时赋给了a[4],所以a[4]的值是0。

for(int j=0j<lj++)

          {

               s[j]*=i

               s[j+1]+=s[j]/10

               s[j]%=10

          }

这里错了,宴散谈 i=4时数组中存的是6, j=0,  s[0]=6*4=24, 需要进位, s[1]=2, 进位后s[0]=4,到此为止还是对的,然后接着j++后又要算s[1]=2*4=8这个就不应该算了,因为2是进位不应该再参与计算。

应该用一个变量来存储进位的数据,在对每位乘完之后再加上进位数, 同时每次计算时没必要一直算到末尾。

从原来的外层for循环开始的代码替换成下面掘晌的代码试试, 手头没有编译器,不保证没有错误哈:

int len=1

for(int i=1 i<=n i++)

{

    int plus=0

    for(int j=0 j<len j++)

    {

        s[j] = s[j]*i + plus

        plus = s[j]/10

        s[j] %= 晌碰10

    }

    while(plus>0)

    {

        s[len++] = plus%10

        plus /= 10

    }

while(len>0)

    cout<<s[--len]

cout<<endl


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12240828.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存