已知数据文件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中的四位数按从小到大的顺序进行排序。
如图,四边形ABCD是平行四边形,点E、F分别为AD、BC边上的点,且AE=CF求证:四边形BED 数学 2020-05-16 …
已知A、B、C、D、E、F这六个数的平均数是1335;A、B、C、D这四个数的平均数是1964.2 数学 2020-06-02 …
A.B.C.D.E.F.这六个数,它们的平均数为107.B.C.D.E.这四个数的平均数比这六个数 数学 2020-06-02 …
线性代数问题A是n阶矩阵,A2-2A+E=0得到A=E对不?还是A=E是前式的充分非必要条件?帮忙 数学 2020-06-12 …
高中函数题:设f(x)=x/e^x,a≠b,f(a)=f(b),比较a+b与2的大小我是这么想的但 数学 2020-07-13 …
高数导数问题.设f(x)=(e^x-e^a)g(x)在x=a处可导,则函数g(x)应该满足条件是? 数学 2020-07-20 …
电阻有个E数系,看看下我对这个e数系的理解对不对!电阻有个E数系,看看下我对这个e数系的理解对不对 数学 2020-07-31 …
设a>0,f(x)=e^x/a+a/e^x是R上的偶函数,证明:f(x)在(0,+无穷)上是增函数 数学 2020-08-01 …
1在一个减法算式中,被减数,减数与差这3个数之和是388,减数比差大16.减数,被减数和差各是多少? 数学 2020-10-31 …
已知a∈R,函数f(x)=e^x+a|x-2|.(1)当0<a≤e时,若函数f(x)在区间[1,+∞ 数学 2020-12-03 …