金币银币问题
求救,会的来帮帮忙,小弟感激!!!问题:金币银币问题:有若干币值不同的金币和银币,任一金币的价值都大于所有银币,要求按价值由小到大排列所有货币。
模型分析:用数组存放所有的整数,奇数(偶数)代表金币,偶数(奇数)代表银币,按先偶后奇(先奇后偶)的顺序整理数组,然后分别对偶数列和奇数列进行排序。
谢谢啦!!考试必考题目
程序代码:#include<stdio.h>
/*-----这个模型是偶数是金,奇数是银----*/
int main(void)
{
int n, a[100], b[100], c[100], i, j,temp, bn=0, an=0;
printf("请输入金银的总个数:");
scanf("%d",&n);
printf("\n");
for(i=0; i<n; i++)
{
scanf("%d",&c[i]); // c是存放所有数是数组,其实可以不要,不过题目有要求
if(0 == c[i]%2)
a[an++]=c[i]; // 偶数分给a数组
else
b[bn++]=c[i]; // 奇数分给b数组
}
for(i=0; i<an; i++) // 给偶数排序,用了原始的气泡,只给LZ提供思路,算法自己改进
for(j=0;j<an-i;j++)
if(a[j]<a[j+1])
temp = a[j],a[j] = a[j+1], a[j+1] = temp;
for(i=0; i<bn; i++) // 给奇数排序,用了原始的气泡,只给LZ提供思路,算法自己改进
for(j=0;j<bn-i;j++)
if(b[j]<b[j+1])
temp = b[j],b[j] = b[j+1], b[j+1] = temp;
for(i=0; i<an; i++) // 定偶数为金,先输出偶数 ,(如果是定奇数为金,则与下个循环对换位置即可)
printf("%d ",a[i]);
for(i=0; i<bn; i++) // 输出奇数
printf("%d ",b[i]);
return 0;
}