例子问题
例子问题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语句的方式。三元运算符是这样工作的:
正确答案是
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]的值中输入任何东西。既然是这种情况,我们必须验证并确保用户输入的是我们想要的东西。为了使这段代码更好,添加了错误检查,以便在用户没有输入整数时执行某些操作。