我认为代码在C编程语言中不正确

时间:2019-08-04 14:17:40

标签: c

我正在从https://www.learn-c.org/学习C编程语言。在“条件”部分中,我在下面编写了一个练习-

在本练习中,您必须在if函数语句内构造一个guessNumber语句,以检查数字猜测是否等于555。在这种情况下,该函数必须使用{ {1}}条消息printf()。如果猜测值小于555,则必须使用Correct. You guessed it! printf()打印输出;如果猜测值大于555,则必须使用Your guess is too low. printf()

问题是我认为输出不正确。我只想清除疑问。下面是代码

Your guess is too high.

输出为

Your guess is too low.  
Your guess is too high.  
Correct. You guessed it!

1 个答案:

答案 0 :(得分:2)

程序正在演示from __future__ import absolute_import, unicode_literals from quickstart.models import Receipt from celery import shared_task @shared_task def set_something(receipt_id): print("doing something") receipt = Receipt.objects.get(id=receipt_id) receipt.text= "some text" receipt.save() return True 函数如何验证猜测。但这实际上并没有提示人类用户做出任何猜测。

为此,您可以编写以下代码:

guessNumber

这会提示用户输入数字,呼叫#include <stdio.h> int guessNumber(int guess) { if (guess < 555) { printf("Your guess is too low.\n"); return 0; } else if (guess > 555) { printf("Your guess is too high.\n"); return 0; } else { printf("Correct. You guessed it!\n"); return 1; } } int main() { int guess; while (1) { printf("Enter your guess: "); fflush(stdout); if (scanf("%d", &guess) != 1) break; if (guessNumber(guess)) break; printf("Try again.\n"); } return 0; } 进行验证,如果猜测不正确,请重复此过程。为了使guessNumber中的循环知道是否继续,我将main更改为返回guessNumber -如果用户猜到则返回true(1),否则返回false(0)。

这最终有点奇怪。将程序有效地划分为功能是很重要的,但是有点艺术。在这里,int函数检查答案并打印结果,但不进行提示。而且我们可以说最终程序没有正确划分各部分,因为我们不得不引入一个额外的数据路径(我添加的guessNumber返回)才能使程序的两部分与彼此并协调他们的活动。

(当然,在真实程序中,要猜测的数字也不会像这样硬连接到int内部。它可能会作为参数或其他形式传递给我们。)

但是,除了那些古怪的地方,这里还有另外一个有用的教训,那就是,通常,当您编写了一个新函数并且使用该函数的主程序尚未准备就绪时,编写一个完全不同的有用小型guessNumber程序只是为了测试您的新功能。

事实上,当您编写了一个新函数时,无论如何,编写一个小型main程序只是为了测试您的新函数通常是一个好主意。您小的,简单的main程序可以确保您的函数可以在所有测试用例上正常运行,并且现在您知道。如果您对新功能所做的第一件事是将其集成到将要使用它的大型,复杂的主程序中,则会出现两个问题:

  1. 也许大型的,复杂的主程序并没有完全按照您的要求进行操作-也许在一种情况下不会恰好调用它,也许这种情况存在您的错误还不知道。

  2. 如果大型,复杂的主程序调用了您的函数,而出了一些错误,则表明存在错误,这是您的函数还是大型,复杂的主程序中的错误?有时候很难知道。

所以这就是为什么小型,简单的main程序(其技术术语为“ test harness”)只是为了测试功能通常是一个好主意。