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日

悬赏问题

  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题