3数据分解并重组后再筛选统计并排序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
24、【审题关键句】千位+十位组合与个位+百位组合,都是奇数,两数相减结果大于等于0小于等于10,从大到小排序。
【参考答案】
int qw, bw, sw, gw, i, j, newV1, newV2;
for(i = 0; i < MAX; i++)
{
/*对四位数进行分解*/
qw = a[i] / 1000;
gw = a[i] % 10;
bw = (a[i] - qw * 1000) / 100;
sw = (a[i] - qw * 1000 - bw * 100) / 10;
/*分解后的四位数重新组合为两个十位数*/
newV1 = qw * 10 + sw; //a[i]的千位上的数字与其十位上的数字组成新的两位数newV1
newV2 = gw * 10 + bw; //a[i]的个位上的数字与其百位上的数字组成新的两位数newV2
if(qw && gw && (newV1 - newV2>0 && newV1-newV2<=10) && (newV1 % 2) && (newV2 % 2)) //如果a[i]的千位上的数字,个位上的数字均不等于零并且新组成的第一个数大于第二个数且第一个数与第二个数的差小于等于10且第一个数字,第二个数字均为奇数
b[cnt++] = a[i]; //把a[i]赋给b[cnt],同时下标变量cnt加1
}
/*对数组b[cnt]中的数字进行排序*/
for(i = 0; i < cnt - 1; i++)
for(j = i + 1; j < cnt; j++)
if(b[i] < b[j]) //如果数组元素b[i]小于b[j],则两者交互换,对数组b进行降序排列
{
newV1 = b[j];
b[j] = b[i];
b[i] = newV1;
}
25、【审题关键句】千位+十位组合与个位+百位组合,素数,从大到小排序。
【参考答案】
int qw, bw, sw, gw, i, newV1, newV2, j;
for(i = 0; i < MAX; i++)
{
qw = a[i] / 1000;
gw = a[i] % 10;
bw = (a[i] - qw * 1000) / 100;
sw = (a[i] - qw * 1000 - bw * 100) / 10;
newV1 = qw * 10 + sw;
newV2 = gw * 10 + bw;
if(qw && gw && isprime(newV1) && isprime(newV2)) //如果a[i]千位上的数字和个位上的数字都不等于零且新组成的第一个数和第二个数都为素数
b[cnt++] = a[i];
}
for(i = 0; i < cnt - 1; i++)
for(j = i + 1; j < cnt; j++)
if(b[i] < b[j])
{
newV1 = b[j];
b[j] = b[i];
b[i] = newV1;
}
26、【审题关键句】千位+十位与个位+百位,比较大小,整除,奇偶数判断,从大到小排序。
【参考答案】
int qw, bw, sw, gw, i, newV1, newV2, j;
for(i = 0; i < MAX; i++)
{
qw = a[i] / 1000;
gw = a[i] % 10;
bw = (a[i] - qw * 1000) / 100;
sw = (a[i] - qw * 1000 - bw * 100) / 10;
newV1 = qw * 10 + sw;
newV2 = gw * 10 + bw;
if(qw && gw && (newV1
}
for(i = 0; i < cnt - 1; i++)
for(j = i + 1; j < cnt; j++)
if(b[i] < b[j])
{
newV1 = b[j];
b[j] = b[i];
b[i] = newV1;
}
27、【审题关键句】个位+千位与百位+十位,偶数,整除,从大到小排序。
【参考答案】
int qw, bw, sw, gw, i, newV1, newV2, j;
for(i = 0; i < MAX; i++)
{
qw = a[i] / 1000;
gw = a[i] % 10;
bw = (a[i] - qw * 1000) / 100;
sw = (a[i] - qw * 1000 - bw * 100) / 10;
newV1 = gw * 10 + qw; //a[i]个位上的数字与千位上的数字组成第一个新数newV1
newV2 = bw * 10 + sw; //a[i]百位上的数字与十位上的数字组成第二个新数newV2
if(gw && bw && (newV1 % 2 == 0) && (newV2 % 2 == 0) && (newV1 % 9 == 0 || newV2 % 9 == 0)) //如果 a[i]个位上的数字与百位上的数字都不为零且新组成的两个数都为偶数且至少有一个数能被9整除
b[cnt++] = a[i];
}
for(i = 0; i < cnt - 1; i++)
for(j = i + 1; j < cnt; j++)
if(b[i] < b[j])
{
newV1 = b[j];
b[j] = b[i];
b[i] = newV1;
}
28、【审题关键句】个位+千位与百位+十位,奇数,偶数,整除,从大到小排序。
【参考答案】
int qw, bw, sw, gw, i, newV1, newV2, j;
for(i = 0; i < MAX; i++)
{
qw = a[i] / 1000;
gw = a[i] % 10;
bw = (a[i] - qw * 1000) / 100;
sw = (a[i] - qw * 1000 - bw * 100) / 10;
newV1 = gw * 10 + qw; //a[i]个位上的数字与千位上的数字组成第一个新数newV1
newV2 = bw * 10 + sw; //a[i]百位上的数字与十位上的数字组成第二个新数newV2
if(gw && bw && (((newV1 % 2==0) && (newV2 % 2) && (newV1 % 17==0 || newV2 % 17==0)) || ((newV1 % 2) && (newV2 % 2==0) && (newV1 % 17==0 || newV2 % 17==0)))) //如果a[i]个位上的数字与百位上的数字都不为零且第一个新数为偶数,第二个新数为奇数且两者至少有一个能被17整除或者第一个新数为奇数,第二个新数为偶数且两者至少有一个能被17整除
b[cnt++] = a[i]; //把满足上述条件的a[i]赋给b[cnt],同时数组的下标变量cnt加1
}
for(i = 0; i < cnt - 1; i++)
for(j = i + 1; j < cnt; j++)
if(b[i] < b[j]) //如果数组b中元素b[i]小于b[j],则两者互换,实现对数组b的降序排列
{
newV1 = b[j];
b[j] = b[i];
b[i] = newV1;
}
29、【审题关键句】千位+个位与百位+十位,奇数,整除,从大到小排序。
【参考答案】
int qw, bw, sw, gw, i, newV1, newV2, j;
for(i = 0; i < MAX; i++)
{
qw = a[i] / 1000;
gw = a[i] % 10;
bw = (a[i] - qw * 1000) / 100;
sw = (a[i] - qw * 1000 - bw * 100) / 10;
newV1 = qw * 10 + gw; //a[i]千位上的数字与个位上的数字组成第一个新数newV1
newV2 = bw * 10 + sw; //a[i]百位上的数字与十位上的数字组成第二个新数newV2
if(qw && bw && (newV1 % 2) && (newV2 % 2) && ((newV1 % 5) == 0 || (newV2 % 5)==0)) //如果a[i]千位上的数字与百位上的数字都不零且两个新组成的数均是奇数并且至少有一个数能被5整除
b[cnt++] = a[i]; //把满足上述条件的四位数a[i]赋给b[cnt],同时数组的下标变量cnt加1
}
for(i = 0; i < cnt - 1; i++)
for(j = i + 1; j < cnt; j++)
if(b[i] < b[j]) //如果数组b中的元素b[i]小于b[j],则两者互换,实现数组b的降序排列
{
newV1 = b[j];
b[j] = b[i];
b[i] = newV1;
}
30、【审题关键句】千位+十位与个位+百位,都是偶数,两数相减结果大于等于10小于等于20,从大到小排序。
【参考答案】
int qw, bw, sw, gw, i, newV1, newV2, j;
for(i = 0; i < MAX; i++)
{
qw = a[i] / 1000;
gw = a[i] % 10;
bw = (a[i] - qw * 1000) / 100;
sw = (a[i] - qw * 1000 - bw * 100) / 10;
newV1 = qw * 10 + sw;
newV2 = gw * 10 + bw;
if(qw && gw && (newV1 - newV2>=10 && newV1-newV2<=20) && (newV1 % 2 == 0) && (newV2 % 2 == 0)) //如果a[i]千位上的数字与个位上的数字都不为零且第一个新数与第二个新数的差大于等于10而小于等于20并且新组成的两个新数都为偶数
b[cnt++] = a[i];
}
for(i = 0; i < cnt - 1; i++)
for(j = i + 1; j < cnt; j++)
if(b[i] < b[j])
{
newV1 = b[j];
b[j] = b[i];
b[i] = newV1;
}
31、【审题关键句】各位都是偶数,从大到小排序。
【参考答案】
int qw, bw, sw, gw, i, j, ab;
for(i = 0; i < MAX; i++)
{
qw = a[i] / 1000;
gw = a[i] % 10;
bw = (a[i] - qw * 1000) / 100;
sw = (a[i] - qw * 1000 - bw * 100) / 10;
if((qw % 2==0) && (bw % 2==0) && (sw % 2==0) && (gw % 2==0)) //如果a[i] 各位上的数字均为偶数
b[cnt++] = a[i]; //把满足上述条件的四位数a[i]赋给b[cnt],同时数组下标变量cnt加1
}
for(i = 0; i < cnt - 1; i++)
for(j = i + 1; j < cnt; j++)
if(b[i] < b[j]) //如果数组b中的元素b[i]小于b[j],则两者互换,对数组b进行降序排列
{
ab = b[j];
b[j] = b[i];
b[i] = ab;
}
32、【审题关键句】各位都是偶数,从大到小排序。
【参考答案】
int qw, bw, sw, gw, i, j, ab;
for(i = 0; i < MAX; i++)
{
qw = a[i] / 1000;
gw = a[i] % 10;
bw = (a[i] - qw * 1000) / 100;
sw = (a[i] - qw * 1000 - bw * 100) / 10;
if((qw % 2==0) && (bw % 2==0) && (sw % 2==0) && (gw % 2==0)) //如果a[i] 各位上的数字均为偶数
b[cnt++] = a[i]; //把满足上述条件的四位数a[i]赋给b[cnt],同时数组下标变量cnt加1
}
for(i = 0; i < cnt - 1; i++)
for(j = i + 1; j < cnt; j++)
if(b[i] < b[j]) //如果数组b中的元素b[i]小于b[j],则两者互换,对数组b进行降序排列
{
ab = b[j];
b[j] = b[i];
b[i] = ab;
}
33、【审题关键句】各位都是奇数,从大到小排序。
【参考答案】
int qw, bw, sw, gw, i, j, ab;
for(i = 0; i < MAX; i++)
{
qw = a[i] / 1000;
gw = a[i] % 10;
bw = (a[i] - qw * 1000) / 100;
sw = (a[i] - qw * 1000 - bw * 100) / 10;
if((qw % 2) && (bw % 2) && (sw % 2) && (gw % 2)) //如果a[i] 各位上的数字均为奇数
b[cnt++] = a[i];
}
for(i = 0; i < cnt - 1; i++)
for(j = i + 1; j < cnt; j++)
if(b[i] < b[j])
{
ab = b[j];
b[j] = b[i];
b[i] = ab;
}
34、【审题关键句】完全平方根,有两个相同数。
【参考答案】
int n, k, a, b, c, cnt = 0; //定义整型变量n, k, a,
b, c, cnt,同时变量cnt的初值为0
for(k = 10;; k++) //循环变量k从10开始,每次递增1
{
n = k * k; //把k的平方数赋给n
if(n < 100) continue; //如果n的值小于100,则进入下一次循环
if(n > 999) break; //如果n的值大于999,则退出for循环语句
a = n / 100; //n除以100得到n的百位上的数字
b = n % 100 / 10; //n对100求余再除以10,得到n的十位上的数字
c = n % 10; //n对10求余得到n个位上的数字
if((a-b)*(a-c)*(b-c) == 0) //如果n三个数位上的数字有两个相同
{
printf("N=%d=%d*%d\n", n, k, k);
bb[cnt++] = n; //把满足条件的三位数n赋给数组元素bb[cnt],同时数组下标变量cnt加1
}
}
return cnt; //返回满足条件的三位数的个数cnt
第4类 根据相邻数大小进行筛选统计并排序