鱼C论坛

 找回密码
 立即注册
查看: 2360|回复: 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); 在主程序输入数据并调用该函数实现交换,然后在主程序中输出。

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



#include <stdio.h>
void sort(int nArray[], int n)
{
        int i,temp;
        for(i=0;i<=8;i++)
        {
                if(nArray[i]<nArray[i+1])
                {
                        temp=nArray[i+1];
                        nArray[i+1]=nArray[i];
                        nArray[i]=temp;
                }
        }
        return void sort(); 
}
int main()
{
        int nArray[];
        
}
最佳答案
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[i] * temp;
        }
        return result;
}
int main(void)
{
        double factors[3] = {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[i];
                nArray[i] = nArray[j];
                nArray[j] = 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[i]);
        }
        system("pause");
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[i] * temp;
        }
        return result;
}
int main(void)
{
        double factors[3] = {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[i];
                nArray[i] = nArray[j];
                nArray[j] = 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[i]);
        }
        system("pause");
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> 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-11-28 20:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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