题目描述
从键盘输入10个整数(10个整数均不相同), 然后再从键盘中输入一个整数a,如果该整数a为奇数, 且与这10个整数中的任一个数相同,则删掉与a相同的 这个数,并将剩下的9个数按升序排序输出;若a为偶数, 且与这10个数都不同,则加入a,并将这11个数降序排 序输出;否则,则将这10个数奇数在前,偶数在后, 降序排列输出。例如,10个数分别为6,89,34,12, 0,-8,78,15,9,3.若a为9,则输出为:-8,0,3, 6,12,15,34,78,89.若a为2,则输出为:89,78, 34,15,12,9,6,3,2,0,-8.若a为7或者12,则 输出为:89,15,9,3,78,34,12,6,0,-8.
要求:使用函数解决本题,至少编写以下几个函数,1、升序排序函数void sort(int a[], int n);2、查找函数int find(int a[],int n,int value)----在大小为n的a数组中查找值为value的元素,找到就返回元素的下标,找不到,就返回-1;3、输出函数display(int a[], int n)---逐个输出数组a的元素;4、反转数组函数void reverse(int a[], int n)----将数组逆序。
输入
测试数据的组数n
第一组测试数据的10个整数
第一组的整数a
第二组测试数据的10个整数
第二组的整数a
......
第n组测试数据的10个整数
第n组的整数a
输出
第一组数据排序输出
第二组数据排序输出
.......
第n组数据排序输出
IO模式
本题IO模式为标准输入/输出(Standard IO),你需要从标准输入流中读入数据,并将答案输出至标准输出流中。

输入样例2中有负数,由于是后台数据就不放出了,注意一下存在负数即可(哈哈是谁栽在这里啦原来是我啊XD
代码如下:
#include <stdio.h>
int a[11];
void sort(int a[],int n);
int find(int a[],int n,int value);
void display(int a[],int n);
void reverse(int a[],int n);
void other(int a[],int n);
int main(){
int t,m,v;
scanf("%d",&t);
while(t--){
for(int i=0;i<10;i++)
scanf("%d",&a[i]);
scanf("%d",&m);
v=find(a,10,m);
if(m%2==1){
if(v!=-1){
for(int i=v;i<10;i++)
a[i]=a[i+1];
sort(a,9);
display(a,9);
continue;
}
}
else{
if(v==-1){
a[10]=m;
sort(a,11);
reverse(a,11);
display(a,11);
continue;
}
}
sort(a,10);
reverse(a,10);
other(a,10);
display(a,10);
}
return 0;
}
void sort(int a[],int n){
int k,z;
for(int i=0;i<n-1;i++)
{
k=i;
for(int j=i+1;j<n; j++)
if (a[j]<a[k])
k=j;
if (i!=k)
{
z=a[i];
a[i]=a[k];
a[k]=z;
}
}
}
int find(int a[],int n,int value){
for(int i=0;i<n;i++)
if(a[i]==value)
return i;
return -1;
}
void display(int a[],int n){
for(int i=0;i<n;i++){
printf("%d",a[i]);
if(i<n-1)
printf(" ");
else
printf("\n");
}
}
void reverse(int a[],int n){
int temp[n];
for(int i=0;i<n;i++)
temp[i]=a[n-i-1];
for(int i=0;i<n;i++)
a[i]=temp[i];
}
void other(int a[],int n){
int temp[n];
int l;
l=0;
for(int i=0;i<n;i++)
if(a[i]%2==1 || a[i]%2==-1){
temp[l]=a[i];
l++;
}
for(int i=0;i<n;i++)
if(a[i]%2==0){
temp[l]=a[i];
l++;
}
for(int i=0;i<n;i++)
a[i]=temp[i];
}
other函数通过先记录奇数后记录偶数的方式,把奇数前移偶数后移
站内还有一版是通过交换奇数偶数位置来实现此功能的,链接也放在这里:
【id:232】【20分】B. 分类排序(函数)_从键盘输入10个整数(10个整数均不相同), 然后再从键盘中输入一个整数a,如果该整数-优快云博客
(之前没考虑到存在负数的情况,寻思着找个代码参考一下思路的时候找到的)
417

被折叠的 条评论
为什么被折叠?



