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;}
随机生成内容得in.dat:
41 136334 1719169 1211478 1826962 165705 1723281 129961 52995 104827 732391 113902 5292 1017421 1319718 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-