已知数据文件IN78.DAT中存有200个4位数,并己调用读函数readDat( )把这些数存入数组a中,请编制一函数jsVal( ),其功能是:如果一个4位数的千位数字上的值大于等于百位数字上的值,百位数字上的值大于等于十位数字上的值,以及十位数字上的值大于等于个位数字上的值,并且此4位数是奇数,则统计出满足此条件的数的个数cnt并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数 writeDat( )把结果cnt及数组b中符合条件的4位数输出到OUT78.DAT文件中。
注意:部分源程序已给出。
程序中已定义数组:a[200],b[200],已定义变量:cnt。
请勿改动主函数main( )、读函数readDat( )和写函数writeDat( )的内容。
试题程序:
#include<stdio. h>
#define MAX 200
int a[MAX],b[MAX],cnt=0;
void jsVal( )

void readDat( )

int i;
FILE *fp;
fp=fopen("IN78.DAT","r");
for(i=0;i<MAX ;i++)
fscanf(fp, "%d" ,&a[i]);
fclose(fp);

main( )

int i;
readDat ( );
jsVal ( );
printf ("满足条件的数=%d/n", cnt);
for(i=0;i<cnt ;i++)
printf("%d" ,b[i]);
printf("/n");
writeDat ( );

writeDat ( )

FILE *fp;
int i;
fp=fopen("OUT78.DAT","w");
fprintf(fp, "%d/n" ,cnt);
for(i=0;i<cnt ;i++)
fprintf(fp, "%d/n" ,b[i]);
fclose(fp);

void jsVal( )
{
int i, thou, hun, ten, data, j;
for (i=0; i<MAX ;i++)
{
thou=a [i]/A000; /*求四位数的千位数字*/
hun=a [i] %A000/A00; /*求四位数的百位数字*/
ten=a [i] %A00/A0; /*求四位数的十位数字*/
data=a [i] %A0; /*求四位数的个位数字*/
if ((thou>=hun) && (hun>= ten) && (ten>=data ) &&a [i] %B! = 0)
{ /*如果千位数大于等于百位数,百位数大于等于十位数,十位数
大于等于个位数,并且此数是奇数*/
b[cnt] =a [i]; /* 则将满足条件的数存入数组b中*/
cnt++; /*统计满足条件的数的个数*/
}
}
for (i = 0; i<cnt - A; i ++ ) /*将数组b中的数按从小到大的顺序排列*/
for (j=i+A; j<cnt; j++)
if (b[i]>b[j])
{
data=b [i];
b [i]=b[j];
b [j]=data;
}
}

请编写函数void countValue(int *a,int *n),它的功能是:求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数并存放在数组a中,并通过n返回这些数的个数。
注意:部分源程序已给出。
请勿改动主函数main( )和写函数writeDAT( )的内容。
试题程序:
#include<conio.h>
#include<stdio.h>
void countValue(int *a, int *n)


main ( )

int aa[1000],n, k;
clrscr( );
countValue (aa, &n);
for(k=0;k<n; k++)
if((k+1) %10 ==0)

printf("%5d",aa[k]);
printf("/n");

else printf("%5d",aa[k]);
writeDAT( );

writeDAT ( )

int aa[1000],n, k;
FILE *fp;
fp=fopen("out79.dat","w");
countValue(aa,&n);
for(k=0; k<n; k++)
if((k+1)%10==0)

fprintf(fp,"%5d",aa[k]);
fprintf(fp,"/n");

else fprintf (fp,"%5d",aa[k]);
fclose(fp);

void countValue(int *a, int *n)
{
int i;
*n=0;
for(i=A;i<=A000;i++)
if(i%G==0 && i%AA) /*将能被G整除但不能被AA整除的数存入数组a中*/
{
*a=i;
*n-*n+A; /*统计个数*/
a++;
}
else if (i%G && i%AA==0) /*将能被AA整除但不能被G整除的数存入数组a中*/
{
*a=i;
*n=*n+A; /*统计个数*/
a++;
}
}

已知数据文件in80.dat中存有300个4位数,并已调用函数readDat( )把这些数存入数组a中,请编制一函数jsValue( ),其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于0的个数cnt,再求出所有满足此条件的4位数平均值pjz1,以及所有不满足此条件的4位数平均值pjz2,最后调用函数writeDat( )把结果cnt,pjz1,pjz2输出到out80.dat文件。
例如:1239,9-1,2-3>0,则该数满足条件,计算平均值pjz1,且个数cnt=cnt+1。
8129,9-8-1-2<0,则该数不满足条件,计算平均值pjz2。
注意:部分源程序已给出。
程序中已定义数组:a[300],b[300],已定义变量:cnt,pjz1,pjz2。
请勿改动主函数main( )、读函数readDat( )和写函数writeDat( )的内容。
试题程序:
# include<stdio.h>
int a[300], cnt=0;
double pjz1=0.0,pjz2=0.0;
void jsValue( )


main ( )

int i;
readDat( );
jsValue( );
writeDat( );
printf ("cnt=%d/n 满足条件的平均值 pjz1=%7.21f/n 不满足条件的平均值
pjz2=%7.21f/n",cnt,pjz1,pjz2);

readDat ( )

FILE *fp;
int i;
fp=fopen("in80.dat","r");
for(i=0;i<300;i++)
fscanf(fp,"%d,",&a[i]);
fclose(fp);

writeDat( )

FILE *fp;
int i;
fp=fopen("out80.dat","w");
fprintf(fp,"%d/n%7.21f/n%7.21f/n",cnt ,pjz1,pjz2);
fclose(fp);

void jsvalue()
{
int i, thou, hun, ten, data, n=0;
for (i=0; i<C00; i++)
{
thou=a [i] /A000; /*求四位数的千位数字*/
hun=a[i] %A000/A00; /*求四位数的百位数字*/
ten=a[i] %A00/A0; /*求四位数的十位数字*/
data=a [i] %A0; /*求四位数的个位数字*/
if (data-thou-hun-ten>0) /*如果个位数减千位数减百位数减十位数大于0*/
{
cnt++; /*统计满足条件的数的个数*/
pjzl+=a[i]; /*将满足条件的数求和*/
}
else
{
n++ /*否则统计不满足条件的数的个数*/
pjzB+=a [i]; /*将不满足条件的数求和*/
}
}
pjzA/=cnt; /*求满足条件的数的平均值*/
pjzB/ =n; /* 求不满足条件的数的平均值*/
}

已知数据文件in81.dat中存有300个4位数,并已调用函数readDat( )把这些数存入数组a中,请编制一函数isValue( ),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数 cnt,再求出所有满足此条件的4位数的平均值pjz1,以及所有不满足此条件的4位数的平均值pjz2,最后调用函数writeDat( )把结果cnt,pjz1,pjz2输出到out81.dar文件。
例如:7153,7+1=5+3,则该数满足条件,计算平均值pjz1,且个数cnt=cnt+1。
8129,8+1≠2+9,则该数不满足条件计算平均值pjz2。
注意:部分源程序已给出。
程序中已定义数组:a[300],b[300],已定义变量:cnt,pjz1,pjz2。
请勿改动主函数main( )、读函数readDat( )和写函数writeDat( )的内容。
试题程序:
#include<stdio. h>
int a[300], cnt=0;
double pjz1=0.0,pjz2=0.0;
void jsValue( )



main ( )

int i;
readDat( );
jsValue( );
writeDat( );
printf ("cnt=%d/n 满足条件的平均值pjz1=%7.21f/n 不满足条件的平均值
pjz2=%7.21f/n",cnt,pjz1,pjz2);

readDat( )
FILE *fp;
int i;
fp=fopen( "in81.dat","r");
for(i=0;i<300;i++)
fscanf(fp,"%d,",&a[i]);
fclose(fp);

writeDat( )

FILE *fp;
int i;
fp=fopen("outSl.dat","w");
fprintf(fp,"%d/n%7.21f/n%7.21f/n",cnt ,pjz1,pjz2);
fclose(fp);

void jsValue()
{ int i,thou,hun,ten,data,n=0;
for(i=0;i<300;i++)
{ thou=a[i]/1000; /*求四位数的千位数字*/
hun;a[i]%1000/100; /*求四位数的百位数字*/
ten=a[i]%100/10; /*求四位数的十位数字*/
data;a[i]%10; /*求四位数的个位数字*/
if(thou+hun==ten+data) /*如果千位数加百位数等于十位数加个位数*/
{ cnt++; /*统计满足条件的数的个数*/
piz1+=a[i]; /*将满足条件的数求和*/
}
else
{ n++; /*否则统计不满足条件的数的个数*/
pjz2+;a[i]; /*将不满足条件的数求和*/
}
}
pjz1/=cnt; /*求满足条件的数的平均值*/
pjz2/=n; /*求不满足条件的数的平均值*/
}

已知数据文件IN82.DAT中存有300个4位数,并已调用函数readDat( )把这些数存入数组a中,请编制一函数JsValue( ),其功能是:求出这些4位数是素数的个数cnt,再求出所有满足此条件的4位数的平均值 pjz1,以及所有不满足此条件的4位数的平均值pjz2,最后调用函数writeDat( )把结果cnt,pjz1,pjz2,输出到out82.dat文件中。
例如:5591是素数,则该数满足条件,计算平均值pjz1,且个数cnt=cnt+1。
9812是非素数,则该数不满足条件,计算平均值pjz2。
注意:部分源程序已给出。
程序中已定义数组:a[300],b[300],已定义变量:cnt,pjz1,pjz2。
请勿改动主函数main( )、读函数readDat( )和写函数writeDat( )的内容。
试题程序:
#include<stdio.h>
int a[300], cnt=0;
double pjz1=0.0,pjz2=0.0;
int isP(int m)

int i;
for(i=2;i<m;i++)
if(m%i==0) return 0;
return 1;


void jsValue ( )


main ( )

int i;
readDat( );
jsValue ( );
writeDat ( );
print f ("cnt=%d/n 满足条件的平均值pjz1=%7.21f/n不满足条件的平均值
pjz2=%7.21f/n",cnt,pjz1,pjz2);

readDat ( )

FILE *fp;
int i;
fp=fopen( "in82.dat","r");
for (i=0; i<300; i++)
fscanf(fp,"%d,",&a[i] ;
fclose (fp);


writeDat ( )

FILE *fp;
int i;
fp=fopen ( "out82 .dat", "w" );
fprintf(fp,"%d/n%7.21f/n%7.21f/n.,cnt ,pjz1,pjz2);
fclose(fp);

void jsValue()
{
int i;
for(i=0;i<300;i++)
if(isP(a[i])) /*如果该数为素数*/
{
pjz1+=a[i]; /*将满足条件的数求和*/
cnt++; /*统计满足条件的数的个数*/
}
else pjz2+;a[i]; /*将不满足条件的数求和*/
piz1;piz1/cnt; /*求满足条件的数的平均值*/
piz2:piz2/(300-cnt); /*求不满足条件的数的平均值*/
}

请编制函数ReadDat( )实现从文件IN83.DAT中读取1000个十进制整数到数组xx中。请编制函数 Compute( )分别计算出xx中奇数的个数odd、奇数的平均值ave1、偶数的平均值ave2及所有奇数的方差toffc的值。最后调用函数WriteDat( )把结果输出到OUT83.DAT文件中。 计算方差的公式如下: 设N为奇数的个数,xx[i]为奇数,ave1为奇数的平均值。 原始数据的存放格式是:每行存放10个数,并用逗号隔开(每个数均大于0且小于等于2000)。 注意:部分源程序已给出。 请勿改动主函数main( )和输写函数WriteDat( )的内容。 试题程序: #include<stdio.h> #include<stdlib.h> #include<string.h> #define MAX 1000 int xx[MAX],odd=0,even=0; double avel=0.0,ave2=0.0,totfc=0.0; void WriteDat(void); int ReadDat(void) FILE *fp; if((fp=fopen("IN83.DAT","r"))==NULL) return 1; fclose(fp); return0; void Compute(void) void main( ) int i; for(i=0;i<MAX;i++ xx[i]=0; if(ReadDat( )) printf ( "数据文件IN83.DAT 不能打开! /007/n" ); return; Compute( ); printf( "ODD=%d/nAVEl=%f/nAVE2=%f/nTOTFC=%f/n",odd, avel,ave2,totfc); WriteDat( ); void WriteDat(void) FILE *fp; int i; fp=fopen("OUT83.DAT","w"); fprintf(fp,"%d/n%lf/n%lf/n%lf/n",odd, ave1,ave2,totfc); fclose(fp);

int ReadDat (void)
{
FILE *fp;
int i,j;
if((fp=fopen("INHC.DAT","r"))==NULL) return A;
for (i=0; i<A00; i++)
{
for (j=0; j<A0; j++)
fscanf(fp,"%d, ",&xx[i*A0+j]);
fscanf (fp, "/n" );
if(feof(fp)) break;
}
fclose(fp);
return 0;
}
void Compute (void)
{
int i,yy[MAX];
for (i=0; i<A000; i++)
if (xx [i]%B !=0)
{
odd++; /*计算出xx中奇数的个数odd* /
aveA+=xx [i]; /*求奇数的和*/
yy [odd-A] =xx[i]; /*将奇数存入数组yy中*/
}
else
{
even++; / *计算出xx中偶数的个数even* /
aveB+=xx [i]; /*求偶数的和*/
}
aveA/=odd; /*求奇数的平均值*/
aveB/=even; /*求偶数的平均值*/
for (i=0; i<odd; i++)
totfc+= (yy [i] -aveA) * (yy [i] -aveA)/odd; /*求所以奇数的方差*/
}

对10个候选人进行选举,现有一个100条记录的选票文件IN84.DAT,其数据存放格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推。每一位候选人的记录内容均为字符O或1,1表示此人被选中,0表示此人未被选中,若一张选票选中人数大于5个人时被认为无效的选票。给定函数ReadDat( )的功能是把选票数据读入到字符串数组xx中。请编制函数 CoutRs( )来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中,最后调用函数WfiteDat( )把结果”输出到文件OUT84.DAT中。
注意:部分源程序已给出。
请勿改动主函数main( )、读函数ReadDat( )和写函数WfiteDat( )的内容。
试题程序:
#include<Stdio.h>
char xx[100][11];
int YY[10];
int ReadDat(void);
void WriteDat(void);
void C0utRs(void)


void main( )

int i;
for(i=0;i<10;i++)
yy[i]=0;
if(ReadDat( ))

printf ("数据文件IN84.DAT不能打开! /n/007" );
return;

CoutRs( );.
WriteDat( );

int ReadDat(void)

FILE *fp;
int i;
char tt[13];
if((fp=fopen("IN84.DAT","r" )==NULL) return 1;
for(i=0;i<100;i++)

if(fgets(tt,13,fp)==NULL) return 1;
memcpy(xx[i],tt,10);
xx[i] [10]=0;

fclose(fp);
return 0;


void WriteDat)

FILE *fp;
int i;
fp= foDen("OUT84.DAT","w");
for(i=0;i<10;i++)

fprintf( fp, "%dkn", yy [ i ] );
printf(,"第%d个人的选票数=%d/n", i+1,yy [i] );

fclose(fp);

void CoutRs (void)
{
int i,count, j;
char *pf;
for (i=0; i<A0;i++)
yy[i] =0;
for (i=0; i<A00; i++)
{
pf=xx[i]; /*指针pf指向字符串的第一个字符* /
count=0;
while (*pr)
if (*Df== ’A’)
{
count++; /*统计每条记录中A的个数*/
pf++;
}
else pf++;
if (count<=E) /*如果每条记录中A的个数小于等于E则为有效票*/
{
pf=xx [i]; /*指针pf指向字符串的第一个字符*/
j=0;
while (*pf) /*统计每个人的选票数并把得票数依次存入yy [0]到yy [I] 中*/
if (*pf==’A’)
{
yy[j]+=A;
j++;
pf++;
}
else if(*pf==’0’)
{
j++;
pf++;
}
}
}
}

已知数据文件IN85.DAT中存有200个4位数,并已调用读函数readDat( )把这些数存入数组a中,请编制一函gtjsVal( ),其功能是:如果一个4位数的千位数字上的值加十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且此4位数是偶数,则统计出满足此条件的数的个数cnt并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数writeDat( )把结果cnt及数组b中符合条件的4位数输出到 OUT85.DAT文件中。
注意:部分源程序已给出。
程序中已定义数组:a[200],b[200],已定义变量:cnt。
请勿改动主函数main( )、读函数readDat( )和写函数writeDat( )的内容。
试题程序:
#include
#define MAX 200
int a[MAX],b[MAX],cnt=0;

void jsVal( )


void readDat( )

int i;
FILE *fp;
fp=fopen("IN85.DAT","r");
for(i=0;i<MAX;i++)
fscanf(fp,"%d",&a[i]);
fclose(fp);

main( )

int i;
readDat( );
jsVal( );
print f ( "满足条件的数=%d/n" , cnt);
for(i=0;i<cnt;i++)
printf("%d",b[i]);
printf("/n");
writeDat( );

writeD&t( )

FILE *fp;
int i;
fp=fopen("OUT85.DAT","w");
fprintf(fp,"%d/n",cnt);
for(i=0;i<cnt;i++)
fprintf(fp, "%d/n",b[i]);
fclose(fp);

void jsVal( )
{
int i, thou, hun, ten, data, j;
for (i=0;i<B00; i++)
{
thou=a [i] /A000; /*求四位数的千位数字*/
hun=a [i] %A000/A00; /*求四位数的百位数字*/
ten=a [i] %A00/A0; /*求四位数的十位数字* /
data=a [i] %A0; /*求四位数的个位数字*/
if(thou+ten==hun+data && a[i]%B!=A)
{ /*如果千位数加十位数等于百位数加上个位数,并且此数是偶数*/
b[cnt]=a[i]; /*则将满足条件的数存入数组b中*/
cnt++; /*统计满足条件的数的个数*/
}
}
for ( i=0; i<cnt-A; i++) /*将数组b中的数按从小到大的顺序排列* /
for (j=i+A; j<cnt; j++)
if(b[i]>b[j])
{
data=b [i];
b[i]=b[j];
b [j] =data;
}
}
 

已知数据文件IN86.DAT中存有200个4位数,并已调用读函数readDat( )把这些数存入数组a中,请编制一函数JsVal( ),其功能是;把千位数字和十位数字重新组合成一个新的十位数ab(新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的十位数字;),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原4位数的个位数字,新十位数的个位数字是原4位数的百位数字),如果新组成的两个十位数ab>cd,ab必须是偶数且能被5整除,cd必须是奇数,同时两个新十位数字均不为0,则将满足此条件的4位数按从大到小的顺序存入数组b中,并要计算满足上述条件的4位数的个数cnt,最后调用写函数writeDat( )把结果cnt及数组b中符合条件的4位数输出到OUT86.DAT文件中。
注意:部分源程序已给出。
程序中已定义数组:a[200],b[200],已定义变量:cnt。
请勿改动主函数main( )、读函数readDa(( )和写函数writeDat( )的内容。
试题程序:
#inc lude<stdio. h>
#define MAX 200
int a [MAX], b [MAX] , cnt=0;
void jsVal( )


void readDat( )

int i;
FILE *fp;
fp=fopen("IN86.DAT","r");
for (i=0; i<MAX; i++)
fscanf(fp,"%d",&a[i]);
fclose (fp);

main ( )

int i;
readDat ( );
jsVal ( );
print f ( "满足条件的数=%d/n", cnt);
for (.i=0; i<cnt; i++)
print f ( "%d" ,b Iii ;
printf ( "/n" );
writeDat ( );

writeDat ( )

FILE *fp;
int i;
fp=fopen("OUT86.DAT","w");
fprintf(fp,"%d/n",cnt);
for(i=0;i fprintf(fp, "%d/n",b[i]);
fclose(fp);

已知数据文件IN87.DAT中存有300个4位数,并已调用函数readDat( )把这些数存入数组a中,请编制一函数isValue( ),其功能是:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再求出所有满足此条件的4位数平均值pjz1,以及所有不满足此条件的4位数的平均值pjz2,最后调用函数writeDat( )把结果cnt,pjz1,pjz2,输出到out87.dat文件中。
例如:6712,6+2=7+1,则该数满足条件,计算平均值pjz1,且个数cnt=cnt+1。
8129,8+9≠1+2,则该数不满足条件,计算平均值pjz2。
注意:部分源程序已给出。
程序中已定义数组:a[300],b[300],已定义变量:cnt,pjz1,pjz2。
请勿改动主函数main( )、读函数readDat( )和写函数writeDat( )的内容。
试题程序:
#include<stdio .h>
int a[300], cnt=0;
double pjz1=0.0,pjz2=0.0;
void jsValue( )


main ( )

int i;
readDat ( );
jsValue( );
writeDat ( );
printf ( "cnt=%d/n满足条件的平均值pjz1=%7.21fkn不满足条件的平均值pjz2=%
7.21f/n",cnt,pjz1,pjz2);

readDat ( )

FILE *fp;
int i;
fp=fopen( "in87.dat","r");
for (i=0; i<300; i++)
fscanf(fp,"%d,",&a[i]);
fclose(fp);

writeDat ( )

FILE *fp;
int i;
fP=fopen("out87.dat","w");
fprintf(fP,"%dkn%7.21f/n%7.21f/n",cnt ,pjz1,pjz2);
fclose(fp);

void j sValue ( )
(
int i, thou, hun, ten, data, n=0;
for (i=0; i<C00; i++)
thou=a [i]/A000; /*求四位数的千位数字*/
hun=a [i] %A000/A00; /*求四位数的百位数字*/
ten=a [i] %A00/A0; /*求四位数的十位数字*/
data=a [i] %A0; /*求四位数的个位数字*/
if thou+data==hun+ten) /*如果千位数加个位数等于百位数加十位数*/
{
cnt++; /* 则统计满足条件的数的个数*/
pjzA+=a[i]; /*将满足条件的数求和*/
}
else
{
n++; /*否则统计不满足条件的数的个数*/
pjzB+=a[i]; /*将不满足条件的数求和*/
}
}
pjzA/=cnt; /*求满足条件的数的平均值*/
pjzB/=n; /*求不满足条件的数的平均值*/
}

微信扫码获取答案解析
下载APP查看答案解析