编写函数generateNprimes(int lower,int n,int res[])将大于整数lower且紧靠lower的n个素数存入数组中,下面我们就来说一说关于c语言文件的保存和读取?我们一起去了解并探讨一下这个问题吧!
c语言文件的保存和读取
编写函数generateNprimes(int lower,int n,int res[])将大于整数lower且紧靠lower的n个素数存入数组中。
首先是控制台操作,提示输入两个整数lower和n,如若输入17,5,则应输出19,23,29,31,37。
然后调用函数generateInDat()生成15对整数(数lower和n)到文件in.dat。
最后调用函数readWriteDAT()从in.DAT 文件中读取10 对low、n,分别求取符合要求的素数,并把结果输出到文件out.DAT 中。
#include <stdio.h>
#include <stdlib.h>
int isPrime(int m) // 判断某一数字是否是素数
{
int i;
if(m==2) return 1;
if(m%2==0) return 0;
for(i = 3; i < m/2; i =2)
if(m % i == 0)
return 0;
return 1;
}
void generateNprimes(int lower,int n,int res[])
{
int i=0;
for(lower =1;n>0;lower )
if(isPrime(lower))
{
res[i ]=lower;
n--;
}
}
void generateInDat()
{
int lower,n,i;
FILE *fp = fopen("in.dat","w ");
for(i=0;i<15;i )
{
lower = rand();
n = 5 rand()*(20-5)/(RAND_MAX 1);
fprintf(fp,"%d %d\n",lower,n);
}
fclose(fp);
}
void readWriteDAT()
{
int lower, n, res[1000], i;
FILE *rf, *wf;
rf = fopen("in.dat", "r");
wf = fopen("out.dat", "w");
for(i = 0; i < 10; i )
{
fscanf(rf,"%d%d",&lower,&n); // 从文件读入一行
generateNprimes(lower,n,res); // 以读入的数据为参数,生成素数到数据
for(lower=0;lower < n; lower )
fprintf(wf, "%d ", res[lower]); // 从数组写入指定数量的数据到文件
fprintf(wf, "\n"); // 写入换行符号到文件
}
fclose(rf);
fclose(wf);
}
void main()
{
int lower, n, res[1000];
// 控制台输入、数据处理、输出
puts(" This program is to get n prime numbers which are larger than lower.");
printf(" >> Please input two integers to lower and n : ");
scanf("%d%d", &lower, &n );
generateNprimes(lower, n, res);
printf(" >> The %d prime numbers which are larger than %d are:\n ",n,lower);
for(lower = 0; lower < n; lower )
printf(" %d ", res[lower]);
// 文件输入、数据处理、文件输出
generateInDat();
readWriteDAT();
system("in.dat"); // 文件(数据输入部分)打开
system("out.dat"); // 文件(数据输出部分)打开
printf("\n Press any key to quit...");
getchar();getchar();
return;
}
/*
This program is to get n prime numbers which are larger than lower.
>> Please input two integers to lower and n : 119 5
>> The 5 prime numbers which are larger than 119 are:
127 131 137 139 149
Press any key to quit...
*/
随机生成内容的in.dat:
41 13
6334 17
19169 12
11478 18
26962 16
5705 17
23281 12
9961 5
2995 10
4827 7
32391 11
3902 5
292 10
17421 13
19718 14
out.dat:
43 47 53 59 61 67 71 73 79 83 89 97 101
6337 6343 6353 6359 6361 6367 6373 6379 6389 6397 6421 6427 6449 6451 6469 6473 6481
19181 19183 19207 19211 19213 19219 19231 19237 19249 19259 19267 19273
11483 11489 11491 11497 11503 11519 11527 11549 11551 11579 11587 11593 11597 11617 11621 11633 11657 11677
26981 26987 26993 27011 27017 27031 27043 27059 27061 27067 27073 27077 27091 27103 27107 27109
5711 5717 5737 5741 5743 5749 5779 5783 5791 5801 5807 5813 5821 5827 5839 5843 5849
23291 23293 23297 23311 23321 23327 23333 23339 23357 23369 23371 23399
9967 9973 10007 10009 10037
2999 3001 3011 3019 3023 3037 3041 3049 3061 3067
4831 4861 4871 4877 4889 4903 4909
-End-
,