Riyer不渣 2022-04-08 01:27 采纳率: 100%
浏览 80
已结题

C++使用while语句出现了问题,是想利用while实现“输入1重新开始,输入0结束”

学C++才几天,当时主要是为了方便做数学题,所以写了一段求卡方的代码
一开始没想到用while,后来学到while语句后学以致用,想在不退出程序的情况下进行多次计算,但是出现了问题
同题,代码运行和运算结果没有问题
就是没法实现“输入1重新开始,输入0结束”,而且无论输入什么,都是重新开始循环

#include<iostream>
using namespace std;
int main()
{
    bool num = 1;
    while (num = 1)
    {
        cout << "输入a,b,c,d的值" << endl;
        float a, b, c, d;
        cin >> a >> b >> c >> d;                            //从标准输入流中给a,b,c,d赋值
        float n = a + b + c + d;                            //算n
        float x = a * d - b * c;
        //接下来开始计算(a+b)*(c+d)*(a+c)*(b+d)的值
        float y = a + b, z = a + c;                            //1 令z=a+c
        y = y * z;                                            //2 求得(a+b)*(a+c)
        z = c + d;                                            //3 令z=c+d
        y = y * z;                                            //4 求得(a+b)*(a+c)*(c+d)
        z = b + d;                                            //5 令z=b+d
        y = y * z;                                            //6 1-6步获得(a+b)*(c+d)*(a+c)*(b+d)的值
        //代入公式
        cout << "总数的值为 " << n << endl;
        cout << "交叉相乘的差的平方为 " << x * x << endl;
        cout << "四组和的积为 " << y << endl;
        cout << "卡方的值为 " << n * x * x / y << endl;
        cout << "输入1重新开始,输入0结束:";
        cin >> num;
        cout << endl;
    }
    return 0;
    system("pause");
}

img

如图,第一次循环的最后输入了0,但没能使得程序结束循环
虽然知道可以用其他方法代替,但是这个问题真的折磨我,望解答

  • 写回答

1条回答 默认 最新

  • aboutazhang 2022-04-08 02:38
    关注

    你while循环的条件写错了哦,要判断num是否为1需要用==号,即num==1
    num=1表达式的值恒等于1,这样会是一个死循环哦

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

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月8日
  • 已采纳回答 4月8日
  • 创建了问题 4月8日

悬赏问题

  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”