精度要求为eps=0.0001。
要求主函数与函数fun(x)放在同一个文件中。
(3) 编写另一个主函数以及计算被积函数值的函数fun(x),在主函数中调用(1)中的函数st(a, b, eps),计算并输出下列积分值
11s?dx
?1x2?1精度要求为eps=0.00001。
同样要求主函数与函数fun(x)放在同一个文件中。 方法说明:
变步长梯形求积法的基本步骤如下: ①利用梯形公式计算积分。即取 n=1,h=b-a 则有
?hTn?2?[f(xk?0n?1k)?f(xk?1)]
其中xk=a+kh。
②将求积区间再二等分一次(即由原来的n等分变成2n等分),在每一个小区间内仍利用梯形公式计算。即有 T2nhn?1f(xk)?f(xk?0.5)f(xk?0.5)?f(xk?1)?[?] 2k?022?h =
4?h[f(xk)?f(xk?1)]?2k?0n?1?f(xk?0n?1k?0.5)
1h =Tn?22?f(xk?0n?1k?0.5)
③判断二等分前后两次的积分值之差的绝对值是否小于所规定的误差。若条件
|T2n-Tn| 成立,则二等分后的积分值T2n即为结果;否则作如下处理: h=h/2,n=2*n,Tn=T2n 然后重复②。 9.6 习题 1. 编写一个C程序,从键盘为一个长度为10的整型一维数组输入数据。最后按逆序输出数组中的元素,并输出数组中最大元素的下标值。 2. 编写一个C程序,将两个长度相同的一维数组中各下标相同的对应元素相乘,并将结果存放到另一个一维数组中。 3. 编写一个C程序,从键盘为5×5的一个整型二维数组输入数据。最后输出该二维数组中的对角线元素。 4. 编写一个C程序,从键盘为4×6的一个整型二维数组输入数据。最后输出该二维数组中最小元素的行下标与列下标。 5. 从键盘输入5行5列二维整型数组的数据。编制一个函数,计算二维数组中每一行中的最小值,并将此最小值顺序存放在一个长度为5的一维数组中。最后按矩阵形式输出二维数组中的各元素,且各行中的最小值(即一维数组中的元素)输出到相应行的右边。 6. 编写一个C函数,将一个一维数组中的元素逆转。逆转是指将数组中的第一个元素与最后一个元素进行交换,第二个元素与倒数第二个元素进行交换,以此类推,直到数组的中间一个元素为止。 7. 编写一个C函数,将矩阵进行转置后输出。 8. 设有两个整型一维有序数组(即数组中的元素按从小到大进行排列),编写一个C函数,将这两个有序数组合并存放到另一个一维数组中,并保证合并后的一维数组也是有序的。 9. 编制一个C程序,从键盘输入一个由5个字符组成的单词,然后判断该单词是否是China。要求给出判断结果的提示信息。 10. 编写一个C程序,从键盘输入50个字符,并统计其中英文字母(不分大小写)与数字字符的个数。 11. 中国有句俗语叫“三天打鱼,两天晒网”。现某人从2000年1月1日起开始“三天打鱼,两天晒网”,请编程判断此人在以后的某年某月某日是在“打鱼”还是在“晒网”。其中以后的某年某月某日从键盘输入。 12. 一辆汽车在开始出发前其里程表上的读数是一个对称数95859,后匀速行驶两小时后,发现里程表上是一个新的对称数。问该新的对称数是多少?汽车的速度是多少? 注:所谓对称数是指从左向右读与从右向左读完全一样。 13. 计算多项式函数 P6(x)=1.5x6+3.2x5-0.8x4+1.4x3-6.5x2+0.5x-3.7 在x=-2.3,-1.1,-0.6,0.8,2.1,3.6处的函数值。 具体要求: (1) 编写一个函数,其功能是:给定一个x值,返回多项式函数值。 (2) 编写一个主函数,定义两个一维数组,分别存放多项式的系数和需要计算的各x值。然后在主函数中调用(1)中的函数逐个计算各x值时的多项式值。 (3) 在主函数中的输出形式为 P(x值)=具体的多项式值 ? 方法说明: 设多项式为 Pn(x)=anxn+an-1xn-1+?+a1x+a0 可以表述成如下嵌套形式: Pn(x)=(?((anx+an-1)x+an-2)x+?+a1)x+a0 利用上式的特殊结构,从里往外一层一层地进行计算,即按如下递推关系进行计算: u=an u=ux+ak,k=n-1,?,1,0 最后计算得到的u即是多项式的值Pn(x)。 14. 产生100个0~1之间均匀分布的随机数,并将这些随机数按非递减顺序进行排序,存放到一个一维数组中。最后输出该有序数组。 具体要求: (1) 在产生随机数的过程中,每产生一个随机数就将它插入到前面已经有序的数组中。 (2) 输出时要求每行输出10个数据,并上下对齐。 方法说明: 产生随机数pk(k=1,2,?,100)的公式为 rk=mod(2053rk-1+13849,216) pk=rk/216 其中初值r0=1。 解决本问题的流程图如图9.4所示。