已知数据文件IN.DAT中存有300个四位数,并已调用读函数READDAT() 把这些数存入数组a中。请编制函数
已知数据文件IN.DAT中存有300个四位数,并已调用读函数READDAT() 把这些数存入数组a中。请编制函数Svalue(),其功能是:求出这些四位数中素数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后将数组b中的四位数按从小到大的顺序排序,最后调用写函数writeDat(),把结果输出到文件OUT.DAT中。例如:5591是素数,则满足条件,存入数组b中,且个数cnt=cnt+1;9812是非素数,则不满足条件,忽略。部分源程序已给出。程序中已定义数组a[300]、b[300],已定义变量cnt。请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。#include <stdio.h>int a[300], b[300], cnt = 0;int isP(int m){ int i; for (i=2; i<m; i++) if (m%i == 0) return 0; return 1;}void jsValue(){ }void ReadDat(){ FILE *fp; int i; fp = fopen("in.dat", "r"); for (i=0; i<300; i++) fscanf(fp, "%d,", &a[i]); fclose(fp);}void writeDat(){ FILE *fp; int i; fp = fopen("out.dat", "w"); fprintf(fp, "%d\n", cnt); for (i=0; i<cnt; i++) fprintf(fp, "%d\n", b[i]); fclose(fp);}main(){ int i; ReadDat(); jsValue(); writeDat(); printf("cnt=%d\n", cnt); for (i=0; i<cnt; i++) printf("b[%d]=%d\n", i, b[i]);}
【解析及答案】本题的程序属于按条件查找特定类型的数字的程序,考核的知识点为判断素数和排序算法。
本题的解题思路是:逐个判断数组a中的元素是否为素数,如果是素数,则将其存入数组b中,最后对数组b进行升序排列。计算方法是:每次选定一个位置的元素,然后将该元素与该元素后面的所有元素进行比较,如果该元素比其后面的元素大,则两者交换,较比完成后,此位置的元素比其后面所有的元素都小;比较一直进行到所有元素均被访问后结束。在该程序中已经给出一个函数 isP()。通过分析可知,该函数的功能是判断参数m是否为素数,若是素数,则返回1;若不是,则返回0。在解答本题时,若题目中提供了此类函数,就可以直接调用,为编程提供便利。
程序的流程是:首先调用函数ReadDat() 读入数据,然后调用函数jsValue() 对数据进行处理,最后由函数writeDat() 将结果写回到文件out.dat中。在函数jsValue() 中,首先通过一个for循环来判断a[i] 是否为素数,若是素数,则把a[i] 存入数组b中,且记录个数的变量cnt的值将增加1,然后通过两重for循环将数组b中的元素进行升序排列,函数结束。
void jsvalue() /*标准答案*/
{int j,I,value;
for(I=0;I<300;I++)
if(isP(a[I])) {b[cnt]=a[I];cnt++;}
for(I=0;I
{value=b[I]; b[I]=b[j]; b[j]=value;}
}
请问小提琴中C调D调E调F调A调B调是什么意思?有些调为什么空弦音为526有的是415 英语 2020-04-07 …
使用照相机拍摄人的全身像时,位置站好以后,发现人的全身像不能进入画面,应采取的措施为()A照相机离 其他 2020-04-27 …
汽油发动机点火时间过迟,可将白金间隙( )A.调大一些B.调小一些C.不变化 职业技能鉴定 2020-05-31 …
核实家庭收入的方法有哪些()?A.入户调查B.邻里走访C.信函索证D.跟踪了解E.民主评议。 公务员考试 2020-05-31 …
大学生自我意识论文我想研究大学生的自我意识,并写一篇论文,我想问问我能从哪些方面入手,或者说我能调 其他 2020-06-03 …
放映幻灯时,为了在屏幕上得到更大的像,那么应采取的措施是()A.幻灯机离屏幕远一些,镜头与幻灯片的 物理 2020-06-16 …
“野味餐馆”的一些叙述,哪一项是正确的()A.野味餐馆中的“野味”往往有一些保护动物,而且大多数是 语文 2020-06-28 …
兆头的头,吆喝的喝在标音调的时候是标第几声?不是读的时候,是在书面上标的时候.我知道汉字标声调规定 其他 2020-07-02 …
下列有关胰岛素和胰蛋白酶的叙述,正确的是()A.两者都是由胰腺中内分泌细胞合成并分泌的B.向两者的 语文 2020-07-03 …
能效标识将能效分为1、2、3、4、5五个等级,等级1表示产品最节能,等级5是市场准入指标.(1)图中 物理 2020-11-25 …