我的循环不会循环

My loop won't loop

本文关键字:循环 我的      更新时间:2023-10-16

我有一个作业,我们必须编写代码来找到适合四个参数的数字。我的想法是将该数字拆分为单独的数字,然后有一个 if 语句来检查该数字是否符合参数。如果没有,我希望它增加一个并循环直到它找到数字。但是,我的循环只运行一次,甚至不返回所有四位数字。关于我应该做什么的任何指示将不胜感激。

#include <iostream>
using namespace std;
int digit_breakdown(int& number);
int main()
{
int number = 1000; //This is the variable I will change to find the         secret number
int last_dig, third_dig, sec_dig, first_dig; // These are variables   that represent each of the four digits
int secret_number = 0; //This variable holds the secret number
do{
number++;
last_dig = number%10; //This series of code breaks up the number into     digits
number /= 10;
third_dig = number%10;
number /= 10;
sec_dig = number%10;
number /= 10;
first_dig = number%10;
number /=10;
if((first_dig != sec_dig) && (first_dig != third_dig) && (first_dig    != last_dig) && (sec_dig != third_dig) && (sec_dig != last$
number = secret_number;
}while((secret_number = 0));
cout << "You found the secret number! That number is " << secret_number;
cout << last_dig << endl;
cout << third_dig << endl;
cout << sec_dig << endl;
cout << first_dig << endl;
}

我已经根据给出的问题陈述更改了逻辑和一些陈述。即使您将按照建议更改 while 循环条件,也不会获得确切的输出。

所以变化是。

A) secret_number在循环开始时分配并保存递增的数字

B) 对变量进行修改操作secret_number

C) 满足条件后使用"中断"。(因为你得到了你的秘密号码)

E)因为你的条件是无穷无尽的,直到你找到一个所需的数字,将循环更改为while(1)[这是可选的,你可以将其设置为某个上限]

F) 显示数字本身。

下面是代码详细信息。

#include <iostream>
using namespace std;
int digit_breakdown(int& number);
int main()
{
int number = 1000; //This is the variable I will change to find the         secret number
int last_dig, third_dig, sec_dig, first_dig; // These are variables   that represent each of the four digits
int secret_number = 0; //This variable holds the secret number
do{
secret_number = ++number;
last_dig = secret_number%10; //This series of code breaks up the number into     digits
secret_number /= 10;
third_dig = secret_number%10;
secret_number /= 10;
sec_dig = secret_number%10;
secret_number /= 10;
first_dig = secret_number%10;
secret_number /=10;
if((first_dig != sec_dig) && (first_dig != third_dig) && (first_dig    != last_dig) && (sec_dig != third_dig) && (sec_dig != last_dig)){
break;
}
}while(1);  //To avoid endless loop you can set some upper_limit
cout << "You found the secret number! That number is " << number<<endl;
cout << last_dig << endl;
cout << third_dig << endl;
cout << sec_dig << endl;
cout << first_dig << endl;
return 0;
}

输出如下:

/WorkDir/checks/stackover> vi loop_digit.cpp
/WorkDir/checks/stackover> g++ -Wall -Wextra -O2 -o loop_digit loop_digit.cpp 
/WorkDir/checks/stackover> ./loop_digit 
You found the secret number! That number is 1022
2
2
0
1

更改

while((secret_number = 0));

while(secret_number == 0);

=是一个赋值运算符,为了进行比较,您需要==

while loop内部if-statement条件之一中还有一个$标志,您可能需要纠正。