秦九韶算法C语言
最近在学数值分析,需要进行算法编码,小小的记录一下自己的实验!
关于秦九韶算法求解多项式,开始之前看了很多同学的分享,基本采用的都是数组存储系数再进行循环。
但是直接用C语言数组静态存储感觉不太方便,必须提前约定数组规模,无法随着输入数的改变而变动。
所以这里就换成了动态内存分配的方法qwq, 采用malloc函数进行空间调配。
代码实现
#include<stdio.h>
#include<stdlib.h>
int main() {
int length = 0;//动态数组长度,需要输入,后续分配length个空间
while (1) {
printf("请输入共有多少系数:\n");
scanf_s("%d", &length);
printf("请输入系数分别为:\n");//a0,a1,a2,...an
int *ptr = (int*)malloc(sizeof(int)*length);
int i = 0;
for (i = 0; i < length; i++) {
scanf_s("%d", &ptr[i]);
}
int v = ptr[length - 1];//v=an初始值,秦九韶,v=v*x+an-k
int x = 0;
printf("请输入待求式x的值:\n");
scanf_s("%d", &x);
for (i = length - 1; i > 0; i--) {
v = v*x + ptr[i - 1];
}
printf("最终结果为:%d\n", v);
free(ptr);
}
return 0;
}
1.降序输入或是升序输入均可,记得改变循环部分就行;
2.数值用的int型,可以自己进行设定;
3.外层循环条件直接用的while(1)有些些些许的暴力,用EOF或者采用exit会好一点,但是条件判断用啥暂时没想好。。。就没写了
4.其他类似读取文件流啊等等各种数据操作方法尝试都可
5.因为用的vs2015,安全检测比较严格所以写的是scanf_s
emmm感觉也没啥补充的了,那就这样吧qwq!