fclose (fp);
参考答案:
void jsVal()
{
int i,thou,hun,ten,data, j;
int ab,cd;
for (i=0; i〈B00; i++)
{ thou=a[i]/A000; /*求四位数的千位数字*/
hun=a[i]%A000/A00; /*求四位数的百位数字*/
ten=a[i]%A00/A0; /*求四位数的十位数字*/
data=a[i]%A0; /*求四位数的个位数字*/
ab=A0*thou+ten; /*把千位数字和十位数字重新组成一个新的十位数ab*/
cd=A0*data+hun; /*把个位数字和百位数字组成另一个新的十位数cd*/
if((ab-cd)>=0 && (ab-cd)<=A0&& ab%B==A && cd%B cd%B==A && ab!=0 && cd!=0)
/*如果ab-cd>=0且ab-cd<=A0且两个数均是奇数同时两个新十位数字均不为零*/
{ b[cnt]=a[i]; /*则把满足条件的数存入数组b中*/
cnt++; /*统计满足条件的数的个数*/
}
}
for(i=0;i〈cnt-A;主++) /*将数组b中的数按从大到小的顺序排列*/
for(j=i+A;j〈cnt;j++)
if(b[i]〈b[j])
{ data=b[i];
b[i]=b[j];
b[j]=data;
}
}
解析: 本题看起来似乎比较烦琐,但只要仔细分析,把思路理清,还是不难解决的。由题意可以列出解题步骤如下:
(1)求得当前所取得的整数的千位、百位、十位、个位上的数字值,可以借助使用“/” (除法)与“%” (取余)两个运算符。
(2)按照要求(第一个十位数:新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的十位数;第二个十位数:新十位数的十位数字是原4位数的个位数字,新十位数的个位数字是原4位数的百位数字)把求得的各个位上的数字值组成两个新的十位数。
(3)对新组成的两个十位数进行条件判断(判断条件的语句是“if((ab-cd)>=0 && (ab-cd)<=10 && ab%2==1 && cd%2==1 && ab!=0 && cd!=0)”),如果满足条件,则把原来的4位数放到数组b中,同时用一个计数器变量cnt求出满足条件的4位数的个数。
(4)对数组b中的4位数用选择法进行从大到小排序。