无法在C中的for循环的第一次迭代中读取

时间:2018-03-03 21:01:27

标签: c arrays for-loop scanf

我正在尝试创建一个能够计算拉格朗日多项式的程序,但我遇到了可能是一个微不足道的问题。我给出了一些x和y值,我应该用它来近似某个其他x的函数。变量<textarea disabled="true" style="border: none;background-color:white;"> <script> alert('test'); </script> </textarea> 指的是我给出的x和y值对的数量。

我无法在x值的第一次迭代中读取,并且它直接跳过读取y值。即它只是打印x(0)然后y(0)而不让我输入x(0)的任何内容。对于第一个循环之后的任何循环,这不是问题。任何帮助,将不胜感激。

nodes

1 个答案:

答案 0 :(得分:8)

如评论中所述:

  

您将System.Drawing%d一起使用,而不是appx%f在小数点停止读取,%d输入从&nodex[0]停止 - 小数点处继续。当然,%d中的值也是垃圾。

     

您应该从appx测试返回值;你展示的每个电话都应该是1。您应该打印读取的值,这样您就知道读取的内容符合您的预期。

一些固定代码:

scanf()

我假设您支持C99。如果没有,您需要在循环外声明#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; } 并使用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