C语言编程题目(三)

题目:给数据文件IN.DAT中写入300个4位随机数。调用函数readDat()把这些随机数存入数组a中。编写函数jsValue(),其功能是求出千位数减去百位数减去个位数大于0的数的个数cnt,再求出所有满足条件的4位数的平均值pjz1,以及不满足条件的4位数的平均值pjz2.最后调用writeDat()把结果输出到OUT.DAT文件中。

分析:

(1)先产生300个大于1000小于9999的随机数,并应用fprintf()函数将其输出到文件IN.DAT中

(2)编写函数readDat()读取文件IN.DAT,在读取的过程中需要用到库函数fscanf(),将读取的值存入全局变量中a[MAXLINE]中(也可以将是静态的局部变量 static a[]);

(3)编写jsValue判断并找出满足条件的数。之前组声明数组为全局变量,因此不用给函数写参数;

(4)编写函数writeDat()将相应的值写入OUT.DAT中。

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<time.h>
 4 #define MAXNUM 9999
 5 #define MINNUM 1000
 6 #define MAXLINE 300
 7 
 8 void getRand();
 9 void readDat();
10 void jsValue();
11 int Sum(int n,int a[]);
12 void writeDat();
13 
14 double pjz1=0.0,pjz2=0.0;
15 int a[MAXLINE],cnt = 0;
16 
17 main()
18 {
19 printf("Hellow FJK\n");
20 getRand();
21 readDat();
22 jsValue();
23 writeDat();
24 }
25 void getRand()
26 {
27     int i;
28     FILE *fp;
29 
30     fp=fopen("C:\\Users\\Administrator\\Desktop\\The C Programming Language\\EX5\\IN.DAT","w+");
31     srand((unsigned int )time(NULL));
32     for(i=0;i<MAXLINE;i++)
33         fprintf(fp,"%d\n",rand()%(MAXNUM-MINNUM+1)+MINNUM);
34     fclose(fp);
35 }
36 
37 void readDat()
38 {
39 int  i;
40 FILE *fp;
41 
42 fp=fopen("C:\\Users\\Administrator\\Desktop\\The C Programming Language\\EX5\\IN.DAT","r");
43 for(i=0;i<MAXLINE;i++)
44     fscanf(fp,"%d",&a[i]);
45 fclose(fp);
46 }
47 
48 void jsValue()
49 {
50 int i;
51 int ge_wei,shi_wei,bai_wei,qian_wei;
52 int b[MAXLINE];
53 
54 for(i=0;i<MAXLINE;i++)
55 {
56 ge_wei=a[i]%10;
57 shi_wei=a[i]%100/10;
58 bai_wei=a[i]%1000/100;
59 qian_wei=a[i]/1000;
60 if((qian_wei-ge_wei-shi_wei-bai_wei)>0)
61    {
62        cnt++;
63        b[i]=a[i];
64     }
65 }
66 pjz1=Sum(cnt,b)/cnt;
67 pjz2=(Sum(MAXLINE,a)-Sum(cnt,b))/(MAXLINE-cnt);
68 }
69 
70 int Sum(int n,int a[])
71 {
72 int sum=0,i;
73 for(i=0;i<n;i++)
74 sum+=a[i];
75 return sum;
76 }
77 
78 void writeDat()
79 {
80 FILE *fp;
81 
82 fp=fopen("C:\\Users\\Administrator\\Desktop\\The C Programming Language\\EX5\\OUT.DAT","w+");
83 fprintf(fp,"%d\n%f \n%f \n",cnt,pjz1,pjz2);
84 fclose(fp);
85 }

 

posted @ 2016-05-26 10:15  山之石  阅读(263)  评论(0编辑  收藏  举报