按降序排列数组中的奇数
Order the odd numbers from an array in a descending order
我正在编写一个代码:
- 打印一组随机数
- 升序排列
- 从该数组中找出奇数
- 将奇数排列成降序。
前三个我都做了,但是我不能把奇数排列成降序。该程序将随机数按降序排序,而不仅仅是奇数。请帮我。谢谢。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int size,i,j,temp;
int a[50];
printf("Enter array size| ");
scanf("%i",&size);
srand(time(0));
printf("\nThe Random Numbers| \n");
for(i=0;i<size;i++){
a[i] = rand()%100;
printf("%i, ",a[i]);
}
for (i=0;i<size;++i)
{
for (j=i+1;j<size;++j)
{
if (a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
printf("\n\nThe Ascending Order of Random Numbers| \n");
for (i=0;i<size;++i)
printf("%d, ", a[i]);
printf("\n\nThe Odd Numbers| \n");
for(i=0;i<size;i++){
if(a[i]%2!=0){
printf("%i, ",a[i]);
}
}
for(i=0;i<size;i++){
for(j=i+1;j<size;j++){
if(a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
printf("\n\nThe Descending Order of Odds| \n");
for(i=0;i<size;i++)
printf("%d ",a[i]);
return 0;
}
把n
看成数组length -1
,看看下面的伪代码:
for each i in n {
if a[i] even:
continue
for each j in n {
if a[j] even:
continue
if(a[i]<a[j])
swap(a[i], a[j])
}
}
在这种情况下,您忽略偶数并仅修改包含奇数的数组位置。
这是c
代码:
for(i=0;i<size;i++){
if(a[i]%2!=0) {
for(j=i+1;j<size;j++){
if((a[j]%2!=0) && (a[i]<a[j]))
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
} // end of j for loop
} // end of if odd
} // end of i for loop
我正在编写一个代码:
- 打印一组随机数
- 升序排列
- 从该数组中找出奇数
- 将奇数排列成降序。
前三个我都做了,但是我不能把奇数排列成降序。该程序将随机数按降序排序,而不仅仅是奇数。请帮我。谢谢。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int size,i,j,temp;
int a[50];
printf("Enter array size| ");
scanf("%i",&size);
srand(time(0));
printf("\nThe Random Numbers| \n");
for(i=0;i<size;i++){
a[i] = rand()%100;
printf("%i, ",a[i]);
}
for (i=0;i<size;++i)
{
for (j=i+1;j<size;++j)
{
if (a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
printf("\n\nThe Ascending Order of Random Numbers| \n");
for (i=0;i<size;++i)
printf("%d, ", a[i]);
printf("\n\nThe Odd Numbers| \n");
for(i=0;i<size;i++){
if(a[i]%2!=0){
printf("%i, ",a[i]);
}
}
for(i=0;i<size;i++){
for(j=i+1;j<size;j++){
if(a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
printf("\n\nThe Descending Order of Odds| \n");
for(i=0;i<size;i++)
printf("%d ",a[i]);
return 0;
}
把n
看成数组length -1
,看看下面的伪代码:
for each i in n {
if a[i] even:
continue
for each j in n {
if a[j] even:
continue
if(a[i]<a[j])
swap(a[i], a[j])
}
}
在这种情况下,您忽略偶数并仅修改包含奇数的数组位置。
这是c
代码:
for(i=0;i<size;i++){
if(a[i]%2!=0) {
for(j=i+1;j<size;j++){
if((a[j]%2!=0) && (a[i]<a[j]))
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
} // end of j for loop
} // end of if odd
} // end of i for loop