已知数据文件IN11.DAT中存有300个四位数,并已调用读函数readDat()把这些数存入数组a中。请编制一
已知数据文件IN11.DAT中存有300个四位数,并已调用读函数readDat()把这些数存入数组a中。请编制一个函数jsValuc(),其功能是:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再把所有满足条件的四位数依次存入数组b中,然后对数组b中的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把数组b中的数输出到OUT11.DAT文件。
例如:6712,6+2=7+1,则该数满足条件存入数组bb中,且个数cnt=cnt+1。
8129,8+9≠1+2.则该数不满足条件,忽略。
注意:部分源程序已给出。程序中已定义数组:a[300],b[300];已定义变量:cnt。请勿改动主函数main()、读函数 readDat()和写函数writeDat()的内容。
[试题程序]
include<stdio.h>
int a[300],b[300],cnt=0;
void jsValue()
{
}
main()
{
int i;
readDat();
jsValue();
writeDat();
for(i=0;i<cn;i++)printf("b[%d]=%d\n",i,b[i]);
}
readDat()
{
FILE *fp;
int i;
fp={open("IN11.DAT","r");
for(i=0;i<300;i++)fscanf(fp,"%d,",&a[i]);
fclose(fp);
}
writeDat()
{
FILE *fp;
Int i;
fp=fopen("OUT11.DAT","Wt");
fprmt{(fp,"%d\n",cnt);
for(i=0;i<cnt;i++)fPrIntf(fp,"%d\n",b[i]);
fclose(fp);
}
voidjsValue() { int 1,thou,hun,ten,data,j; for(i=0;i300;i++) } thou=a[i]/1000; /*取得四位数的千位数字*/ hun=a[i]%1000/100; /*取得四位数的百位数字*/ ten=a[i]%100/10; /*取得四位数的十位数字*/ data=a[i]%10; /*取得四位数的个位数字*/ if(thou+data==hun+ten) {b[cnt]=a[i];cnt++;} } for(i=0;icnt-1;i++) /*将数组b中的四位数按从小到大的顺序进行排序*/ for(j=i+1;jcnt;j++) if(b[i]>b[j]){data=b[i];b[i]=b[j];b[j]=data;} } [解析] 此题型考查的知识点包括以下几方面: (1) 运算符“/”(相除)和“%”(取余)的灵活运用; (2) 循环结构的使用; (3) 数据的排序(在这里主要是使用选择排序法); (4) 选择结构的使用。 此函数的功能是:将满足“千位数+个位数=百位数+十位数”的四位数依次存入数组b中,然后对数组b中的四位数按从小到大的顺序进行排序。
()是指把所有这些分组标志都放在统计表的横行位置编制成的统计分组表。A.简单表B.简单分组表C.单 财会类考试 2020-05-21 …
甲、乙两人各有一些存款,甲存款是乙存款的3.5倍.如果甲取出2400元,乙取出400元,那么两人剩 数学 2020-06-06 …
二给假字换个偏旁组成另外的字并用这些字组成词语填在下面几个句子中二给假字换个偏旁组成另外的字并用这 语文 2020-06-19 …
如图所示,平面直角坐标系xOy中,在y>0的区域存在沿y轴负方向的匀强电场,场强大小为E.在-h< 物理 2020-07-31 …
中国人民银行于2007年5月18日调整居民存款利率,一年定期存款利率由原来的2.8%上升到3.1%, 其他 2020-11-06 …
英国科学家麦克斯韦预言世界上存在着电磁波,后经德国物理学家赫兹实验证实。这印证了()A.思维和存在具 政治 2020-11-23 …
英语翻译一号存款是存单,存满一年后在2012年12月9日再次转存了一年的定期,所以这笔定期存款实际存 英语 2020-11-28 …
1.抗日战争中,一直敌后武工队为了更灵活地打击敌人,把68人分成了14人战斗小组.这些小组有的3人, 数学 2020-11-30 …
x星到底存不存在,那冥王星怎么解释?木星与土星中的轨道怎么解释?x星,不是什么,只是它存在过没有,现 物理 2020-12-16 …
一些字组词拈粹萃都要注音再问下几个字不懂得,区字加个木字旁在左边,这个字念什么,知道的组词并注音下, 语文 2021-01-21 …