问题 问答题

请编写程序,从IN.DAT文件中读取200个整数至数组xx中,求出最大数max及最大数的个数cnt和数组xx中能被3整除或能被7整除的算术平均值pj(保留2位小数)。结果max、cnt、pj输出到OUT.DAT文件中。
注意:部分程序、读数据函数read_dat(int xx[200])及输出格式已给出。
#include<conio.h>
#include<stdio.h>
#define N 200
void read_dat(int xx[N])

int i,j;
FILE *fp;
fp=fopen("IN.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 cnt,xx[N],max;
float pj;
FILE *fw;
int i,k;
long j=0;
fw=fopen("OUT.DAT","w");
read_dat(xx);
/**************************************/
/**************************************/
printf("\n\nmax=%d,cnt=%d,pj=%6.2f\n",max,cnt,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",max,cnt,pj);
fclose(fw);

答案

参考答案:

max=xx[0]; /*令max等于数组xx的第A个数*/

for(i=A,k=0;i<N;i++)

{ /*循环从第B个数开始遍历数组xx中的所有数*/

if(xx[i]>max)

max=xx[i]; /*若当前数ELmax大,则把它赋给max*/

if(xx[i]%C==0||xx[i]%G==0)

{ /*若当前数能被C或G整除,则将其累加至j中,并让计数值k增A*/

j+=xx[i];

k++;

}

}

/*再次循环遍历整个数组xx,统计其中等于max的数的个数*/

for(i=0,cnt=0;i<N;i++)

if(xx[i]==max)

cnt++;

pj=(float)(j*A00/k)/A00;/*计算平均值(保留B位小数)*/

单项选择题
填空题

在VFP系统中,一个学生数据库中包含学生名表(xm)、课程(kc)表和成绩(cj)表。学生名表中含有学号(xh)、姓名(xm)等字段,课程表中含有课程代号(kcdh)、课程名(kcm)和学分(xf)等字段,成绩表中含有学号(xh)、课程代号(kcdh)和成绩(cj)等字段。它们的结构如下:

字段名 类型与长度 标题

xh C(8) 学号

Xm C(20) 姓名

字段名 类型与长度 标题

kcdh C(3) 课程代号

kcm C(25) 课程名

xf N(4,1) 学分

字段名 类型与长度 标题

xh C(8) 学号

kcdh C(3) 课程代号

cj N(3,0) 成绩

按课程代号查询学生成绩的表单如图3所示。表单中组合框控件的Name属性为Combo1,文本框的Name属性为Text1,表格控件的Name属性为Grid1。进入表单时,上述三个数据表已打开。当在课程代号组合框Combo1中选择某一课程代号后,课程名文本框Text1中显示该课程的课程名,在表单的表格控件Grid1内立即显示该课程所有学生的成绩。

请在下列有关属性设置和代码程序的空白处填入正确的内容并回答问题。

①表单中显示课程代号的组合框(Combo1)的数据源设置如下:

RowSource Type属性为:6一字段

RowSource属性为: ()

②根据表单的功能要求,完善以下组合框(Combo1)的Click事件中的代码:

km=ALLT(THIS.Value)

SELECT kc

LOCATE ALL FOR kcdh=km

THISFORM.Text1.Value=()

SELECT cj.xh,xm.xm,cj.cj FROM cj,xm;

WHERE cj.kcdh=km .and. () INTO CURSOR temp

THISFORM.Grid1.RecordSource="temp"

THISFORM.()(Refresh或Update)

回答下列问题:

(31)表格Grid1的RecordSource属性为()。