我有一个简单的代码,声明了函数(我假设正确),但我没有得到scanf()的提示。我有void返回的函数,并通过值传递它们。我需要函数retrieve来提示scanf,以便输入数据。
由于
#include <stdio.h>
#define Len 10
void retrieve(void);
void update(void);
int main(void)
{
int i;
float A[Len];
float B[Len];
float C[Len];
printf("Give 10 real numbers for each array, A and B.\n");
void retrieve();
void update();
//Print each newly created value from table C.
printf("\nArray C has now:\n");
for (i = 1; i <= Len; i++)
{
printf("Position: %d || Value: %.2lf\n",i,C[i]);
}
}
void retrieve (void) // Get the values for array A and B.
{
for (i = 1; i <= Len; i++)
{
scanf("%lf", &A[i]);
}
for (i = 1; i <= Len; i++)
{
scanf("%lf", &B[i]);
}
}
void update (void) //Add the items from array A and B into C.
{
for (i = 1; i <= Len; i++)
{
C[i]=A[i]+B[i];
}
}
答案 0 :(得分:3)
请注意,当您认为在此处调用您的函数时:
void retrieve();
void update();
你实际上只是重新宣布原型。将其更改为:
retrieve();
update();
为了实际调用这些函数。
您还需要使数组全局化或将它们作为参数传递给函数。
答案 1 :(得分:1)
您的代码中存在多个问题
update()
/ retreive()
。你必须在它之前调用它们(所以省略void
)。 这是一个工作示例
#include <stdio.h>
#define Len 10
static void retrieve (float* A, float* B);
static void update (const float* A, const float* B, float* C);
int main(void)
{
int i;
float A[Len];
float B[Len];
float C[Len];
printf("Give 10 real numbers for each array, A and B.\n");
retrieve(A, B);
update(A, B ,C);
//Print each newly created value from table C.
printf("\nArray C has now:\n");
for (i = 1; i <= Len; i++)
{
printf("Position: %d || Value: %.2lf\n",i,C[i]);
}
}
static void retrieve (float* A, float* B) // Get the values for array A and B.
{
int i;
for (i = 0; i < Len; i++)
{
scanf("%lf", &A[i]);
}
for (i = 0; i < Len; i++)
{
scanf("%lf", &B[i]);
}
}
static void update (const float* A, const float* B, float* C) //Add the items from array A and B into C.
{
int i;
for (i = 0; i < Len; i++)
{
C[i]=A[i]+B[i];
}
}