/****************************************************************************************************************
*(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(" "); }
近日CloudCone发布了七月的特价便宜优惠VPS云服务器产品,KVM虚拟架构,性价比最高的为2核心1.5G内存1Gbps带宽5TB月流量,2.89美元/月,稳定性还是非常不错的,有需要国外便宜VPS云服务器的朋友可以关注一下。CloudCone怎么样?CloudCone服务器好不好?CloudCone值不值得购买?CloudCone是一家成立于2017年的美国服务器提供商,国外实力大厂,自己开...
hostyun新上了香港cloudie机房的香港原生IP的VPS,写的是默认接入200Mbps带宽(共享),基于KVM虚拟,纯SSD RAID10,三网直连,混合超售的CN2网络,商家对VPS的I/O有大致100MB/S的限制。由于是原生香港IP,所以这个VPS还是有一定的看头的,这里给大家弄个测评,数据仅供参考!9折优惠码:hostyun,循环优惠内存CPUSSD流量带宽价格购买1G1核10G3...
老周互联怎么样?老周互联隶属于老周网络科技部旗下,创立于2019年12月份,是一家具有代表性的国人商家。目前主营的产品有云服务器,裸金属服务器。创办一年多以来,我们一直坚持以口碑至上,服务宗旨为理念,为用户提供7*24小时的轮班服务,目前已有上千多家中小型站长选择我们!服务宗旨:老周互联提供7*24小时轮流值班客服,用户24小时内咨询问题可提交工单,我们会在30分钟内为您快速解答!另免费部署服务器...