题目:
1.编写main函数,从键盘输入任意5个4位整数存入数组aa中,调用函数sort[]
函数sort[]的功能是:按每个数后三位的大小进行升序排列,并将结果放在数组bb中,如果后三位的数值相等,则按4为正整数的大小进行降序排列。列入:输入6012 5099 9012 7025 8088 则输出 9012 6012 7025 8088 5099
最后在main函数中,把排序后的结果疏导文件 test3-2.dat
程序:
#include<iostream> #include <fstream> using namespace std;
//分割函数,将4位整数分割为第一位,和后三位 //参数num为待分割的4位数,数组a为分别存储第一位和第三位 void discut(int num,int *a) { int temp[4]; //临时数组,存储4位数的每一位 //分割过程 for (int i=3;i>=1;i--) { temp[i] = num % 10; num /= 10; } a[0] = num; //第一位存在a[0]中 a[1] = temp[1]*100 + temp[2]*10 + temp[3];//后三位存在a[1]中 }
//排序函数 void sort(int *a) { int temper; //临时变量,用于数据交换 int tem1[2],tem2[2]; //存放4位数的两个数组 //冒泡排序 for (int j=0;j<5;j++) { for (int i=0;i<4;i++) { discut(a[i],tem1); //用于比较的第一个数 discut(a[i+1],tem2); //用于比较的第一个数 //如果第一个数的后三位比第二个数的后三位大,则交换位置 if(tem1[1]>tem2[1]) { temper = a[i]; a[i] = a[i+1]; a[i+1] = temper; } //当两个数的后三位相等时 else if(tem1[1] == tem2[1]) { //如果第一个数的第一位比第二个数的第一位小,则交换位置 if (tem1[0]<tem2[0]) { temper = a[i]; a[i] = a[i+1]; a[i+1] = temper; } } } } }
//主函数,程序入口 int main() { int aa[5]; //存储输入的5个四位数的数组 for (int i=0;i<5;i++) { cin>>aa[i]; }
//排序 sort(aa);
//定义一个文件流对象,以写方式打开文件 test3-2.dat fstream file("test3-2.dat",ios::out | ios::trunc); //将排序后的结果写入该文件 for (int j=0;j<5;++j) { file<<aa[j]<<endl; }
return 0; } |
|