C语言每日一练——第二题

一、题目要求

已知数据文件in.dat中存有300个四位数,并调用读函数readDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出所有这些四位数是素数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及所有不满足此条件的四位数平均数pjz2。最后main()函数调用写函数把结果cnt,pjz1,pjz2,输出到out.dat文件中

二、in.dat文件内容

7704,9774,3213,5845,7703,2902,1925,2584,7429,6646
3793,8640,4364,3032,9190,2498,6394,3796,2434,6791
5552,9052,9159,8245,7965,1071,8157,6526,2164,6767
4853,1174,4564,5427,7279,9832,3640,7897,3211,4788
6556,4781,2168,6014,7795,6536,9461,4287,8029,8303
2609,8795,8386,3911,8130,7268,1906,7345,3678,5823
8074,6963,7874,6066,4509,8976,1740,2026,7047,4730
9538,2193,8473,6729,4207,5095,4623,4933,6226,8098
1277,5480,1906,4109,9047,1986,5882,8444,1029,6515
2612,7297,6934,8495,7731,1625,1305,7953,7385,3620
7206,4549,5736,3131,6875,6917,6087,4640,5314,8646
6077,5677,7345,4143,1513,8101,2038,9879,3946,6643
7763,6108,4788,9055,8186,5416,5699,6733,5416,2320
2430,4772,9962,9676,1319,7767,7369,1411,3663,2876
2245,4810,5400,6045,1504,4178,7264,2763,7050,1490
8790,4014,9280,7105,7113,3600,8221,8203,6127,7313
1850,5983,9689,4102,1036,6375,5064,7188,9887,9800
6871,4856,2432,9562,3426,9013,5104,4724,4785,9953
5939,6668,8700,4730,9737,4055,6544,9763,1034,2855
8078,5111,4817,4593,9876,1189,2507,1197,1782,4347
7961,8612,9699,6108,4221,2489,8895,3672,8226,8724
6302,7624,7506,8568,4013,2785,3528,6712,1155,3150
1388,5803,6328,6841,5825,7802,2022,6290,1775,3652
9699,6573,8082,9016,4369,4002,3205,2688,8414,7572
2830,1231,3888,5137,5555,8976,2543,6542,8986,5921
5346,1368,2566,3304,4089,3880,1244,6650,6523,6123
1243,7488,5262,9992,3115,9270,6989,1595,1283,2645
4075,9471,7983,9093,7642,8847,5686,4168,8550,8941
5188,2290,3219,2853,6978,9053,5843,7153,6382,6289
3022,5591,9981,7296,2421,7328,9575,7586,1190,8504

三、程序代码

#include <stdio.h>
int a[300], cnt=0;
double pjz1=0.0, pjz2=0.0;  

//从in.dat中读取文件内容
void readDat()
{
  FILE *fp;
  int i;
  fp = fopen("in.dat","r");
  for(i = 0; i < 300; i++)
  {
    fscanf(fp, "%d,", &a[i]);
  }
  fclose(fp);
}

//把运行结果输出到out.dat文件中
void writeDat()
{
  FILE *fp;
  fp = fopen("out.dat","w");
  fprintf(fp, "%d\n%7.2lf\n%7.2lf\n", cnt, pjz1, pjz2);
  fclose(fp);
}

//判断是否是素数
int isP(int m)
{
  int i;
  for(i = 2; i < m; i++)
  {
      if(m % i == 0)
      {
          return 0;
      }
  }
  return 1;
}
void jsValue()
{
    int i=0,flag;
    int j=0,k=0;
    int sList[300];        //存放素数的数组
    int nsList[300];    //存放非素数的数组
    for(i=0;i<300;i++)
    {
        flag=isP(a[i]);
        if(flag)
        {
            cnt++;
            sList[j++]=a[i];
        }
        else
        {
            nsList[k++]=a[i];
        }
    }
    for(i=0;i<j;i++)
    {
        pjz1+=sList[i];

    }
    for(i=0;i<k;i++)
    {
        pjz2+=nsList[i];
    }
    pjz1/=j;
    pjz2/=k;

}
main()
{
  readDat();
  jsValue();
  writeDat();
  printf("cnt=%d\n满足条件的平均值pzj1=%7.2lf\n不满足条件的平均值pzj2=%7.2lf\n", cnt,pjz1,pjz2);
}

四、程序运行结果

原文地址:https://www.cnblogs.com/wutao666/p/9589119.html

时间: 2024-10-06 05:53:14

C语言每日一练——第二题的相关文章

C语言每日一练——第一题

一.程序功能 程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx.并把in.dat文件的内容输入到程序,并把输出结果输出道out.dat文件夹中例如:若输入17,5 则应该输入:19,23,29,31,37 1.in.dat文件内容 17 5 101 7 321 5 32 4 55 6 76 6 99 4 781 5 22 6 66 3 2.程序实现 #include <stdio.h> //判断m是否为素数 /*int isP(int m) { int i; for(i = 2; i

C语言每日一练——第四题

一.题目要求 已知数据文件in.dat中有300个四位数,并调用readDat()函数把这些数存储数组a中,编写函数jsValue(),其功能是:求出所有这些四位数是素数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的按从小到大顺序排列,最后编写函数wirteDat()把数组b中的数输出到out.dat文件中. 二.in.dat文件内容 7704,9774,3213,5845,7703,2902,1925,2584,7429,6646 3793,8640,4364,303

golang每日一练 第二天

 包的导入语法 在写Go代码的时候经常用到import这个命令用来导入包文件,看到的方式参考如下: import(       "fmt"     ) 然后在代码里面可以通过如下的方式调用 fmt.Println("hello world") 上面这个fmt是Go语言的标准库,他其实是去GOROOT下去加载该模块,当然Go的import还支持如下两种方式来加载自己写的模块: 相对路径     import   "./model"  //当前文件同

C语言每日小练(四)——勇者斗恶龙

勇者斗恶龙 你的王国里有一条n个头的恶龙,你希望雇佣一些骑士把它杀死(砍掉全部的头). 村里有m个骑士能够雇佣.一个能力值为x的骑士能够砍掉恶龙一个致敬不超过x的头,且须要支付x个金币. 怎样雇佣骑士才干砍掉恶龙的全部头.且须要支付的金币最少?注意,一个骑士仅仅能砍一个头(且不能被雇佣两次). 输入格式:输入包括多组数据. 每组数据的第一行为正整数n和m(1<=n,m<=20000):下面n行每行为一个整数.即恶龙每一个头的直径.下面m行每行为一个整数,即每一个骑士的能力. 输入结束标志为n=

C语言每日一题之No.1

鉴于在学校弱弱的接触过C,基本上很少编程,C语言基础太薄弱.刚好目前从事的是软件编程,难度可想而知.严重影响工作效率,已无法再拖下去了.为此,痛下决心恶补C语言.此前只停留在看书,光看好像也记不住,C这东西毕竟是练出来的,所以从今天开始,每日一道C语言题目,从题目入手来补知识漏洞.题目比较基础,如不堪入目,还请见谅. 题目:输入三个整数,输出最大的数 思路:定义三个变量用来存储输入的整数 比较三个变量的大小,找到最大的数 定义一个变量存储来存储最大的数 程序: 1 #include <stdio

C语言每日一题之No.8

正式面对自己第二天,突然一种强烈的要放弃的冲动,在害怕什么?害怕很难赶上步伐?害怕这样坚持到底是对还是错?估计是今天那个来了,所以身体激素有变化导致情绪起伏比较大比较神经质吧(☆_☆)~矮油,女人每个月总有这么几天的....晚上闺蜜打电话来,共同探讨了作为单身女性身在一线城市的生活,互相安慰互相关心,心里一下子就温暖了许多.总在这个时候,你会觉得,这个冷静的城市里你不是一个人在行走,还有另一颗心牵挂着你.嘿嘿,回来该学习还学习.现在不管坚持是对的还是错的,你都踏上了研发这条不归路,那就一条黑走到

C语言每日一题之No.9

再做决定之前,我还是做好自己该做的.我不希望几年后会悔恨自己为什么在最该努力的时候不愿意吃苦.尊敬的女王陛下,请接题: 一.题目:有已按升序排好顺序的字符串a,编写程序将字符串s中的每个字符按升序的规则插到字符串a中,最后输出"abdefghjkmnptwy". 二.思路:既然是已经排好序的,就用二分法查找的思想 将字符串s中的每个字符依次作为key拿来和字符串a做比较并且插入 三.程序 1 #include <stdio.h> 2 #include <string.

C语言每日一题之No.3

题目:从键盘输入一个字符串,按照字符顺序从小到大进行排序,并要求删除重复字符.如输入"ad2f3adjfeainzzzv",则输出"23adefijnvz" 思路:先定义一个字符数组用来存储字符串 讲数字转化成字符(ASCII) 排序 进行遍历,删除重复字符 程序: C语言每日一题之No.3,布布扣,bubuko.com

C语言每日一题之No.2

题目:已知三个整型数8,12,6,按公式s=a+b*c计算,并显示结果 思路:定义三个整型变量a,b,c 定义一个变量s用来保存运算结果 输出 程序: 1 #include <stdio.h> 2 3 void main() 4 { 5 int a = 8; 6 int b = 12; 7 int c = 6; 8 int s = 0; 9 10 s = b*c ; //s用来保存b*c 11 s += a; //s=a+b*c 12 printf("a+b*c=%d\n"