《数据结构》第1章 研究型作业

1  设计型题目

1.5  在我们课本第16页图1.7给出了5个“常见函数的增长率”在第1象限的图像[1]。现要求设计一种方法来自动绘制这张图示。

(1)编制一个程序,自动给出一系列自变量所对应的函数值,要求函数自变量的数目是一个参数。

(2)如何把生成的这些值保存到一个文件中?

(3)设计一个方法,依据所生成的数据纯文本文件转换成一个Microsoft Office Excel文件;或者由第1步的程序直接生成相应的Microsoft Office Excel文件。

(4)利用Microsoft Office Excel生成相应函数的图像。是否可以在一张图示之上,同时生成这5个函数的图像。给出你的方法的步骤。

(5)你还知道利用其它工具来自动生成这张图示吗?请详细叙述你的方法与步骤。

2  设计型题目解答

【第1.5题解答】

在我们课本第16页图1.7给出了5个“常见函数的增长率”在第1象限的图像。现要求设计一种方法来自动绘制这张图示。

(1)定义不同函数f1,f2,f3,f4,f5,分别求对应的函数值。输入值n

为自变量数目的参数,具体程序如下:

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #pragma warning(disable:6031)
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <malloc.h>
  6. #include <math.h>
  7. #include <time.h>
  8. double f1(double x)//函数1,求2n次方
  9. {
  10.   return pow(2, x);
  11. }
  12. double f2(double x)//函数2,求n的三次方/2
  13. {
  14.   return x * x * x / 2;
  15. }
  16. double f3(double x)//函数3,求x的平方*5
  17. {
  18.   return 5 * x * x;
  19. }
  20. double f4(double x)//函数4,求100x
  21. {
  22.   return 100 * x;
  23. }
  24. double f5(double x)//函数5,求对数
  25. {
  26.   return log(x) / log(2) * 200;
  27. }
  28. int main()
  29. {
  30.    int n;//记录数据记录的条数
  31.   printf("请输入n的值:");
  32.   scanf("%d", &n);
  33.   int i;//循环变量
  34.   int* memory = NULL;//数据存储器
  35.   memory = (int*)malloc(sizeof(int) * n);
  36.   if (memory == NULL) {
  37.     printf("Dynamic memory allocation failure.\n");//动态内存分配失败
  38.     exit(0);
  39.   };
  40.   //将生成好的数据暂存在数据容器里
  41.   for (i = 1; i <= n; i++)
  42.   {
  43.     memory[i] = i;
  44.   }
  45.   FILE* fp = NULL;//写入数据的文件
  46.   fp = fopen("text1.xls", "w");
  47.   if ( NULL==fp)
  48.   {
  49.     printf("Cant not open the file.\n");//文件打开失败
  50.     exit(0);
  51.   }
  52.   for (i = 1; i < n; i++)
  53.   {
  54.     fprintf(fp, "x==%d\t%f\t%f\t%f\t%f\t%f\n", i,f1(memory[i]),
  55.       f2(memory[i]), f3(memory[i]), f4(memory[i]), f5(memory[i]));
  56.   }
  57.  
  58.   fclose(fp);
  59.   return 0;
  60. }

(2)如何把生成的这些值保存到一个文件中?

利用文件的读写操作,例如fp = fopen("text1.txt", "w")

即可把生成的值保存在txt文件中。

(3)设计一个方法,依据所生成的数据纯文本文件转换成一个Microsoft Office Excel文件;或者由第1步的程序直接生成相应的Microsoft Office Excel文件。

 由第1步程序直接生成相应的Microsoft Office Excel文档,程序第48-60行,直接将自变量对应生成的函数值存入excel文档中。输入n=14,

生成对应的excel文档如下,

(4)利用Microsoft Office Excel生成相应函数的图像。是否可以在一张图示之上,同时生成这5个函数的图像。给出你的方法的步骤。

五个函数图像可以显示在同一张图示上。

步骤:插入--图标—散点图—带平滑线和数据的散点图—右键设置数据将所需要的数据复制即可。

(5)可以利用pycharm来生成函数图像,步骤与前面做法大致相同,编写python程序,将生成的函数值保存在文档中,在将文档中的数据读取至excel表格,在excel中绘制图像即可

         还可以利用matlab来绘制图像,1)先将生成的函数值保存在txt文档中,2)点击matlab主页上的 “ 导入数据 ”选项,将txt导入matlab。 3)选择“ 数值矩阵 ”,点击“ 导入所选内容 ” 此时工作空间里就有了data2这个矩阵,接下来对导入的数据进行画图。 4)对数据进行拟合 5) 点击“ 应用程序 ” 下的“ curve fitting ” 6)加载数据x 和 y,然后选择拟合类型 7)对拟合结果的分析,左下角的Results是拟合的结果。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值