/****************************************************************************************************************
*(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(" "); }
达州创梦网络怎么样,达州创梦网络公司位于四川省达州市,属于四川本地企业,资质齐全,IDC/ISP均有,从创梦网络这边租的服务器均可以备案,属于一手资源,高防机柜、大带宽、高防IP业务,一手整C IP段,四川电信,一手四川托管服务商,成都优化线路,机柜租用、服务器云服务器租用,适合建站做游戏,不须要在套CDN,全国访问快,直连省骨干,大网封UDP,无视UDP攻击,机房集群高达1.2TB,单机可提供1...
VirMach,成立于2014年的美国IDC商家,知名的低价便宜VPS销售商,支持支付宝、微信、PayPal等方式付款购买,主打美国、欧洲暑假中心产品,拥有包括洛杉矶、西雅图、圣何塞、凤凰城在内的11个数据中心可以选择,可以自由搭配1Gbps、2Gbps、10Gbps带宽端口,有Voxility DDoS高防IP可以选择(500Gbps以上的防御能力),并且支持在控制面板付费切换机房和更换IP(带...
3C云互联怎么样?3C云互联专注免备案香港美国日本韩国台湾云主机vps服务器,美国高防CN2GIA,香港CN2GIA,顶级线路优化,高端品质售后无忧!致力于对互联网云计算科技深入研发与运营的极客共同搭建而成,将云计算与网络核心技术转化为最稳定,安全,高速以及极具性价比的云服务器等产品提供给用户!专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端部署化简为零,轻松...