数字操作.docx
《数字操作.docx》由会员分享,可在线阅读,更多相关《数字操作.docx(26页珍藏版)》请在冰豆网上搜索。
数字操作
★题目2已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:
如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b中。
最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
注意:
部分源程序存在文件prog1.c中。
程序中已定义数组:
a[200],b[200],已定义变量:
cnt请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
voidjsVal()
{inti,j,qw,bw,sw,gw;
for(i=0;i{qw=a[i]/1000;bw=a[i]/100%10;
sw=a[i]%100/10;gw=a[i]%10;
if(qw&&qw%2==0&&bw%2==0&&sw%2==0&&gw%2==0)b[cnt++]=a[i];
}
for(i=0;ifor(j=i+1;jif(b[i]
}
★题目6:
在文件in.dat中有200个正整数,且每个数均在1000至9999之间。
函数ReadDat()读取这200个数存放到数组aa中。
请编制函数jsSort(),其函数的功能是:
要求按每个数的后三位的大小进行降序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行升序排列。
最后调用函数WriteDat()把结果bb输出到文件out.dat中。
例:
处理前90125099601270258088
处理后50998088702560129012
注意:
部分源程序已给出。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
voidjsSort()
{
inti,j,data;
for(i=0;i<199;i++)
for(j=i+1;j<200;j++)
if(aa[i]%1000aa[j])
{data=aa[i];aa[i]=aa[j];aa[j]=data;}
for(i=0;i<10;i++)
bb[i]=aa[i];
}
★题目5在文件in.dat中有200个正整数,且每个数均在1000至9999之间。
函数ReadDat()读取这200个数存放到数组aa中。
请编制函数jsSort(),其函数的功能是:
要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组bb中,如果后三位的数值相等,则按原先的数值进行降序排列。
最后调用函数WriteDat()把结果bb输出到文件out.dat中。
例:
处理前60125099901270258088
处理后90126012702580885099
部分源程序存在文件prog1.c中。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
voidjsSort()
{
inti,j,data;
for(i=0;i<199;i++)
for(j=i+1;j<200;j++)
if(aa[i]%1000>aa[j]%1000||aa[i]%1000==aa[j]%1000&&aa[i]{data=aa[i];aa[i]=aa[j];aa[j]=data;}
for(i=0;i<10;i++)
bb[i]=aa[i];
}
★题目15已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:
若一个四位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,以及十位数字上的值小于等于个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
注意:
部分源程序存在文件prog1.c中。
程序中已定义数组:
a[200],b[200],已定义变量:
cnt
请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
voidjsVal()/*标准答案*/
{intI,j;
inta1,a2,a3,a4,k;
for(I=0;I{a1=a[I]/1000;a2=a[I]%1000/100;
a3=a[I]%100/10;a4=a[I]%10;
if((a1<=a2)&&(a2<=a3)&&(a3<=a4)&&(a[I]%2==0))
{b[cnt]=a[I];
cnt++;}
}
for(I=0;Ifor(j=I+1;jif(b[I]>b[j])
{k=b[I];b[I]=b[j];b[j]=k;}
}
★题目25下列程序的功能是:
寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数。
所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。
满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。
请编制函数intsvalue(longm)实现此功能,如果是回文数,则函数返回1,反之则返回0。
最后把结果输出到文件out.dat中。
intjsValue(longn)
{longt1=0,t2=m;
while(m>0)
{t1=t1*10+m%10;
m=m/10;
}
if(t1==t2)
return1;
elsereturn0;
}
输出结果为:
m=11,m*m=121,m*m*m=1331
m=101,m*m=10201,m*m*m=1030301
m=111,m*m=12321,m*m*m=1367631
★题目27已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:
求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把结果输出到out.dat文件。
例如:
9123,9-1-2-3>0,则该数满足条件存入数组b中,且个数cnt=cnt+1。
9812,9-8-1-2>0,则该数不满足条件忽略。
部分源程序存在文件prog1.c中。
程序中已定义数组:
a[300],b[300],已定义变量:
cnt
请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。
jsValue()
{inti,j,qw,bw,sw,gw;
for(i=0;i<300;i++)
{qw=a[i]/1000;bw=a[i]%1000/100;
sw=a[i]%100/10;gw=a[i]%10;
if(qw-bw-sw-gw>0){b[cnt]=a[i];cnt++;}
}
for(i=0;ifor(j=i+1;jif(b[i]>b[j]){qw=b[i];b[i]=b[j];b[j]=qw;}
}
★题目28已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:
把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab-cd>=0且ab-cd<=10且两个数均是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。
最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
注意:
部分源程序存在文件prog1.c中。
程序中已定义数组:
a[200],b[200],已定义变量:
cnt
voidjsVal()
{intI,j,thou,hun,ten,data,ab,cd;
for(I=0;I<200;I++)
{thou=a[I]/1000;hun=a[I]%1000/100;
ten=a[I]%100/10;data=a[I]%10;
ab=10*thou+ten;cd=10*data+hun;
if((ab-cd)>=0&&(ab-cd)<=10&&ab%2==1&&cd%2==1&&ab>=10&&cd>=10)
{b[cnt]=a[I];cnt++;}
}
for(I=0;Ifor(j=I+1;jif(b[I]
{thou=b[I];b[I]=b[j];b[j]=thou;}
}
★题目29已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:
把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab-cd>=10且ab-cd<=20且两个数均是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。
最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
注意:
部分源程序存在文件prog1.c中。
程序中已定义数组:
a[200],b[200],已定义变量:
cnt
voidjsVal()
{
inti,j,qw,bw,sw,gw,ab,cd;
for(i=0;i{qw=a[i]/1000;bw=a[i]/100%10;
sw=a[i]%100/10;gw=a[i]%10;
ab=qw*10+sw;cd=gw*10+bw;
if(ab-cd>=10&&ab-cd<=20&&ab%2==0&&cd%2==0&&qw!
=0&&gw!
=0)
{b[cnt]=a[i];cnt++;}
}
for(i=0;ifor(j=i+1;jif(b[i]
{qw=b[i];b[i]=b[j];b[j]=qw;}
}
★题目48已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:
求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把结果输出到out.dat文件。
例如:
6712,6+2=7+1,则该数满足条件存入数组b中,且个数cnt=cnt+1。
8129,8+9<>1+2,则该数不满足条件忽略。
部分源程序存在文件prog1.c中。
程序中已定义数组:
a[300],b[300],已定义变量:
cnt
jsValue()
{intI,qw,bw,sw,gw,j;
for(I=0;I<300;I++)
{qw=a[I]/1000;
bw=a[I]%1000/100;
sw=a[I]%100/10;
gw=a[I]%10;
if(qw+gw==bw+sw)
{pjz1+=a[I];
cnt++;
}
elsepjz2+=a[I];
}
pjz1/=cnt;
pjz2/=(300-cnt);
}
★题目49已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:
求出千位数上的数减百位数减十位数上的数减个位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果输出到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。
jsValue()
{intI,qw,bw,sw,gw,n=0;
for(I=0;I<300;I++)
{qw=a[I]/1000;bw=a[I]%1000/100;
sw=a[I]%100/10;gw=a[I]%10;
if(qw-bw-sw-gw>0){cnt++;pjz1+=a[I];}
else{n++;pjz2+=a[I];}
}
if(cnt==0)pjz1=0;
elsepjz1/=cnt;
if(n==0)pjz2=0;
elsepjz2/=n;
}
我的方法:
inti;
inta1,a2,a3,a4;
for(i=0;i<300;i++)
{a4=a[i]/1000;
a3=a[i]%1000/100;
a2=a[i]%100/10;
a1=a[i]%10;
if(a4-a3-a2-a1>0)
{cnt++;
pjz1+=a[i];
}
elsepjz2+=a[i];
}
pjz1/=cnt;
pjz2/=(300-cnt);
★题目52已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:
把千位数字和个位数字重新组成一个新的十位数(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的个位数字),以及把百位数字和十位数字组成另一个新的十位数(新十位数的十位数字是原四位数的百位数字,新十位数的个位数字是原四位数的十位数字),如果新组成的两个十位数均是奇数并且两个十位数中至少有一个数能被5整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。
最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
注意:
部分源程序存在文件prog1.c中。
程序中已定义数组:
a[200],b[200],已定义变量:
cnt
voidjsVal()
{intI,thou,hun,ten,data,j;
intab,cd;
for(I=0;I{thou=a[I]/1000;hun=a[I]%1000/100;
ten=a[I]%100/10;data=a[I]%10;
ab=10*thou+data;cd=10*hun+ten;
if(ab%2&&cd%2&&(ab%5==0||cd%5==0)&&ab>=10&&cd>=10)
{b[cnt]=a[I];cnt++;}
}
for(I=0;Ifor(j=I+1;jif(b[I]
{data=b[I];b[I]=b[j];b[j]=data;}
}
★题目53已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:
求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把结果输出到out.dat文件。
例如:
9123,9-1-2-3>0,则该数满足条件存入数组b中,且个数cnt=cnt+1。
9812,9-8-1-2>0,则该数不满足条件忽略。
部分源程序存在文件prog1.c中。
程序中已定义数组:
a[300],b[300],已定义变量:
cnt
jsValue()
{inti,j,t;
for(i=0;i<300;i++)
if((a[i]%10-a[i]/1000-a[i]/100%10-a[i]/10%10)>0)
b[cnt++]=a[i];
for(i=0;ifor(j=i;jif(b[i]
{t=b[i];
b[i]=b[j];
b[j]=t;
}
}
★题目54已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:
求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序,最后调用写函数writeDat()把结果输出到out.dat文件。
例如:
7153,7+1=5+3,则该数满足条件存入数组b中,且个数cnt=cnt+1。
8129,8+1<>2+9,则该数不满足条件忽略。
部分源程序存在文件prog1.c中。
程序中已定义数组:
a[300],b[300],已定义变量:
cnt
我的答案:
jsValue()
{inti;
inta1,a2,a3,a4;
for(i=0;i<300;i++)
{a4=a[i]/1000;a3=a[i]/100%10;
a2=a[i]%100/10;a1=a[i]%10;
if(a4+a3==a1+a2)
{pjz1+=a[i];
cnt++;
}
elsepjz2+=a[i];
}
pjz1/=cnt;
pjz2/=(300-cnt);
}★题目59已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:
把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
注意:
部分源程序存在文件prog1.c中。
程序中已定义数组:
a[200],b[200],已定义变量:
cnt
voidjsVal()
{intI,thou,hun,ten,data,j;
intab,cd;
for(I=0;I{thou=a[I]/1000;hun=a[I]/100%10;
ten=a[I]%100/10;data=a[I]%10;
ab=10*thou+ten;cd=10*data+hun;
if(((ab-cd)<0&&ab%2==1&&ab%5!
=0)&&cd%2!
=1&&ab>=10&&cd>=10)
{b[cnt]=a[I];cnt++;}
}
for(I=0;Ifor(j=I+1;jif(b[I]
{data=b[I];b[I]=b[j];b[j]=data;}
}
★题目67下列程序的功能是:
选出5000以下符合条件的自然数。
条件是:
千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍。
计算并输出这些四位自然数的个数cnt以及这些数的和sum。
请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果cnt和sum,输出到文件OUT13.DAT中。
voidcountValue()
{intI,thou,hun,ten,data;
for(I=1000;I<5000;I++)
{thou=I/1000;
hun=I%1000/100;
ten=I%100/10;
data=I%10;
if(thou+hun==ten+data&&thou+hun==(data-thou)*10)
{cnt++;sum+=I;}
}
}
★题目68已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:
如果四位数各位上的数字均是奇数,则统计出满足此条件的个数cnt并把这些四位数按从大到小的顺序存入数组b中。
最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
注意:
部分源程序存在文件prog1.c中。
程序中已定义数组:
a[200],b[200],已定义变量:
cnt
voidjsVal()
{intI,j,thou,hun,ten,data;
for(I=0;I<200;I++)
{thou=a[I]/1000;hun=a[I]%1000/100;
ten=a[I]%100/10;data=a[I]%10;
if(thou%2!
=0&&hun%2!
=0&&ten%2!
=0&&data%2!
=0)
{b[cnt]=a[I];cnt++;}
}
for(I=0;I