作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我用 C 编写的第一个程序。当我运行这个程序时,它发现的斜边很大。我将 A 面和 B 面输入为 2,输出为 130899047838401965660347085857614698509581032940206478883553280.000000
。我做错了什么?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int die(const char *msg);
double hypotenuse(double side0, double side1);
int main()
{
double a, b, c;
printf("Enter side A: ");
if (scanf_s("%1f", &a) != 1)
die("input failure");
printf("Enter side B: ");
if (scanf_s("%1f", &b) != 1)
die("input failure");
c = hypotenuse(a, b);
printf("The hypotenuse is %f\n ", c);
}
int die(const char *msg)
{
printf("Fatal Error: %s\n", msg);
exit(1);
}
double hypotenuse(double side0, double side1)
{
return sqrt((side0 * side0) + (side1 * side1));
}
最佳答案
您的 scanf()
转换说明符中存在拼写错误:%1f
应该是 %lf
,其中带有 ell 而不是 1。
这两个角色看起来非常相似。因此,还建议避免命名变量 l
或 ll
、l1
等。
说明符%1f
尝试将流中最多1个字节转换为 float ,并将结果存储到地址被传递的float
中。您传递了一个double
的地址,因此行为是未定义的。您可以通过提高警告级别来防止这种愚蠢的错误:
gcc -Wall -Wextra -Werror
clang -Weverything -Werror
cl/W3
或 cl/W4
或 cl/Wall
关于C程序求斜边,发现斜边太大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46010139/
我编写了以下代码,但它卡住了: #include #include int main() { clrscr(); unsigned int num; unsigned int
我需要创建一个函数来计算从 0 开始的前 n 个偶数的总和(即 (even-sum 4) 将返回 12)。 (define (even-sum n) (cond ((= n 0
我是一名优秀的程序员,十分优秀!