我需要编写一个简单的程序,要求用户在结构变量数据中插入4个 double 类型变量。
struct Data
{
double a;
double b;
double c;
double average;
};
struct Data *ptr_name;
int i;
首先,询问用户尺寸:
printf("Please enter the size:");
scanf("%d", &size);
然后,使用malloc。 (我不知道怎么用...)
类似这样的... ptr_name = ()malloc();
然后使用for循环从用户那里获取a、b、c。
for(i = 0; i < size; i++)
{
//dont know how to put the staement..
}
最后,打印出所有内容,包括平均值。
for(i = 0; i < size; i++)
{
//same as above...
}
差不多就这些了,我现在正在学习struct type和malloc,浏览网页看不懂……求助,谢谢。
最佳答案
对 malloc
的调用应该是:
ptr_name = malloc (sizeof (struct Data) * size);
以下函数从控制台读取/写入struct Data
实例:
static struct Data
read_from_console ()
{
struct Data d;
d.a = 0.0f; d.b = 0.0f; d.c = 0.0f; d.average = 0.0f;
printf ("Enter values separated by comma: (a, b, c): ");
fflush (stdout);
if (scanf ("%lf, %lf, %lf", &d.a, &d.b, &d.c) != 3)
{
printf ("Invalid input\n");
exit (1);
}
else
d.average = (double) ((d.a + d.b + d.c) / 3.0f);
return d;
}
static void
print_to_console (struct Data* d)
{
printf ("a=%f, b=%f, c=%f, average=%f\n", d->a, d->b, d->c, d->average);
fflush (stdout);
}
您可以从 main
函数内的循环调用它们:
int
main ()
{
struct Data *ptr_name;
int count;
int i;
printf ("Please enter size: ");
fflush (stdout);
if (scanf ("%d", &count) != 1)
{
printf ("Invalid input\n");
return 1;
}
ptr_name = malloc (sizeof (struct Data) * count);
for (i = 0; i < count; ++i)
ptr_name[i] = read_from_console ();
for (i = 0; i < count; ++i)
print_to_console (&ptr_name[i]);
return 0;
}
交互示例:
> Please enter size: 2
> Enter values separated by comma: (a, b, c): 12.00, 12.45, 13.00
> Enter values separated by comma: (a, b, c): 5.4, 5.00, 5.1
a=12.000000, b=12.450000, c=13.000000, average=12.483333
a=5.400000, b=5.000000, c=5.100000, average=5.166667
关于c - 在结构类型中填充 4 个变量并使用 malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3964297/