在执行一个函数后,程序会跳过输入,直接执行下一句

来源:百度知道 编辑:UC知道 时间:2024/06/16 10:01:04
代码如下
在执行了INPUT函数以后,DESIDE函数无论SCANF还是GETCHAR都无法执行,直接跳至IF语句

/* 本程序用于牛顿插值的计算
首先输入的nn为要输入值的个数,然后输入X和F(x)
实验值nn为3
1 8
2 1
4 5
结果为8.0000-7.0000*(x-1)+3.0000*(x-1)(x-2)*/
#include<stdio.h>
#define true 1
#define false 0

void INPUT(int *, double *, double [][26], int *, int *);
void DESIDE(int *,int*);
void main()
{
double Q[26][26],X[26];
int I,J,N,z=1,OK=true;
while (OK)
{
INPUT(&OK, X, Q, &N, &z);
/* 运算 */
for (I=1; I<=N; I++)
for (J=1; J<=I; J++)
Q[I][J] = (Q[I][J-1] - Q[I-1][J-1]) / (X[I] - X[I-J]);
/*输出结果 */
printf("Input data follows:\n");
for (I=0; I<=N; I++)
printf("X(%d)=%.4f F(X(%d))=%.4f\n", I, X[I], I, Q[I][0]);
printf("The result are:\n\n");
printf("%.4f"

输入字符串之前加一个getchar();用于接收上一次的回车键,修改如下:

#include<stdio.h>
#define true 1
#define false 0

void INPUT(int *, double *, double [][26], int *, int *);
void DESIDE(int *,int*);
void main()
{
double Q[26][26],X[26];
int I,J,N,z=1,OK=true;
while (OK)
{
INPUT(&OK, X, Q, &N, &z);
/* 运算 */
for (I=1; I<=N; I++)
for (J=1; J<=I; J++)
Q[I][J] = (Q[I][J-1] - Q[I-1][J-1]) / (X[I] - X[I-J]);
/*输出结果 */
printf("Input data follows:\n");
for (I=0; I<=N; I++)
printf("X(%d)=%.4f F(X(%d))=%.4f\n", I, X[I], I, Q[I][0]);
printf("The result are:\n\n");
printf("%.4f", Q[0][0]);
for (I=1; I<=N; I++)
{
if (Q[I][I]>=0)
printf("+");
printf("%.4f", Q[I][I]);
for (J=1;J<=I;J++)
printf("*(x-%d)",J);
}
printf("