计算机科学:程序正确性

学习计算机科学的概念,示例问题和解释

大学导师应用商店 大学导师安卓商店

例子问题

例子问题1:程序的正确性

使用函数

考虑下面的c++代码来执行以下减法:

9 - 6:

# include < iostream >

使用命名空间std;

Int main() {

Int total = 0;

cout << "此代码执行以下数学运算:9 - 6 = ";

Total = sub(6,9);

Cout << total;

Int sub(Int num1, Int num2) {

返回(num2 - num1);

代码有什么问题吗?

可能的答案:

这段代码没有任何问题。

函数原型缺失。

代码缺少数学库。应该有

# include

参数总数应该颠倒。如:total = sum(9,6);

正确答案:

函数原型缺失。

解释

查看每个答案,我们可以看到子函数中传递的参数的顺序是正确的,因为num1是从num2减去的。此外,对于简单的数学操作,不需要包含数学库。最后,任何操作都可以在函数或main中完成;但是,没有错误的方法,创建和使用函数可以使main()中的代码更容易阅读和更清晰。

现在在main()中,当调用sub()函数时,该函数还没有定义;这意味着它不在范围内。这意味着我们应该将函数原型放在main()之前,以便在调用该函数时,编译器知道有一个名为sub()的函数,它接受两个整数形参并返回一个整数。因此,这个添加将修复我们的范围问题。

# include < iostream >

使用命名空间std;

Int sub(Int num1, Int num2);//添加的是函数原型

Int main() {

Int total = 0;

cout << "此代码执行以下数学运算:9 - 6 = ";

Total = sub(6,9);

Cout << total;

Int sub(Int num1, Int num2) {

返回(num2 - num1);

注意:这个问题的另一个解决方案是将函数放在main()之前。虽然不特别推荐这种方法,因为它使main()更难找到,但人们仍然使用它。下面是通过将函数放在main()之前来修复该问题的示例。注意,使用此方法时不需要函数原型:

# include < iostream >

使用命名空间std;

Int sub(Int num1, Int num2) {

返回(num2 - num1);

Int main() {

Int total = 0;

cout << "此代码执行以下数学运算:9 - 6 = ";

Total = sub(6,9);

Cout << total;

例子问题1:后置条件

双平方(双n){

返回n * n;

在上面的代码段运行后,什么必须是正确的?

可能的答案:

输入参数的值发生变化。

结果将是一个正数。

结果将存储在一个新变量中。

这是不可能的。

结果将是一个负数。

正确答案:

结果将是一个正数。

解释

一个实数的平方总是得到一个正数。结果不必存储在一个新变量中;它可以是一个仅用于一次性表达式的值,因此不值得存储在内存中。最后,由于输入是通过值而不是引用传递的,它的初始值将保持不变。

例子问题1:断言

下面哪个代码摘录会输出“10”?

可能的答案:
Int num = 5;
Num = (Num > 0) ?11: 10;
System.out.println (num);
Int num = 5;
Num = (Num < 0) ?10: 11;
System.out.println (num);

没有一个答案是正确的。

Int num = 5;
Num = (Num > 0) ?10: 11;
System.out.println (num);
Int num = 10;
Num = (Num > 0) ?11: 12个;
System.out.println (num);
正确答案:
Int num = 5;
Num = (Num > 0) ?10: 11;
System.out.println (num);
解释

每一段代码都有类似的内容:

Num = (boolean语句)?X: y;

结尾的那部分?和被称为a三元运算符.三元运算符是一种压缩if-else语句的方式。三元运算符是这样工作的:

?>: < if true do this >: < if false do this >

正确答案是

Int num = 5;
Num = (Num > 0) ?10: 11;
System.out.println (num);

因此,当代码的三元运算符部分转换为if-else时,看起来像这样:

If (num > 0) {
Num = 10;
其他{
Num = 11;
因为全国矿工工会是5,大于0,它能整除如果,所以全国矿工工会得到10。然后,全国矿工工会打印出来,这意味着打印出10(正确答案)。

例子问题1:断言

对或错。

这个代码片段中的断言是为了防止用户输入错误的数据。

公共类UserInput {

int userInput;

public static void main(String[] args) {

assertTrue (isInteger (args [0]));

userInput = args[0];

userInput = 25 - userInput;

可能的答案:

真正的

正确答案:

真正的

解释

断言用于验证用户输入。用户可以在args[0]的值中输入任何东西。既然是这种情况,我们必须验证并确保用户输入的是我们想要的东西。为了使这段代码更好,添加了错误检查,以便在用户没有输入整数时执行某些操作。

大学导师的学习工具