提问人:detour 提问时间:9/20/2023 更新时间:9/20/2023 访问量:50
CS50 - 人口 - 而“小于”接受相等值
cs50 - population - while 'less than' accepts an equal value
问:
#include <cs50.h>
#include <stdio.h>
int main(void)
{
// TODO: Prompt for start size
int n;
do
{
n = get_int("Positive Interger Greater Than 9: ");
}
while (n < 9);
// TODO: Prompt for end size
int x;
do
{
x = get_int("Positive Int. Greater Than Start: ");
}
while (x < n);
// TODO: Calculate number of years until we reach threshold
int y = 0;
do
{
n = n + (n / 3) - (n / 4);
y++;
}
while (n < x);
// TODO: Print number of years
printf("Years: %i\n", y);
}
这就是我所拥有的,其他一切似乎都有效 但是当我尝试在开始提示中输入时,“9” 程序接受该输入,即使 9 < 9 是错误的陈述,因此应该再次提示,对吧?
我在这里错过了什么?
下一个提示也会发生同样的事情,其中输入必须小于原始输入 (n) 当我输入相同的值时,程序会接受它,而不是提示我进行新的输入
我尝试将其更改为 n < 10,但我只是觉得这似乎不是正确的解决方案,是吗?
特别是考虑到第二部分,我必须使它比前一个 int 少
答:
0赞
chux - Reinstate Monica
#1
考虑像注释的要求一样进行编码:
// do {
// n = get_int("Positive Interger Greater Than 9: ");
// } while (n < 9);
do {
n = get_int("Positive Integer Greater Than 9: ");
} while (!(n > 9)); // Repeat if n > 9 not satisfied.
(提示:还要运行拼写检查器。
评论
0赞
Zakk
9/20/2023
正整数,所以它必须是 。!(n < 0) && !(n > 9)
0赞
chux - Reinstate Monica
9/20/2023
@Zakk 由于数字必须> 9,因此要求它是正数是多余的。提示可以是 。"Integer Greater Than 9: "
0赞
Zakk
9/20/2023
如果 OP 必须明确告诉用户他做错了什么,那么他必须进行该检查。否则你是对的。
评论
do ...while ... ;
while(!(n>9));
while(n <= 9);
while(n < 10);