蒜头君给了一个长度为?N(不大于?500)的正整数序列(正整数的值不超过?N),请将其中的所有奇数取出,并按升序输出。
输入格式
共?2?行:
第?1 行为?N;
第?2?行为?N?个正整数,其间用空格间隔。
输出格式
增序输出的奇数序列,数据之间以逗号间隔。数据保证至少有一个奇数。
输入
10
1 3 2 6 5 4 9 8 7 10
输出
1,3,5,7,9
解题思路:首先要明确,如何输入一组数;如何比较这组数比较大小;如何给这组数进行排序(例如:插入排序法,快速排序法等)。其次就是要灵活运用标记法;变通的输出格式,输出符合题目所要求的格式。总而言之,这道题的难点就是如何进行排序。
#include<stdio.h>
int main()
{
int i,j,n,a[500],temp,set=1;
scanf("%d",&n);//输入n个整数;
for(i=0;i<n;i++)//for循环;
{
scanf("%d",&a[i]);//遍历数组a[i](相当于把n个数分给次数组);‘
}
for(i=1;i<n;i++)//运用插入排序法
{
temp=a[i];//将该数组给予媒介;
j=i-1;
while(a[j]>temp&&j>=0)//判断每个数的大小并交换位置;
{
a[j+1]=a[j];//赋值;
j--;//依此每个进行判断;
}
a[j+1]=temp; //赋值;
}
for(i=0;i<n;i++)//将排好的数进行重新排序;
{
if(a[i]%2!=0)//判断是否为奇数;
{
if(set==1)//标记法(目的为了输出格式);
{
printf("%d",a[i]);
set=0;//与之前的标记不相符,换一种输出格式;
}
else
{
printf(",%d",a[i]);
}
}
}
printf("\n");
return 0;
}
?希望各位帅哥美女们看完能给个赞,顺手点个赞,支持一下,谢谢!
|