已知数据文件IN13.DAT中存有300个四位数,并已调用读函数readDat()把这些数存入数组a中,请编制一
已知数据文件IN13.DAT中存有300个四位数,并已调用读函数readDat()把这些数存入数组a中,请编制一个函数jsValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再把所有满足条件的四位数依次存入数组b中,然后对数组b中的四位数按从大到小的顺序进行排序,最后调用写函数writeDat()把数组b中的数输出到OUT13.DAT文件。
例如:7153,7+1=5+3,则该数满足条件存入数组b中,且个数cnt=cnt+1。
8129,8+1≠2+9,则该数不满足条件,忽略。
注意:部分源程序已给出。程序中已定义数组: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<cnt;i++)printf("b[%d]=%d\n",i,b[i]);
}
readDat()
{
FILE *fp;
int i;
fp=fopen("IN13.DAT","r");
for(i=0;i≤300;i++)fscanf(fp,"%d,",&a[i]);
fclose(fp);
}
writeDat()
{
FILE *fp;
int i;
fp=fopen("OUT13.DAT","w");
fprintf(fp,"%d\n",cnt);
for(i=0;i<cnt;i++)fprint{(fp,"%d\n",b[i]);
fclose(fp);
}
void jsValue() { int i,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+hun==data+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中的四位数按从大到小的顺序进行排序。
如果把个位数是1,且恰好有3个数字相同的四位数叫做“好数”,那么在由1,2,3,4四个数字组成的有 其他 2020-05-14 …
在文件in75.dat中有200组数据,每组有3个数,每个数均为3位数。函数readDat()是读取 计算机类考试 2020-05-23 …
在文件in75.dat中有200组数据,每组有3个数,每个数均为3位数。函数readDa(()是读取 计算机类考试 2020-05-23 …
在文件IN30.DAT中有200组数据,每组有3个数,每个数均是3位数。函数readDat()是读取 计算机类考试 2020-05-23 …
在3×3方格上做填字游戏,方格内有3个数和一个未知数☆.求未知数☆的值.(见详细提问,有要求)3× 数学 2020-06-03 …
在11223344这8个数中,怎样排列才能使2个1中有1个数,2个2中有2个数,2个3中有3个数, 数学 2020-06-13 …
1.证明:在任选的5个自然数中,必有3个数,它们的和是3的倍数.2.某校校庆,来了n位校友,彼此认 数学 2020-07-15 …
有20个数,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10.现在 数学 2020-11-10 …
1个3角行,每行上有3个数,每行的和是15,每行中间的数分别是3,5,2还有3个数要自已想 数学 2020-11-24 …
0到9十个数,选5个,有3个数中奖概率多少?怎么算(不重复,没有顺序)10选5,在这5个数中有3个数 数学 2020-12-03 …