- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试创建一个能够计算拉格朗日多项式的程序,但我遇到了一个可能是微不足道的问题。我得到了一些 x 和 y 值,我应该使用这些值来近似某个其他 x 的函数。变量 nodes
指的是我给出的 x 和 y 值对的数量。
我无法读取 x 值的第一次迭代,它会直接跳到读取 y 值。即它只打印 x(0),然后打印 y(0),而不让我为 x(0) 输入任何内容。这对于第一个循环之后的任何循环都不是问题。任何帮助,将不胜感激。
#include "stdio.h"
#include "math.h"
#define SIZE 40
int main(){
// Defining variables and arrays
int i, j, nodes;
float nodex[SIZE], nodey[SIZE], appx;
// Find how many nodes there are
printf("How many nodes are being referenced?\n");
scanf("%d", &nodes);
// Find what number we are approximating for x
printf("For what value of x are we approximating?\n");
scanf("%d", &appx);
for(i=0 ; i < nodes ; i++)
{
printf("\nEnter x(%d)", i);
scanf("%f", &nodex[i]);
printf("\nEnter y(%d)", i);
scanf("%f", &nodey[i]);
}
}
最佳答案
如评论中所述:
You're using
%d
withappx
, instead of%f
. The%d
stops reading at the decimal point, and the&nodex[0]
input resumes where the%d
left off — at the decimal point. The value inappx
is garbage too, of course.You should test the return value from
scanf()
; it should be 1 for each call you show. You should print the values read so you know that what was read matches what you expected.
一些固定代码:
#include <stdio.h>
#include <stdlib.h>
#define SIZE 40
static void err_exit(const char *msg)
{
fprintf(stderr, "%s\n", msg);
exit(EXIT_FAILURE);
}
int main(void)
{
// Defining variables and arrays
int nodes;
float nodex[SIZE], nodey[SIZE], appx;
// Find how many nodes there are
printf("How many nodes are being referenced?: ");
fflush(stdout);
if (scanf("%d", &nodes) != 1)
err_exit("failed to read number of nodes");
if (nodes < 3 || nodes > SIZE)
err_exit("number of nodes not in range 0..40");
// Find what number we are approximating for x
printf("For what value of x are we approximating?: ");
fflush(stdout);
if (scanf("%f", &appx) != 1)
err_exit("failed to read value");
for (int i = 0; i < nodes; i++)
{
printf("Enter x(%d): ", i);
fflush(stdout);
if (scanf("%f", &nodex[i]) != 1)
err_exit("failed to read x-value");
printf("Enter y(%d): ", i);
fflush(stdout);
if (scanf("%f", &nodey[i]) != 1)
err_exit("failed to read y-value");
}
printf("Approximating: %g\n", appx);
printf("%d nodes:\n", nodes);
for (int i = 0; i < nodes; i++)
printf("%2d (%g,%g)\n", i, nodex[i], nodey[i]);
return 0;
}
我假设您支持 C99。如果没有,您需要申报 int i;
在循环外使用 for (i = 0; i < nodes; i++)
作为循环。
编译:
gcc -O3 -g -std=c11 -Wall -Wextra -Werror -Wmissing-prototypes -Wstrict-prototypes \
read-float-83.c -o read-float-83
样本运行:
$ ./read-float-83
How many nodes are being referenced?: 5
For what value of x are we approximating?: 3.67
Enter x(0): 1.23
Enter y(0): 2.95
Enter x(1): 1.98
Enter y(1): 3.46
Enter x(2): 2.47
Enter y(2): 4.51
Enter x(3): 3.02
Enter y(3): 2.87
Enter x(4): 4.18
Enter y(4): -1.96
Approximating: 3.67
5 nodes:
0 (1.23,2.95)
1 (1.98,3.46)
2 (2.47,4.51)
3 (3.02,2.87)
4 (4.18,-1.96)
$
关于无法读取 C 中 for 循环的第一次迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49089173/
#include using namespace std; class C{ private: int value; public: C(){ value = 0;
这个问题已经有答案了: What is the difference between char a[] = ?string?; and char *p = ?string?;? (8 个回答) 已关闭
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 此帖子已于 8 个月
除了调试之外,是否有任何针对 c、c++ 或 c# 的测试工具,其工作原理类似于将独立函数复制粘贴到某个文本框,然后在其他文本框中输入参数? 最佳答案 也许您会考虑单元测试。我推荐你谷歌测试和谷歌模拟
我想在第二台显示器中移动一个窗口 (HWND)。问题是我尝试了很多方法,例如将分辨率加倍或输入负值,但它永远无法将窗口放在我的第二台显示器上。 关于如何在 C/C++/c# 中执行此操作的任何线索 最
我正在寻找 C/C++/C## 中不同类型 DES 的现有实现。我的运行平台是Windows XP/Vista/7。 我正在尝试编写一个 C# 程序,它将使用 DES 算法进行加密和解密。我需要一些实
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
有没有办法强制将另一个 窗口置于顶部? 不是应用程序的窗口,而是另一个已经在系统上运行的窗口。 (Windows, C/C++/C#) 最佳答案 SetWindowPos(that_window_ha
假设您可以在 C/C++ 或 Csharp 之间做出选择,并且您打算在 Windows 和 Linux 服务器上运行同一服务器的多个实例,那么构建套接字服务器应用程序的最明智选择是什么? 最佳答案 如
你们能告诉我它们之间的区别吗? 顺便问一下,有什么叫C++库或C库的吗? 最佳答案 C++ 标准库 和 C 标准库 是 C++ 和 C 标准定义的库,提供给 C++ 和 C 程序使用。那是那些词的共同
下面的测试代码,我将输出信息放在注释中。我使用的是 gcc 4.8.5 和 Centos 7.2。 #include #include class C { public:
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我的客户将使用名为 annoucement 的结构/类与客户通信。我想我会用 C++ 编写服务器。会有很多不同的类继承annoucement。我的问题是通过网络将这些类发送给客户端 我想也许我应该使用
我在 C# 中有以下函数: public Matrix ConcatDescriptors(IList> descriptors) { int cols = descriptors[0].Co
我有一个项目要编写一个函数来对某些数据执行某些操作。我可以用 C/C++ 编写代码,但我不想与雇主共享该函数的代码。相反,我只想让他有权在他自己的代码中调用该函数。是否可以?我想到了这两种方法 - 在
我使用的是编写糟糕的第 3 方 (C/C++) Api。我从托管代码(C++/CLI)中使用它。有时会出现“访问冲突错误”。这使整个应用程序崩溃。我知道我无法处理这些错误[如果指针访问非法内存位置等,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一些 C 代码,将使用 P/Invoke 从 C# 调用。我正在尝试为这个 C 函数定义一个 C# 等效项。 SomeData* DoSomething(); struct SomeData {
这个问题已经有答案了: Why are these constructs using pre and post-increment undefined behavior? (14 个回答) 已关闭 6
我是一名优秀的程序员,十分优秀!