用c语言编写一个函数input_poly(ptr1),一次从文件cp7_in.txt中读入两个带系数和指数的多项式。该文件将包含2n个多项式,其中n是小于等于10的整数。多项式的空间将在运行时分配,并且对多项式的大小没有限制,例如,文件的前两行是 3 5 -2.2 3 4 1 -1.713 0 3 100 -2.2 3 14 55 3.1 101 (注:条款可按任意顺序排列) 然后,将创建两个多项式 3x5 - 2.2x3 + 4x - 1.713和 3.1x101 + 3x100 + 14x55 - 2.2x3
时间: 2024-02-17 12:03:08 浏览: 13
好的,我可以为你编写一个函数input_poly(ptr1),用C语言从文件cp7_in.txt中读入两个带系数和指数的多项式。具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_TERMS 100
typedef struct {
float coef;
int expon;
} polynomial;
void input_poly(polynomial *ptr1) {
FILE *fp;
int n1, n2, i, j;
if ((fp = fopen("cp7_in.txt", "r")) == NULL) {
printf("File can't be opened.\n");
exit(1);
}
fscanf(fp, "%d", &n1);
ptr1 = (polynomial *) malloc(n1 * sizeof(polynomial));
for (i = 0; i < n1; i++) {
fscanf(fp, "%f %d", &ptr1[i].coef, &ptr1[i].expon);
}
fscanf(fp, "%d", &n2);
polynomial *ptr2 = (polynomial *) malloc(n2 * sizeof(polynomial));
for (i = 0; i < n2; i++) {
fscanf(fp, "%f %d", &ptr2[i].coef, &ptr2[i].expon);
}
fclose(fp);
// 输出读入的多项式
printf("Polynomial 1:\n");
for (i = 0; i < n1; i++) {
printf("%.1fx^%d", ptr1[i].coef, ptr1[i].expon);
if (i != n1 - 1) {
printf(" + ");
}
}
printf("\n");
printf("Polynomial 2:\n");
for (i = 0; i < n2; i++) {
printf("%.1fx^%d", ptr2[i].coef, ptr2[i].expon);
if (i != n2 - 1) {
printf(" + ");
}
}
printf("\n");
// 释放多项式所占用的内存
free(ptr1);
free(ptr2);
}
```
这个函数首先打开文件cp7_in.txt,并从中读取两个多项式。它使用结构体数组来存储每个多项式的系数和指数,并使用指针来动态分配内存。在读取完多项式后,函数输出读入的两个多项式,并使用free()函数释放内存。
你可以在自己的程序中调用input_poly(ptr1)函数来读取多项式。注意,ptr1是一个指向多项式的指针,可以在函数中使用它来动态分配内存。