AppleBJTU 发表于 2017-11-10 12:51:09

关于数组和函数的问题

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); 在主程序输入数据并调用该函数实现交换,然后在主程序中输出。

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




#include <stdio.h>
void sort(int nArray[], int n)
{
        int i,temp;
        for(i=0;i<=8;i++)
        {
                if(nArray<nArray)
                {
                        temp=nArray;
                        nArray=nArray;
                        nArray=temp;
                }
        }
        return void sort();
}
int main()
{
        int nArray[];
       
}

BngThea 发表于 2017-11-10 13:19:25

本帖最后由 BngThea 于 2017-11-10 13:31 编辑

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

double polyfunc(double*, int, double);

double polyfunc(double dArray[], int item,double x)
{
        double result = 0, temp;
        int i, j;
        for (i = 0; i < item; i++)
        {
                temp = 1;
                for (j = 0; j <= i; j++)
                {
                        temp *= x;
                }
                result += dArray * temp;
        }
        return result;
}
int main(void)
{
        double factors = {1.2, 2.1, 3};
        double x = 2.5;
        double y = polyfunc(factors, 3, x);
        printf("%lf", y);
        system("pause");
        return 0;
}

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

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

void BlockExchange(int nArray [], int n, int m)
{
        int temp, i, j;
        for (i = 0; i < m; i++)
        {
                j = n - m + i;
                temp = nArray;
                nArray = nArray;
                nArray = temp;
        }
}

int main(void)
{
        int arr[] = {23,19,88,71,23,55,32,18,9,2,22,72,66,55,80,33,17,0,102,7};
        int len = sizeof(arr)/sizeof(int);
        int m, i;
        printf("请输入一个小于%d的正整数:", len/2);
        scanf("%d", &m);
        BlockExchange(arr, len, m);
        for (i = 0; i < len; i++)
        {
                printf("%d ",arr);
        }
        system("pause");
        return 0;
}

AppleBJTU 发表于 2017-11-10 13:40:20

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

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

BngThea 发表于 2017-11-10 14:02:51

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

所以你的基础还没有构建好,这里看上去都很难
c/c++不是快餐语言,需要一步一个脚印,建议你先认真学习小甲鱼的《带你学C带你飞》的课程或者学习《C prime plus》入门

AppleBJTU 发表于 2017-11-10 14:30:47

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

好的,谢谢你的帮助和建议,我会再学习研究的,如有问题可能还会麻烦你了。

BngThea 发表于 2017-11-10 14:32:46

AppleBJTU 发表于 2017-11-10 14:30
好的,谢谢你的帮助和建议,我会再学习研究的,如有问题可能还会麻烦你了。

欢迎
页: [1]
查看完整版本: 关于数组和函数的问题