/****************************************************************************************************************
*(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 <stdafx.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string>
using namespace std;
void Rand1000();/*生成1000个随机数放入文件中*/
void input(int a[],int n);/*读取数组里的数放入数组中*/
void digitcount(int a[],int n,int b[10]);/*计算0-9出现的次数*/
void myiput(int a[],int n);/*在input(int,int)实现了,你自己改一下吧,我没看到有这么一个函数*/
int maxprime(int *p,int n);/*最大素数*/
bool isPrime(int);/*判断是否为素数*/
/*遗留问题:对于这些整数排序之后,分别输出相邻两数之差最大和之差最小的两个数,如果有多组满足条件要输出所有的。
*/
/*template <class Type>
Type stringToNum(const string& str)
{
istringstream iss(str);
Type num;
iss >> num;
return num;
}*/
FILE *fp;
int main()
{
int array[1000],Ab[10],int max = 0;
srand( (unsigned)time(NULL) );
Rand1000();
input(array,1000);
digitcount(array,1000,Ab);
max = maxprime(array,10);
if( max == 0 )
printf("
[无最大素数]
");
else
printf("
最大素数:[%d]
",max);
return 0;
}
int maxprime(int *p,int n)
{
int MAX = -1;
for(int i=0;i<n;i++)
if( isPrime(p[i]) && p[i] > MAX )
MAX = p[i];
if( MAX == -1 )
return 0;
return MAX;
}
bool isPrime(int n)
{
if (n == 1) return false;
if (n == 2) return true;
if (n%2 == 0) return false;
for (int i = 3; i * i < n; i += 2)
if (n%i == 0) return false;
return true;
}
void digitcount(int a[],int n,int b[10])
{
int temp =0;
for(int k=0;k<10;k++)
b[k]=0;
for(int i=0;i<n;i++)
{
temp = a[i] % 10 ;
while(a[i])
{
switch(temp)
{
case 0 : {b[0] ++;break;}
case 1 : {b[1] ++;break;}
case 2 : {b[2] ++;break;}
case 3 : {b[3] ++;break;}
case 4 : {b[4] ++;break;}
case 5 : {b[5] ++;break;}
case 6 : {b[6] ++;break;}
case 7 : {b[7] ++;break;}
case 8 : {b[8] ++;break;}
case 9 : {b[9] ++;break;}
default: {printf("
[switch error]
");}
}
a[i] = a[i] / 10 ;
temp = a[i] % 10 ;
}
}
for(int j=0;j<10;j++)
printf("
[%d] 出现的次数为 [%d]
",j,b[j]);
}
void input( int a[],int n)
{
int *p = a;
char ch;
string temp="";
if( (fp = fopen("d:\file1.bat","rt")) == NULL )
{
perror(" open file failed ");
exit(EXIT_FAILURE);
}
ch = fgetc(fp);
temp = ch;
for(int i=0;i<n;i++)
{
while( ch != EOF && ch != )
{
ch = fgetc(fp);
temp += ch;
}
p[i] = atoi(temp.c_str());
ch = fgetc(fp);
temp = ch;
}
fclose(fp);
} void Rand1000() { int x,temp; if( (fp = fopen("d:\file1.bat","wt")) == NULL ) { perror(" fopen failed "); exit(EXIT_FAILURE); } x = temp = -1; for(int i=0;i<1000;i++) { x = rand() % 10000; if(temp != x ) { fprintf( fp,"%d ",x); printf("%d ",x); temp = x; } } fclose(fp); }
第一题
int a[1000]; int fun() { int i,m=0; for(i=1;i<=1000;i++) { if(i%7==0||i%11==0) {
if(i%7==0&&i%11==0) continue;
a[m]=i; m++; } } return m; } main() { int n,len,i; len=fun(); printf("符合条件的整数有%d个 ",len);
for(i=0;i<len;i++)
printf("%4d",a[i]); printf(" "); }
美得云怎么样?美得云好不好?美得云是第一次来推广软文,老板人脾气特别好,能感觉出来会用心对待用户。美得云这次为大家提供了几款性价比十分高的产品,美国cera 2核4G 15元/月 香港1核 1G 3M独享 15元/月,并且还提供了免费空间给大家使用。嘻嘻 我也打算去白嫖一个空间了。新用户注册福利-8折优惠码:H2dmBKbF 截止2021.10.1结束。KVM架构,99.99%高可用性,依托BGP...
pigyun怎么样?PIGYun成立于2019年,2021是PIGYun为用户提供稳定服务的第三年,期待我们携手共进、互利共赢。PIGYun为您提供:香港CN2线路、韩国CN2线路、美西CUVIP-9929线路优质IaaS服务。月付另有通用循环优惠码:PIGYun,获取8折循环优惠(永久有效)。目前,PIGYun提供的香港cn2云服务器仅29元/月起;韩国cn2云服务器仅22元/月起;美国CUVI...
触碰云怎么样?触碰云是一家成立于2019年的商家。触碰云主营香港/美国 VPS服务器、独立服务器以及免备案CDN。采用的是kvm虚拟构架,硬盘Raid10,Cn2线路,去程电信CN2、移动联通直连,回程三网CN2。最低1核1G带宽1M仅20.8元/月,不过这里推荐香港4核4G15M,香港cn2 gia线路云服务器,仅115.2元/月起,性价比还是不错的。点击进入:触碰云官方网站地址触碰云优惠码:优...