70,020
社区成员




#include <stdio.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>
double doublemod(double a,double b)
{
int i;
double value;
i=(int)(a/b);
value=a-i*b;
return value;
}//随机数的算法
double *edisrndsq(double *r,int n,double b,double c,double m)
{
double *value,*vp;
int i;
if(n>=1)
{
value=(double *)malloc(n*sizeof(double));
for(i=0,vp=value;i <n;i++,vp++)
{
*r=doublemod(*r,b);
*r=doublemod((*r)*m+c,b);
*vp=*r/b;
}
return (value);
}
return 0;
}//产生随机数的函数。
void swap(double *a,double *b)
{
double temp;
temp=*a;
*a=*b;
*b=temp;
}//互相赋值
void main()
{
double min,max,All;
double site[5];
double b,c,m;
int i,x;
double *valsq,*vp,r;
r=(double)time(NULL);
int n=5;
b=65536.0;
c=13849.0;
m=2053.0;
valsq=edisrndsq(&r,n,b,c,m);
printf("\nThe random number is:\n");
for(i=0,vp=valsq;i <n;i++,vp++)//问题就出在这,我是想将产生的随机数跟0。5进行比较,然后给数组site[]赋值。最后好求出数组site[]最大值和最小值,但是我对数组不是很熟悉。
{
printf("%5.21f\n",*vp);
if(*vp <=0.5)
site[i]=*vp-1;
else
site[i]=*vp+1;
}
printf("\nThe number of the array after transform:\n");
for(i=0;i<n;i++)
printf("site[%d]:%9f\n",i,site[i]);
for(x=4;x>0;x--)//这个FOR是求最小值
{
if(site[x] <site[x-1]) swap(&site[x],&site[x-1]);
}
min=site[0];
printf("\nmin=%f\n",min);
max=site[4];
printf("\nmax=%f\n",max);
All=abs(min)+max;//这是求最小值的绝对值和最大值的和。
printf("\nAll=%f\n",All);
}
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>
double doublemod(double a,double b)
{
int i;
double value;
// i=value;
i=(int)(a/b);
value=a-i*b;
return value;
}//....................................//随机数的算法
double *edisrndsq(double *r,int n,double b,double c,double m)
{
double *value,*vp;
int i;
if(n>=1)
{
value=(double *)malloc(n*sizeof(double));
for(i=0,vp = value;i <n;i++,vp++)
{
*r=doublemod(*r,b);
*r=doublemod((*r)*m+c,b);
*vp=*r/b;
}
return (value);
}
return 0;
}//。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。//产生随机数的函数。
void swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}//。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。//互相赋值
void main()
{
double max, min, All;
int site[5]; //不初始化吗?
double b,c,m;
double *valsq,*vp,r;
r=(double)time(NULL);
int n=5, i, x, d;
b=65536.0;
c=13849.0;
m=2053.0;
valsq=edisrndsq(&r,n,b,c,m);
printf("\nThe random number is:\n");
for(i=1,vp=valsq;i <n+1;i++,vp++)//。。。。。//问题就出在这,我是想将产生的随机数跟0。5进行比较,然后给数组site[]赋值。最后好求出数组site[]最大值和最小值,但是我对数组不是很熟悉。
{
printf("%5.21f\n",*vp);
if(*vp <=0.5)
site[i]=site[i-1]-1; //没有初始化,这里的值???
else site[i]=site[i-1]+1;
}
for(x=4;x>0;x--)//。。。。。。。。。。。。。。。。。。。。。。。。。//这个FOR是求最小值
{
if(site[x] <site[x-1]) swap(&site[x],&site[x-1]);
printf("%lf ", site[x]); //输出类型
}
min=site[0];
printf("\nmin=%lf\n",min);
for(d=0;d <4;d++)//.............................................//这个FOR是求最大值。
{
if(site[d]>site[d+1]) swap(&site[d],&site[d+1]);
}
max=site[4];
printf("\nmax=%lf\n",max);
All=abs(min)+max;//。。。。。。。。。。。。。。。。。。。。。。。。。。。//这是求最小值的绝对值和最大值的和。
printf("\nAll=%lf\n",All);
}
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>
double doublemod(double a,double b)
{
int i;
double value;
i=value; //????
i=(int)(a/b);
value=a-i*b;
return value;
}//....................................//随机数的算法
double *edisrndsq(double *r,int n,double b,double c,double m)
{
double *value,*vp;
int i;
if(n>=1)
{
value=(double *)malloc(n*sizeof(double));
for(i=0,vp=value;i <n;i++,vp++)
{
*r=doublemod(*r,b);
*r=doublemod((*r)*m+c,b);
*vp=*r/b;
}
return (value);
}
return 0;
}//。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。//产生随机数的函数。
void swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}//。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。//互相赋值
void main()
{
double min,max,All;
int site[5],i,x; //<-----------将i,x的定义改为int,数组下标不能使用浮点型
double b,c,m,n;
double d;
double *valsq,*vp,r;
r=(double)time(NULL);
n=5;
b=65536.0;
c=13849.0;
m=2053.0;
valsq=edisrndsq(&r,n,b,c,m);
printf("\nThe random number is:\n");
for(i=1,vp=valsq;i <n+1;i++,vp++)//。。。。。//问题就出在这,我是想将产生的随机数跟0。5进行比较,然后给数组site[]赋值。最后好求出数组site[]最大值和最小值,但是我对数组不是很熟悉。
{
printf("%5.21f\n",*vp);
if(*vp <=0.5) //<------------ i<0.5 ?????*vp才是随机数啊
site[i]=site[i-1]-1;
else site[i]=site[i-1]+1;
}
for(x=4;x>0;x--)//。。。。。。。。。。。。。。。。。。。。。。。。。//这个FOR是求最小值
{
if(site[x] <site[x-1])
swap(&site[x],&site[x-1]);
}
min=site[0];
printf("\nmin=%d\n",min); //doule定义,为什么要用整形输出?如果输出double可用%lf
for(x=0;x <4;x++)//.............................................//这个FOR是求最大值。
{
if(site[x]>site[x+1]) swap(&site[x],&site[x+1]);
}
max=site[4];
printf("\nmax=%d\n",max); //doule定义,为什么要用整形输出?如果输出double可用%lf
All=abs(min)+max;//。。。。。。。。。。。。。。。。。。。。。。。。。。。//这是求最小值的绝对值和最大值的和。
printf("\nAll=%d\n",All); //doule定义,为什么要用整形输出?如果输出double可用%lf
}