请编制程序,要求:将文件IN94.DAT中的200个整数读入数组xx中,求出数组xx中奇数的个数cnt1和偶数的个数cnt2,以及数组xx下标为奇数的元素值的算术平均值pj(保留两位小数),结果cnt1,cnt2,pj输出到OUT94.DAT中。
部分程序、读函数read_dat(int xx[200))及输出格式已给出。
试题程序:
#include<conio:h>
#include<stdio.h>
#define N 200 void read_dar (int xx [N] )
int i,j;
FILE *fp;
fp=fopen("IN94.DAT","r");
for(i=0;i<20;i++)
for(j=0;j<10;j++)
fscanf(fp,"%d,#,&xx[i*10+j]);
printf("%d",xx[i*10+j]);
printf("\n");
fclose(fp);
void main()
int cnt1,cnt2,xx[N];
float pj;
FILE *fw;
clrscr();
fw=fopen("out94.dat","w");
read_dat(xx);printf("\n\ncnt1=%d, cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj);
fclose(fw);
参考答案:
void SortCharD()
{
int i,j,k,strA;
char ch;
for (i=O;i<maxline;i++)
{
strA=strlen(xx[i]); /*求各行的长度*/
for(j=0;j<strA-A;j++) /*对字符按从大到小的顺序进行排序*/
for(k=j+A;k<strA;k++)
if (xx[i][j]<xx[i][k])
{
ch=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=ch;
}
}
}
解析:
本题考查的知识点如下:
(1)运算符“%”的使用。
(2)强制类型转换和小数位数的保留。
一个数除以2取余所得的数为1,则它是奇数,否则是偶数,取余使用运算符“%”。在本题中,要求算术平均值保留两位小数。使用的方法是:将和乘以100除以个数强制类型转换后再除以100。为了保证和有效,我们定义了一个长整型变量来记录和。因为个数也为整型,运算符“/”在这里的含义是整除,而我们要保留小数,所以要使用强制类型转换将和乘以100的结果转换为浮点类型,这样就可以实现保留两位小数。使用循环对所有数据进行访问。