编写程序实现以下功能:
//随机产生20个正整数存入数组a中,且每个数均在1000-9999之间(包含1000和9999)。对数组进行排序,要求按每个数的后三位的大小进
行升序排列,然后取出满足此条件的前10个数放入数组b中,如果后三位的数值相等,则按原先的数值进行降序排列。最后输出数组b的内容
#import <Foundation/Foundation.h>
int value(int x)
{
//如何求出5609 的后三位数
int y = x /1000;
int c = x % (1000 *y);
return c;
}
int value1(int x)
{
int y = x /1000;
return y;
}
int main(int argc, const char * argv[])
{
/
int a[20] = {0}, b[20] = {0};;//输出这二十个数
for (int i = 0; i < 20; i++) {
a[i] = arc4random()%(9999 - 1000 + 1) + 1000;
printf("%d ",a[i]);
}
printf("取出后三位的数组:\n");
for (int i = 0; i < 20; i++) {
b[i] = value(a[i]);
printf("%d ",b[i]);
}
printf(" 排序后的数组:\n");
for (int i = 0; i < 20 - 1; i++) {
for (int j = 0; j < 20 - 1 - i; j++) {
if (b[j] > b[ j + 1]) {
int temp = b[j];
b[j] = b[j + 1];
b[j + 1] = temp;
}
}
}
int c[20] = {0};
printf("\n输出排序后的:");
for (int i = 0; i < 10; i++) {
c[i]= b[i]+value1(a[i]) * 1000;
printf(" %d",c[i]);
}
for (int i = 0; i < 20 - 1; i++) {
for (int j = 0; j < 20 - 1 - i; j++) {
if (c[j] == c[j + 1] && c[j] < c[j + 1]) {
int temp = c[j + 1];
c[j + 1] = c[j];
c[j] = temp;
printf(" %d",c[j]);
}
}
}
return 0;
}
本文出自 “久久归一” 博客,请务必保留此出处http://lulun426.blog.51cto.com/9197884/1533464
原文地址:http://lulun426.blog.51cto.com/9197884/1533464