/****************************************************************************************************************
*(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(" "); }
数脉科技(shuhost)8月促销:香港独立服务器,自营BGP、CN2+BGP、阿里云线路,新客立减400港币/月,老用户按照优惠码减免!香港服务器带宽可选10Mbps、30Mbps、50Mbps、100Mbps带宽,支持中文本Windows、Linux等系统。官方网站:https://www.shuhost.com* 更大带宽可在选购时选择同样享受优惠。* 目前仅提供HKBGP、阿里云产品,香港...
艾云怎么样?艾云是一家去年年底成立的国人主机商家,商家主要销售基于KVM虚拟架构的VPS服务,机房目前有美国洛杉矶、圣何塞和英国伦敦,目前商家推出了一些年付特价套餐,性价比非常高,洛杉矶套餐低至85元每年,给500M带宽,可解奈飞,另外圣何塞也有特价机器;1核/1G/20G SSD/3T/2.5Gbps,有需要的朋友以入手。点击进入:艾云官方网站艾云vps促销套餐:KVM虚拟架构,自带20G的防御...
目前在标准互联这边有两台香港云服务器产品,这不看到有通知到期提醒才关注到。平时我还是很少去登录这个服务商的,这个服务商最近一年的促销信息比较少,这个和他们的运营策略有关系。已经从开始的倾向低价和个人用户云服务器市场,开始转型到中高端个人和企业用户的独立服务器。在这篇文章中,有看到标准互联有推出襄阳电信高防服务器100GB防御。有三款促销方案我们有需要可以看看。我们看看几款方案配置。型号内存硬盘IP...