已知数据文件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中的四位数按从大到小的顺序进行排序。
某校组织活动,共有165人参加,要把参加活动的人分成三组,已知第一组人数比第二组人数的2倍少8人.某 数学 2020-03-31 …
已知a和b是有理数且a不等于b化简2/1(a=b-|a-b|将1,2,3.100个自然数,任意分为 数学 2020-04-06 …
已知方程组x+y=-7-a,x-y=1+3a.的解x为非正数,y为负数.求a的取值范围?在a的取值 数学 2020-05-15 …
已知方程组x+y=-7-a,x-y=1+3a的解x为非正数,y为负数……已知方程组x+y=-7-a 数学 2020-05-15 …
统计学问题,已知有40个数据,那么如何确定组数?采用组居分组时,第一步要确定组数K,组数K要在5~ 数学 2020-05-17 …
1/9、0.5、2、45、9这4个数中,组成的比例是 数学 2020-05-21 …
当未知数系数不具备第三四题的特点时,一般是对方程组中未知数的最小公倍数较小的进行消元,如解方程组{ 数学 2020-05-22 …
三个未知数中最多有一个为零,如何表示(用lingo) 数学 2020-05-24 …
在未知数中,如果没有前提的情况下,x能做减数么?有一道题是解方程的,但老师说过x不能做减数,所以不 数学 2020-06-29 …
我认为教材上二元一次方程组的定义,有些模糊。如果方程组中含有两个未知数,且含未知数的项的次数都是一 其他 2020-07-01 …