【C语言】第五十五题→随机一个整数数组,数组元素指定为10(最大值9),来调整该数组中数字的顺序使得数组中所有的奇数位数位于前半部分,所有偶数位于数组后半部分。

89 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第10天,点击查看活动详情

👋『大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流>』
✔「life motto」⇢ 种一棵树最好是十年前⇿其次是现在👌
📝<juejin>个人主页謓泽 的个人主页 - 文章 - 掘金 (juejin.cn)
📚<系列专栏>⇥【C语言】Topic - 謓泽的专栏 - 掘金 (juejin.cn) 🏆2021年度博客之星物联网与嵌入式开发TOP5 2021博客之星Top100 阿里云专家博主^星级博主 CSDN⇿掘金⇿InfoQ[创作者]

前言

今天开始C语言的五十五题,那么让我们开始做题吧(´▽`ʃ♡ƪ),美好的一天从敲代码开始。

题目描述

随机一个整数数组,数组元素指定为10(最大值9),实现一个函数。来调整该数组中数字的顺序使得数组中所有的奇数位数位于前半部分,所有偶数位于数组后半部分。

题目分析

随机输入一个整形数组,数组元素指定元素为10。这个随机数组实际上用 rand() 函数就可以实现。把 rand() % 10 就可以得到0-9 的数字了。再把这个赋值给整形数组,就可以随机产生 0~9 的数字了。不过我们要注意下带上下面的代码✔[这个是必须要在rand()函数前面的]
使用 <time.h> 头文件中的 time() 函数即可得到当前的时间(精确到秒)

srand((unsigned)time(NULL));

然后:就是用 print()  函数实现打印数组。
最后:就是使用 move()  函数实现整该数组中数字的顺序使得数组中所有的奇数位数位于前半部分,所有偶数位于数组后半部分。
那么这个程序就能很好的实现了,快来尝试下吧(๐॔˃̶ᗜ˂̶๐॓)

题目代码​

#define _CRT_SECURE_NO_WARNINGS 1
#define Number 10
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
void print(int *arr, int sz)
{
	int i = 0;
	printf("随机10个整形数组:  ");
	for (i = 0; i < Number; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
}
void move(int arr[],int sz)
{
	int left  = 0; //左下标
	int right = sz - 1; //右下标
	while (left < right)
	{
		//从前往后查找偶数位置,如果是偶数的话交换,如果是奇数的(不交换)走向下一个元素判断是不是奇数。
		while ((left < right) && (arr[left] % 2 == 1))
		{
			left++;
		}
		//从后往前查找奇数位置,如果是奇数的话交换,如果是偶数的(不交换)走向下一个元素判断是不是偶数。
		while ((left < right) && (arr[right] % 2 == 0))
		{
			right--;
		}
		//把找到的值进行交换。
		if (left < right)
		{
			int temp = arr[left];
			arr[left] = arr[right];
			arr[right] = temp;
		}
	}
	printf("查找并且交换完的值:");
	int i = 0;
	for (i = 0; i < Number; i++)
	{
		printf("%d ", arr[i]);
	}
}
int main(void)
{
	srand((unsigned)time(NULL));
	int arr[Number] = { rand() % 10
		, rand() % 10, 
		rand() % 10, 
		rand() % 10, 
		rand() % 10, 
		rand() % 10, 
		rand() % 10, 
		rand() % 10, 
		rand() % 10, 
		rand() % 10 };//由于太长,我们这样写更加清晰。
	int sz = sizeof(arr) / sizeof(arr[0]);
	print(arr,sz);
	move(arr,sz);
	return 0;
}

运行结果

随机10个整形数组:   1 2 3 4 0 5 4 9 0 7
查找并且交换完的值:1 7 3 9 5 0 4 4 0 2

最后⛳

也许有的时候很努力了也达不到预计的效果,也许有的时候怎么做也做不好,也许无数眼泪在夜晚 尝了又尝,也许很多事情不是我们可以掌握的,不过没关系。生命必须有裂缝,阳光才能照的进来,加油💪