189 8069 5689

c语言所有函数用一组数据 c语言编写的每个函数都可以

c语言,在一个函数里,怎样不断向一对数组里输入数据?

你是指作为函数的参数传递一个数组吗?

成都网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设公司、微信开发、微信小程序开发、集团企业网站设计等服务项目。核心团队均拥有互联网行业多年经验,服务众多知名企业客户;涵盖的客户类型包括:成都阳光房等众多领域,积累了大量丰富的经验,同时也获得了客户的一致赞许!

如果是这个意思,那很简单,用指针就可以了,如

定义有int a[5];

则这样定义函数:

int fun(int *p, int size)

{

//p为数组的首地址

//size为数组的大小

//传递进去后可以像操作a一样用下标操作p

//如p[0], p[4]...

}

传递参数给函数可以这样写:

fun(a, 5);

若是多维数组,则第一维大小不给出,只指定后面的维数大小,如:

定义有int a[5][2];

则这样定义函数:

int fun(int p[][2], int size)

{

//p为数组的首地址

//size为第一维的大小

//传递进去后可以像操作a一样用下标操作p

//如p[0][1], p[4][1]...

}

传递参数给函数可以这样写:

fun(a, 5);

我可以帮助你,你先设置我最佳答案后,我百度Hii教你。

C语言 为什么我写的函数输入一组数据就直接输出了,我想连续输入5组数据的

你的程序可以输入五组数据啊

就是stu[5] 前面多了个分号啊

#includestdio.h

#includestdlib.h

struct student

{

int num;

char name[10];

float score[3];

}stu[5];

int main()

{

void print(struct student *);

int j;

struct student *k;

printf("Please input the data of students:\n");

for(k=stu;kstu+5;k++)

{

printf("Please input the num,name:\n");

scanf("%d %s",k-num,k-name);

for(j=0;j3;j++)

scanf("%f",k-score[j]);

}

print(k);

system("pause");

return 0;

}

void print(struct student *p)

{

printf("num  name score\n");

for(p=stu;pstu+5;p++)

printf("%-5d%-5s%-5.1f%-5.1f%-5.1f\n",p-num,p-name,p-score[0],p-score[1],p-score[2]);

}

C语言中自定义函数样引用一个数组该什么办?

调用时:

sum=fun1(a[N]);

printf("sum=%d\n",sum);

定义中:

int fun1(int a[N],int i)

{

int s=0;

for(i=0;iN;i++)

s=s+a[i];

return(s);

}

注意定义的函数int fun1(int a[N],int i),在调用函数的时候语法是sum=fun1(int a[N],int i);错误在于调用函数时()内的参数应该和定义时一样

如何用c语言编程软件编写一个求函数的程序?即输入一组数据,得出一个函数。

你的意思是说,输入一些数据,让程序拟合出来一个函数。

这个很复杂。比如我举个例子。

多项式拟合函数polyfit之C语言的源码

2010-11-25 10:05:57| 分类: VC++编程 | 标签:double poly_n polyfit int for |字号 订阅

#include stdio.h

#include conio.h

#include stdlib.h

#include math.h

main()

{

int i,j,m,n=7,poly_n=2;

double x[7]={1,2,3,4,6,7,8},y[7]={2,3,6,7,5,3,2};

double a[3];

void polyfit(int n,double *x,double *y,int poly_n,double a[]);

system("cls");

polyfit(n,x,y,poly_n,a);

for (i=0;ipoly_n+1;i++)/*这里是升序排列,Matlab是降序排列*/

printf("a[%d]=%g\n",i,a[i]);

getch();

}

/*==================polyfit(n,x,y,poly_n,a)===================*/

/*=======拟合y=a0+a1*x+a2*x^2+……+apoly_n*x^poly_n========*/

/*=====n是数据个数 xy是数据值 poly_n是多项式的项数======*/

/*===返回a0,a1,a2,……a[poly_n],系数比项数多一(常数项)=====*/

void polyfit(int n,double x[],double y[],int poly_n,double a[])

{

int i,j;

double *tempx,*tempy,*sumxx,*sumxy,*ata;

void gauss_solve(int n,double A[],double x[],double b[]);

tempx=calloc(n,sizeof(double));

sumxx=calloc(poly_n*2+1,sizeof(double));

tempy=calloc(n,sizeof(double));

sumxy=calloc(poly_n+1,sizeof(double));

ata=calloc((poly_n+1)*(poly_n+1),sizeof(double));

for (i=0;in;i++)

{

tempx[i]=1;

tempy[i]=y[i];

}

for (i=0;i2*poly_n+1;i++)

for (sumxx[i]=0,j=0;jn;j++)

{

sumxx[i]+=tempx[j];

tempx[j]*=x[j];

}

for (i=0;ipoly_n+1;i++)

for (sumxy[i]=0,j=0;jn;j++)

{

sumxy[i]+=tempy[j];

tempy[j]*=x[j];

}

for (i=0;ipoly_n+1;i++)

for (j=0;jpoly_n+1;j++)

ata[i*(poly_n+1)+j]=sumxx[i+j];

gauss_solve(poly_n+1,ata,a,sumxy);

free(tempx);

free(sumxx);

free(tempy);

free(sumxy);

free(ata);

}

void gauss_solve(int n,double A[],double x[],double b[])

{

int i,j,k,r;

double max;

for (k=0;kn-1;k++)

{

max=fabs(A[k*n+k]); /*find maxmum*/

r=k;

for (i=k+1;in-1;i++)

if (maxfabs(A[i*n+i]))

{

max=fabs(A[i*n+i]);

r=i;

}

if (r!=k)

for (i=0;in;i++) /*change array:A[k]A[r] */

{

max=A[k*n+i];

A[k*n+i]=A[r*n+i];

A[r*n+i]=max;

}

max=b[k]; /*change array:b[k]b[r] */

b[k]=b[r];

b[r]=max;

for (i=k+1;in;i++)

{

for (j=k+1;jn;j++)

A[i*n+j]-=A[i*n+k]*A[k*n+j]/A[k*n+k];

b[i]-=A[i*n+k]*b[k]/A[k*n+k];

}

}

所以这种程序是超级大型的,一般没人能独立写出来。

编程计算器和一些程序能实现,但是源代码都是不公布的。


网页名称:c语言所有函数用一组数据 c语言编写的每个函数都可以
网站地址:http://cdxtjz.cn/article/ddicisi.html

其他资讯