鱼C论坛

 找回密码
 立即注册
查看: 2095|回复: 5

[已解决]关于数组和函数的问题

[复制链接]
发表于 2017-11-10 12:51:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.自定义函数double polyfunc(double dArray[], int item, double x),实现一个求由数组dArray表示的多项式的值的函数,其中item为多项式的项数,并在主程序中测试该函数。

数组是前两天才学的,不是很会用,而且还要用函数编,无从下手啊。。很难过心塞,希望能受教学习一番

2.输出n个整数,将这n个数的前m<n/2个数和后m个数交换(数据块交换),要求m从键盘输入。
例如,设有20个数为
23 19 88 71 23 55 32 18 9 2 22 72 66 55 80 33 17 0 102 7
如果m=5,则结果为
33 17 0 102 7 55 32 18 9 2 22 72 66 55 80 23 19 88 71 23 
交换过程由函数实现,函数原型 void BlockExchange(int nArray [], int n, int m); 或void BlockExchange(int * pArray, int n, int m); 在主程序输入数据并调用该函数实现交换,然后在主程序中输出。

这个问题我做了一部分发现也做得不对了,要求是数据块交换,我这样好像只能相邻的比大小交换,所以还请指点一下




  1. #include <stdio.h>
  2. void sort(int nArray[], int n)
  3. {
  4.         int i,temp;
  5.         for(i=0;i<=8;i++)
  6.         {
  7.                 if(nArray[i]<nArray[i+1])
  8.                 {
  9.                         temp=nArray[i+1];
  10.                         nArray[i+1]=nArray[i];
  11.                         nArray[i]=temp;
  12.                 }
  13.         }
  14.         return void sort();
  15. }
  16. int main()
  17. {
  18.         int nArray[];
  19.        
  20. }
复制代码
最佳答案
2017-11-10 13:19:25
本帖最后由 BngThea 于 2017-11-10 13:31 编辑

你应该先说说你的思路,做一个纯伸手党的话进步就太慢了
我给个两个问题的简单程序:
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. double polyfunc(double*, int, double);

  4. double polyfunc(double dArray[], int item,double x)
  5. {
  6.         double result = 0, temp;
  7.         int i, j;
  8.         for (i = 0; i < item; i++)
  9.         {
  10.                 temp = 1;
  11.                 for (j = 0; j <= i; j++)
  12.                 {
  13.                         temp *= x;
  14.                 }
  15.                 result += dArray[i] * temp;
  16.         }
  17.         return result;
  18. }
  19. int main(void)
  20. {
  21.         double factors[3] = {1.2, 2.1, 3};
  22.         double x = 2.5;
  23.         double y = polyfunc(factors, 3, x);
  24.         printf("%lf", y);
  25.         system("pause");
  26.         return 0;
  27. }
复制代码

  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. void BlockExchange(int nArray [], int n, int m);

  4. void BlockExchange(int nArray [], int n, int m)
  5. {
  6.         int temp, i, j;
  7.         for (i = 0; i < m; i++)
  8.         {
  9.                 j = n - m + i;
  10.                 temp = nArray[i];
  11.                 nArray[i] = nArray[j];
  12.                 nArray[j] = temp;
  13.         }
  14. }

  15. int main(void)
  16. {
  17.         int arr[] = {23,19,88,71,23,55,32,18,9,2,22,72,66,55,80,33,17,0,102,7};
  18.         int len = sizeof(arr)/sizeof(int);
  19.         int m, i;
  20.         printf("请输入一个小于%d的正整数:", len/2);
  21.         scanf("%d", &m);
  22.         BlockExchange(arr, len, m);
  23.         for (i = 0; i < len; i++)
  24.         {
  25.                 printf("%d ",arr[i]);
  26.         }
  27.         system("pause");
  28.         return 0;
  29. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-10 13:19:25 | 显示全部楼层    本楼为最佳答案   
本帖最后由 BngThea 于 2017-11-10 13:31 编辑

你应该先说说你的思路,做一个纯伸手党的话进步就太慢了
我给个两个问题的简单程序:
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. double polyfunc(double*, int, double);

  4. double polyfunc(double dArray[], int item,double x)
  5. {
  6.         double result = 0, temp;
  7.         int i, j;
  8.         for (i = 0; i < item; i++)
  9.         {
  10.                 temp = 1;
  11.                 for (j = 0; j <= i; j++)
  12.                 {
  13.                         temp *= x;
  14.                 }
  15.                 result += dArray[i] * temp;
  16.         }
  17.         return result;
  18. }
  19. int main(void)
  20. {
  21.         double factors[3] = {1.2, 2.1, 3};
  22.         double x = 2.5;
  23.         double y = polyfunc(factors, 3, x);
  24.         printf("%lf", y);
  25.         system("pause");
  26.         return 0;
  27. }
复制代码

  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. void BlockExchange(int nArray [], int n, int m);

  4. void BlockExchange(int nArray [], int n, int m)
  5. {
  6.         int temp, i, j;
  7.         for (i = 0; i < m; i++)
  8.         {
  9.                 j = n - m + i;
  10.                 temp = nArray[i];
  11.                 nArray[i] = nArray[j];
  12.                 nArray[j] = temp;
  13.         }
  14. }

  15. int main(void)
  16. {
  17.         int arr[] = {23,19,88,71,23,55,32,18,9,2,22,72,66,55,80,33,17,0,102,7};
  18.         int len = sizeof(arr)/sizeof(int);
  19.         int m, i;
  20.         printf("请输入一个小于%d的正整数:", len/2);
  21.         scanf("%d", &m);
  22.         BlockExchange(arr, len, m);
  23.         for (i = 0; i < len; i++)
  24.         {
  25.                 printf("%d ",arr[i]);
  26.         }
  27.         system("pause");
  28.         return 0;
  29. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-10 13:40:20 | 显示全部楼层
BngThea 发表于 2017-11-10 13:19
你应该先说说你的思路,做一个纯伸手党的话进步就太慢了
我给个两个问题的简单程序:

首先感谢你百忙抽空的解答,这道题的思路....我就止步在了建立函数那一步,所以说出来也挺尴尬的。。
另外这到题我读完就没有能够很理解,求值的话多项式求值我不太清楚应该是哪个公式什么方法....所以这里就直接难住我了。
还有就是你的程序的我尚且不能完全看懂,比如<stdlib.h>是什么库,double*是什么意思,factors[ ]是设么意思,system(“pause”),是什么作用。。。还有好像没有scanf的输入item的地方。。我功力尚欠,所以看你的代码理解起来还是挺费劲的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-10 14:02:51 From FishC Mobile | 显示全部楼层
AppleBJTU 发表于 2017-11-10 13:40
首先感谢你百忙抽空的解答,这道题的思路....我就止步在了建立函数那一步,所以说出来也挺尴尬的。。
另 ...

所以你的基础还没有构建好,这里看上去都很难
c/c++不是快餐语言,需要一步一个脚印,建议你先认真学习小甲鱼的《带你学C带你飞》的课程或者学习《C prime plus》入门
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-10 14:30:47 From FishC Mobile | 显示全部楼层
BngThea 发表于 2017-11-10 14:02
所以你的基础还没有构建好,这里看上去都很难
c/c++不是快餐语言,需要一步一个脚印,建议你先认真学习 ...

好的,谢谢你的帮助和建议,我会再学习研究的,如有问题可能还会麻烦你了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-10 14:32:46 From FishC Mobile | 显示全部楼层
AppleBJTU 发表于 2017-11-10 14:30
好的,谢谢你的帮助和建议,我会再学习研究的,如有问题可能还会麻烦你了。

欢迎
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 16:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表