lign="left">out.dat 文件内容应当为:
20
4002
4102
5111
5400
6014
6302
7050
7105
7113
8101
8130
8203
8221
8303
8700
9013
9016
9052
9053
9800
之五
要求:
求出千位数上的数加百位数上的数等于十位数上的数加个
位数上的数的个数cnt, 再把所有满足此条件的四位数依次存入
数组b中, 然后对数组b的四位数按从大到小的顺序进行排序。
out.dat 文件内容应当为:
22
7795
7429
7328
7153
6978
6767
6556
6226
5591
5555
5427
4509
4013
3672
3663
3205
3131
2855
2763
2543
2507
1625
求满足条件的数的个数、平均值……
求满足条件的数的个数、平均值及不满足条件的数的平均
值等,此类也是五题。本处仅给出一个全题,其余题只给出不同
之处。
code:
/*
已知数据文件IN.DAT中存有300个四位数, 并已调用读函数
readDat()把这些数存入数组a中, 请编制一函数jsvalue(),其功
能是: 求出千位数上的数减百位数上的数减十位数上的数减个位
数上的数大于零的个数cnt, 再求出所有满足此条件的四位数平
均值pjz1, 以及所有不满足此条件的四位数平均值pjz2。最后
main()函数调用写函数writeDat()把结果cnt,pjz1,pjz2输出到
OUT.DAT文件。
例如: 9123, 9-1-2-3>0, 则该数满足条件计算平均值pjz1,
且个数cnt=cnt+1。
9812, 9-8-1-2<0, 则该数不满足条件计算平均值pjz2。
注意: 部分源程序存在文件PROG1.C文件中。
程序中已定义数组: a[300], 已定义变量: cnt,pjz1,pjz2
请勿改动数据文件IN.DAT中的任何数据、主函数main()、读
函数readDat()和写函数writeDat()的内容。
*/
#include
int a[300], cnt=0 ;
double pjz1=0.0, pjz2=0.0 ;
jsvalue()
{/**/
int i;
for(i=0; i < 300; i++)
if(a[i]/1000-a[i]/100%10-a[i]/10%10-a[i]%10>0)
{ cnt++; pjz1+=a[i]; }
else pjz2+=a[i];
if(cnt) pjz1/=cnt;
if(cnt<300) pjz2/=300-cnt;
/**/
}
main()
{
int i ;
readDat() ;
jsvalue() ;
writeDat() ;
printf("cnt=%dn满足条件的平均值pzj1=%7.2lfn不满足条件的平均值pzj2=%7.2lfn", cnt,pjz1,pjz2);
}
readDat()
{
FILE *fp ;
int i ;
fp = fopen("in.dat","r") ;
for(i = 0 ; i < 300 ; i++) fscanf(fp, "%d,", &a[i]) ;
fclose(fp) ;
}
writeDat()
{
FILE *fp ;
int i ;
fp = fopen("out.dat","w") ;
fprintf(fp, "%dn%7.2lfn%7.2lfn", cnt, pjz1, pjz2) ;
fclose(fp) ;
}
in.dat 与前面给出的完全相同,out.dat 内容应当如下:
20
7389.55
5524.03
满足条件数的平均数……四题之说明
之二
要求:
求出千位数上的数加百位数上的数等于十位数上的数加个
位数上的数的个数cnt, 再求出所有满足此条件的四位数平均值
pjz1, 以及所有不满足此条件的四位数平均值pjz2。
正确程序生成的 out.dat 文件内容应当如下:
22
4876.86
5709.46
之三
要求:
求出个位数上的数减千位数上的数减百位数上的数减十位
数上的数大于零的个数cnt, 再求出所有满足此条件的四位数平
均值pjz1, 以及所有不满足此条件的四位数平均值pjz2。
正确程序生成的 out.dat 文件内容应当如下:
12
2926.08
5761.83
之四
要求:
求出所有这些四位数是素数的个数cnt, 再求出所有满足
此条件的四位数平均值pjz1, 以及所有不满足此条件的四位数平
均值pjz2。
正确程序生成的 out.dat 文件内容应当如下:
30
5782.87
5633.46
之五
要求:
求出千位数上的数加个位数上的数等于百位数上的数加十
位数上的数的个数cnt, 再求出所有满足此条件的四位数平均值
pjz1, 以及所有不满足此条件的四位数平均值pjz2。
正确程序生成的 out.dat 文件内容应当如下:
18
6681.22
5582.48
200个四位数(此类共10题)
此部分题与300个数的题有相似之处。
之一
code:
/*
已知数据文件IN.DAT中存有200个四位数, 并已调用读函数
readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其
功能是: 把千位数字和十位数字重新组成一个新的十位数ab(新
十位数的十位数字是原四位数的千位数字,新十位数的个位数字
是原四位数的十位数字), 以及把个位数字和百位数字组成另一
个新的十位数cd (新十位数的十位数字是原四位数的个位数字,
新十位数的个位数字是原四位数的百位数字), 如果新组成的两
个十位数ab>cd, ab必须是偶数且能被5整除, cd必须是奇数,同
时两个新数的十位数字均不为零,则将满足此条件的四位数按从
大到小的顺序存入数组b中, 并要计算满足上述条件的四位数的
个数cnt。最后main()函数调用写函数writeDat( )把结果cnt以
及数组b中符合条件的四位数输出到OUT.DAT文件中。
注意: 部分源程序存在文件PROG1.C文件中。
程序中已定义数组: a[200], b[200], 已定义变量: cnt
请勿改动数据文件IN.DAT中的任何数据、主函数main()、读
函数readDat()和写函数writeDat()的内容。
*/
#include <stdio.h>
#define MAX 200
int a[MAX], b[MAX], cnt = 0 ;
void jsVal()
{/**/
int i,j,k,A,B,C,D;
for(i=0; i < MAX; i++)
{ A=a[i]/1000; B=a[i]/10%10; C=a[i]%10; D=a[i]/100%10;
if(A&&C&&(B==0)&&(D%2)&&(10*A>10*C+D))
b[cnt++]=a[i];
}
for(i=0; i < cnt-1; i++)
{ k=i;
for(j=i+1; j < cnt; j++)
if(b[k] < b[j]) k=j;
if(k!=i) {A=b[k]; b[k]=b[i]; b[i]=A;}
}
/**/
}
void readDat()
{
int i ;
FILE *fp ;
fp = fopen("in.dat", "r") ;
for(i = 0 ; i < MAX ; i++) fscanf(fp, "%d", &a[i]) ;
fclose(fp) ;
}
void main()
{
int i ;
readDat() ;
jsVal() ;
printf("满足条件的数=%dn", cnt) ;
for(i = 0 ; i < cnt ; i++) printf("%d ", b[i]) ;
printf("n") ;
writeDat() ;
}
writeDat()
{
FILE *fp ;
int i ;
fp = fopen("out.dat", "w") ;
fprintf(fp, "%dn", cnt) ;
for(i = 0 ; i < cnt ; i++) fprintf(fp, "%dn", b[i]) ;
fclose(fp) ;
200个四位数题之其余九题说明
之二
要求:
把千位数字和十位数字重新组成一个新的十位数(新十
位数的十位数字是原四位数的千位数字,新十位数的个位数字是
原四位数的十位数字), 以及把个位数字和百位数字组成另一个
新的十位数(新十位数的十位数字是原四位数的个位数字, 新十
位数的个位数字是原四位数的百位数字), 如果新组成的两个十
位数均是素数且新数的十位数字均不为零,则将满足此条件的四
位数按从大到小的顺序存入数组b中, 并要计算满足上述条件的
四位数的个数cnt。
out.dat 的内容应当为:
10
9971
8398
7711
6375
4719
4173
2736
2398
2397
1997
之三
要求:
把个位数字和千位数字重新组成一个新的十位数(新十
位数的十位数字是原四位数的个位数字,新十位数的个位数字是
原四位数的千位数字), 以及把百位数字和十位数字组成另一个
新的十位数(新十位数的十位数字是原四位数的百位数字, 新十
位数的个位数字是原四位数的十位数字), 如果新组成的两个十
位数必须是一个奇数,另一个为偶数并且两个十位数中至少有一
个数能被17整除,同时两个新数的十位数字均不为零, 则将满足
此条件的四位数按从大到小的顺序存入数组b中, 并要计算满足
上述条件的四位数的个数cnt。
out.dat 的内容应当为:
7
8656
8174
7781
7683
4313
4173
2513
之四
要求:
)把这些数存入数组a中,请考生编制一函数jsVal(),其
功能是: 把千位数字和十位数字重新组成一个新的十位数ab(新
十位数的十位数字是原四位数的千位数字,新十位数的个位数字
是原四位数的十位数字), 以及把个位数字和百位数字组成另一
个新的十位数cd (新十位数的十位数字是原四位数的个位数字,
新十位数的个位数字是原四位数的百位数字), 如果新组成的两
个十位数ab-cd>=10且ab-cd<=20且两个数均是偶数,同时两个新
数的十位数字均不为零,则将满足此条件的四位数按从大到小的
顺序存入数组b中, 并要计算满足上述条件的四位数的个数cnt。
out.dat 的内容应当为:
5
9068
5224
5024
3821
2281
之五
要求:
如果四位数各位上的数字均是0或2或4或6或8, 则统计
出满足此条件的个数cnt, 并把这些四位数按从大到小的顺序存
入数组b中。
out.dat 的内容应当为:
11
8448
6820
4488
4060
2888
2884
2686
2624
2484
2420
2042
之六
要求:
把千位数字和个位数字重新组成一个新的十位数(新十
位数的十位数字是原四位数的千位数字,新十位数的个位数字是
原四位数的个位数字), 以及把百位数字和十位数字组成另一个
新的十位数(新十位数的十位数字是原四位数的百位数字, 新十
位数的个位数字是原四位数的十位数字), 如果新组成的两个十
位数均是奇数并且两个十位数中至少有一个数能被5整除, 同时
两个新数的十位数字均不为零,则将满足此条件的四位数按从大
到小的顺序存入数组b中, 并要计算满足上述条件的四位数的个
数cnt。
out.dat 的内容应当为:
10
9851
8275
6375
5755
5359
4951
4595
4395
3575
3135
之七
要求:
把个位数字和千位数字重新组成一个新的十位数(新十
位数的十位数字是原四位数的个位数字,新十位数的个位数字是
原四位数的千位数字), 以及把百位数字和十位数字组成另一个
新的十位数(新十位数的十位数字是原四位数的百位数字, 新十
位数的个位数字是原四位数的十位数字), 如果新组成的两个十
位数均是偶数并且两个十位数中至少有一个数能被9整除, 同时
两个新数的十位数字均不为零,则将满足此条件的四位数按从大
到小的顺序存入数组b中, 并要计算满足上述条件的四位数的个
数cnt。
out.dat 的内容应当为:
13
8761
8724