花椰菜.988 2022-10-21 11:09 采纳率: 100%
浏览 25
已结题

打出数字,求各位数上的积,而且是一组出一个,可以连续的那种,不知道为什么打的下一个数会和上一个数相乘

#include <stdio.h>
int p=1;
int main() {
int x,t;
while(scanf("%d",&x)!=EOF )
{while(x!=0)
{
t=x%10;
p=p*t;
x=x/10;

}    

}
printf("%d",p);
return 0;
}

  • 写回答

1条回答 默认 最新

  • a5156520 2022-10-21 13:33
    关注

    是因为p没有在while循环初始化为1的原因,导致所有数的数位数字乘积都累积在p里面到最后才打印,所以导致结果出错了。

    可以把打印语句修改下放到第二个while循环后面,然后把p在第一个while循环开始位置初始化为1即可。修改如下:

    #include <stdio.h>
    int p=1;
    int main() {
        int x,t;
        while(scanf("%d",&x)!=EOF )
        {
            p=1; 
            while(x!=0)
            {
                t=x%10;
                p=p*t;
                x=x/10;
            
            } 
            printf("%d\n\n",p);   
        }
        
        
        return 0;
    }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 1月1日
  • 已采纳回答 12月24日
  • 创建了问题 10月21日

悬赏问题

  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟