这段代码中存在几个问题,我将逐一指出:
函数名错误:mian
应该改为 main
。
calloc
参数顺序错误:在调用 calloc
时,应该是(n, sizeof(float))
而不是 (n, n)
。这样可以分配一个包含 n
个浮点数的数组。
修正后的代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
float *pf;
int n, m, i;
scanf("%d", &n);
scanf("%d", &m);
pf = (float *)calloc(n, sizeof(float));
if (pf == NULL) {
printf("Memory allocation failed.\n");
return EXIT_FAILURE;
}
for (i = 0; i < n; i++)
pf[i] = 1.1f * (i + 1);
for (i = n - m - 1; i < n; i++)
printf("%f ", pf[i]);
for (i = 0; i < m; i++)
printf("%f ", pf[i]);
printf("\n");
free(pf);
return EXIT_SUCCESS;
}
此外,在分配内存后应检查 calloc
是否成功返回了非空指针,以防止程序在内存不足时崩溃。这里添加了对内存分配失败情况的处理。