早教吧作业答案频道 -->其他-->
要求实现如下功能:(1)定义函数Rand1000(),随机生成1000个均不相同的正整数,并写入到文本文件“file1.dat”中,各数之间用空格来分隔。(2)编写一个函数input(inta[],intn),将上述数据
题目详情
要求实现如下功能:
(1)定义函数Rand1000(), 随机生成1000个均不相同的正整数,并写入到文本文件“file1.dat” 中,各数之间用空格来分隔。
(2)编写一个函数input(int a[],int n),将上述数据读入到数组a中。
(3)编写一个函数digitcount(int a[],int n,int b[10]), 统计数组a的每个元素保存的整数中,每位数字出现的次数,并分别保存在b[0]到b[9]中。
(4)编写函数maxprime(int *p,int n), 找出其中最大的素数,如果不存在素数函数结果为0。(5) 对于这些整数排序之后,分别输出相邻两数之差最大和之差最小的两个数,如果有多组满足条件要输出所有的。(6)定义函数myinput(int a[],int n),用fgetc函数从文件“file1.dat”上逐个读入字符,并将其转换成独立的正整数,并依次存入数组a中。
(1)定义函数Rand1000(), 随机生成1000个均不相同的正整数,并写入到文本文件“file1.dat” 中,各数之间用空格来分隔。
(2)编写一个函数input(int a[],int n),将上述数据读入到数组a中。
(3)编写一个函数digitcount(int a[],int n,int b[10]), 统计数组a的每个元素保存的整数中,每位数字出现的次数,并分别保存在b[0]到b[9]中。
(4)编写函数maxprime(int *p,int n), 找出其中最大的素数,如果不存在素数函数结果为0。(5) 对于这些整数排序之后,分别输出相邻两数之差最大和之差最小的两个数,如果有多组满足条件要输出所有的。(6)定义函数myinput(int a[],int n),用fgetc函数从文件“file1.dat”上逐个读入字符,并将其转换成独立的正整数,并依次存入数组a中。
▼优质解答
答案和解析
#include
#include
#include
/* 建立n个随机数序列d【】 */
int creat_random(int d[],int n)
{ int i,k;
FILE *fp;
srand((unsigned)time(NULL));
for(i=0;i { d[i]=rand();
for(k=0;k if(d[k]==d[i]) { k=0; d[i]=rand(); } /*去掉重复数据*/
printf("%d ",d[i]);
}
printf("\n======End Creat=======\n");
fp=fopen("file1.dat","w");
for(i=0;i { fprintf(fp,"%d ",d[i]);
}
fclose(fp);
}
/* 读数据文件 */
int input(char filename[30],int a[])
{ FILE *fp;
int i,k=0;
printf("\n======Read File=======\n");
if((fp=fopen(filename,"r"))==NULL)
{ printf("Read File Error"); return 0; }
while(!feof(fp))
{ fscanf(fp,"%d",&a[k]); k=k+1; }
printf("\n End File total_records=%d\n",k);
return k-1;
}
/*统计数字个数*/
digitcount(int a[],int n,int b[10])
{ int i,k;
printf("\n======Begin digitcount======\n");
for(i=0;i<10;i++)
b[i]=0;
for(i=0;i { k=a[i];
while(k!=0)
{ b[k%10]++; k=k/10; }
}
for(i=0;i<10;i++)
printf("%d ",b[i]);
printf("\n======End digitcount======\n") ;
}
/* 为数据排序 */
sort(int d[],int total)
{ int i,k,temp;
printf("\n======Begin sort======\n");
for(i=1;i { for(k=i-1,temp=d[i];k>=0;k--)
{ if(d[k] else { d[k+1]=temp; break; }
}
if(k<0) d[0]=temp;
}
for(i=0;i printf("%d ",d[i]);
printf("\n======End sort======\n");
}
/*确定最大的素数*/
int maxprime(int *p,int n)
{ int i,k,j;
for(i=0;i { k=p[i];
for(j=2;j<=sqrt(k*1.0)+1;j++)
if(k%j==0) break;
if(j>sqrt(k*1.0)+1) return i; /*p[i]是最大素数*/
}
return -1; /*不包含素数*/
}
/*两数之差最大、最小*/
max_min(int *p,int n)
{ int max=p[0]-p[1],min=p[0]-p[1],difference;
int i,k;
for(i=0;i { difference=fabs(p[i]-p[i+1]);
if(difference>max) max=difference;
if(difference }
for(i=0;i { if(max==fabs(p[i]-p[i+1]))
printf("Max difference: d[%d]-d[%d]=%d\n",i,i+1,(int)fabs(p[i]-p[i+1]));
if(min==fabs(p[i]-p[i+1]))
printf("Min difference: d[%d]-d[%d]=%d\n",i,i+1,(int)fabs(p[i]-p[i+1]));
}
}
/*字符数据转换*/
void Transformation(char *fn,int *p)
{ FILE *fp;
char d[10];
int k,temp,i=0;
fp=fopen(fn,"r");
printf("\n====== Begin Transformation ======\n");
while(!feof(fp))
{ k=0;
temp=fgetc(fp);
/*32:空格 13:回车 10:换行*/
while( temp==32 ||temp==13 || temp==10) temp=fgetc(fp);
while(temp!=32 && !feof(fp)) /* 32是空格的内码 */
{ d[k]=temp; k++; temp=fgetc(fp); }
d[k]='\0';
p[i]=atoi(d);
i++;
}
printf("\nTotal number is: %d\n",i-1);
fclose(fp);
for(k=0;k printf("%d ",p[k]);
printf("\n====== End Transformation ======\n");
}
int main()
{ int data[10000],n=10,total_records,b[10],max_prime;
char filename[]={"file1.dat"};
creat_random(data,n);
total_records=input(filename,data);
digitcount(data,total_records,b);
sort(data,total_records);
max_prime=maxprime(data,total_records);
if(max_prime!=-1)
printf("\n MaxPrime=data[%d]:%d\n\n",max_prime,data[max_prime]);
else
printf("\n====== 指定数据中不包含素数!======\n\n");
max_min(data,total_records);
Transformation(filename,data);
system("pause");
}
#include
#include
/* 建立n个随机数序列d【】 */
int creat_random(int d[],int n)
{ int i,k;
FILE *fp;
srand((unsigned)time(NULL));
for(i=0;i
for(k=0;k if(d[k]==d[i]) { k=0; d[i]=rand(); } /*去掉重复数据*/
printf("%d ",d[i]);
}
printf("\n======End Creat=======\n");
fp=fopen("file1.dat","w");
for(i=0;i
}
fclose(fp);
}
/* 读数据文件 */
int input(char filename[30],int a[])
{ FILE *fp;
int i,k=0;
printf("\n======Read File=======\n");
if((fp=fopen(filename,"r"))==NULL)
{ printf("Read File Error"); return 0; }
while(!feof(fp))
{ fscanf(fp,"%d",&a[k]); k=k+1; }
printf("\n End File total_records=%d\n",k);
return k-1;
}
/*统计数字个数*/
digitcount(int a[],int n,int b[10])
{ int i,k;
printf("\n======Begin digitcount======\n");
for(i=0;i<10;i++)
b[i]=0;
for(i=0;i
while(k!=0)
{ b[k%10]++; k=k/10; }
}
for(i=0;i<10;i++)
printf("%d ",b[i]);
printf("\n======End digitcount======\n") ;
}
/* 为数据排序 */
sort(int d[],int total)
{ int i,k,temp;
printf("\n======Begin sort======\n");
for(i=1;i
{ if(d[k]
}
if(k<0) d[0]=temp;
}
for(i=0;i
printf("\n======End sort======\n");
}
/*确定最大的素数*/
int maxprime(int *p,int n)
{ int i,k,j;
for(i=0;i
for(j=2;j<=sqrt(k*1.0)+1;j++)
if(k%j==0) break;
if(j>sqrt(k*1.0)+1) return i; /*p[i]是最大素数*/
}
return -1; /*不包含素数*/
}
/*两数之差最大、最小*/
max_min(int *p,int n)
{ int max=p[0]-p[1],min=p[0]-p[1],difference;
int i,k;
for(i=0;i
if(difference>max) max=difference;
if(difference
for(i=0;i
printf("Max difference: d[%d]-d[%d]=%d\n",i,i+1,(int)fabs(p[i]-p[i+1]));
if(min==fabs(p[i]-p[i+1]))
printf("Min difference: d[%d]-d[%d]=%d\n",i,i+1,(int)fabs(p[i]-p[i+1]));
}
}
/*字符数据转换*/
void Transformation(char *fn,int *p)
{ FILE *fp;
char d[10];
int k,temp,i=0;
fp=fopen(fn,"r");
printf("\n====== Begin Transformation ======\n");
while(!feof(fp))
{ k=0;
temp=fgetc(fp);
/*32:空格 13:回车 10:换行*/
while( temp==32 ||temp==13 || temp==10) temp=fgetc(fp);
while(temp!=32 && !feof(fp)) /* 32是空格的内码 */
{ d[k]=temp; k++; temp=fgetc(fp); }
d[k]='\0';
p[i]=atoi(d);
i++;
}
printf("\nTotal number is: %d\n",i-1);
fclose(fp);
for(k=0;k
printf("\n====== End Transformation ======\n");
}
int main()
{ int data[10000],n=10,total_records,b[10],max_prime;
char filename[]={"file1.dat"};
creat_random(data,n);
total_records=input(filename,data);
digitcount(data,total_records,b);
sort(data,total_records);
max_prime=maxprime(data,total_records);
if(max_prime!=-1)
printf("\n MaxPrime=data[%d]:%d\n\n",max_prime,data[max_prime]);
else
printf("\n====== 指定数据中不包含素数!======\n\n");
max_min(data,total_records);
Transformation(filename,data);
system("pause");
}
看了要求实现如下功能:(1)定义函...的网友还看了以下:
进行两个样本均数差别的u检验时,要求A.两组数据均数相近B.两样本的方差必须相等C.两样本必须来自 2020-04-13 …
Sx表示的是( )。 A.总体中各样本均数分布的离散情况B.样本内实测值与总体均数之差C. 2020-05-25 …
两个大样本均数比较的u检验,|u|=1.98,则统计结论是( ) 2020-06-05 …
σX-表示A.总体均数的离散程度B.变量值x的可靠程度C.样本均数的标准差D.变量值间的差异大小E. 2020-06-07 …
配对比较的t检验与随机区组设计的方差分析之间的关系是什么1.如上2.完全随机设计的两样本均数比较的 2020-07-16 …
1、样本平均数与全及平均数()A.前者是确定值,后者是随机变量B.二者均为确定值C.前者是随机变量 2020-07-20 …
如何生成以下数字如果知道样本均数和标准差x±s是4.86±1.17我需要编一组n=62个数据使其达 2020-08-03 …
在总体N(80,20)中随机抽取一个容量为100的样本.(1)样本均数X上加一横服从什么分布?(2 2020-08-03 …
从一个正态分布的总体中,每次抽取一定容量的样本计算均值,样本均数...从一个正态分布的总体中,每次 2020-08-03 …
两样本均数比较的t检验的公式 2020-08-03 …