C语言:调整数组使奇数全部都位于偶数前面

这篇具有很好参考价值的文章主要介绍了C语言:调整数组使奇数全部都位于偶数前面。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目:

输入一个整数数组实现一个函数

调整数组中数字的顺序使得数组中所有的奇数位于数组的前半部分

所有偶数位于数组的后半部分

奇数在数组面,偶数在数组面)

                    

 =========================================================================

                       

思路:

总体思路:

(一).

设置 数组arr

         

计算数组元素个数

int sz = sizeof(arr) / sizeof(arr[0]);

             

设置 left right 左右下标

int left = 0; -- 左下标,从左往右偶数

int right = sz - 1; -- 右下标,从右往左奇数

                  

(二).

进行调换,奇数放前,偶数放后,

使用 while循环,当 left < right 说明数组还有元素,进行判断调换

              

内嵌第一个 while循环,从左往右偶数

如果 left < right arr[left] % 2 == 1

说明此时 left下标 指向的元素是 奇数

进行循环 left++下标加一判断后一位是不是偶数

              

内嵌第二个 while循环,从右往左奇数

如果 left < rightarr[left] % 2 == 0

说明此时 right下标 指向的元素是 偶数

进行循环right-- 下标减一判断前一位是不是奇数

                   

执行上面两个步骤后left 找到了 偶数right 找到了 奇数开始进行调换

如果 left < right,数组还有元素,就进行调换

创建 临时变量tmp 进行 元素调换

调换后调整左右下标

            

(三).

调换后进行数组打印

                


                 

第一步:

(1).

设置 数组arr

         

(2).

计算数组元素个数

int sz = sizeof(arr) / sizeof(arr[0]);

             

(3).

设置 left right 左右下标

int left = 0; -- 左下标,从左往右偶数

int right = sz - 1; -- 右下标,从右往左奇数

                     

实现代码:

#include <stdio.h>
int main() 
{
	//设置数组:
	int arr[] = { 1,2,3,4,5,6,7,8,9 };

	//计算数组元素个数:
	int sz = sizeof(arr) / sizeof(arr[0]);

	//设置左右下标:
	int left = 0; //左下标,从左往右找 偶数
	int right = sz - 1; //右下标,从右往左找 奇数

	return 0;
}

实现图片:

C语言:调整数组使奇数全部都位于偶数前面,没事做道题:C语言,c语言,c#,c++

                 


                 

第二步:

(1).

进行调换,奇数放前,偶数放后,

使用 while循环,当 left < right 说明数组还有元素,进行判断调换

              

(2).

内嵌第一个 while循环,从左往右偶数

如果 left < right arr[left] % 2 == 1

说明此时 left下标 指向的元素是 奇数

进行循环 left++下标加一判断后一位是不是偶数

              

(3).

内嵌第二个 while循环,从右往左奇数

如果 left < rightarr[left] % 2 == 0

说明此时 right下标 指向的元素是 偶数

进行循环right-- 下标减一判断前一位是不是奇数

                   

(4).

执行上面两个步骤后left 找到了 偶数right 找到了 奇数开始进行调换

如果 left < right,数组还有元素,就进行调换

创建 临时变量tmp 进行 元素调换

调换后调整左右下标

                     

实现代码:

#include <stdio.h>
int main() 
{
	//设置数组:
	int arr[] = { 1,2,3,4,5,6,7,8,9 };

	//计算数组元素个数:
	int sz = sizeof(arr) / sizeof(arr[0]);

	//设置左右下标:
	int left = 0; //左下标,从左往右找 偶数
	int right = sz - 1; //右下标,从右往左找 奇数

	//进行调换,奇数放前,偶数放后:
	while (left < right)
	//当数组还有元素,进行判断调换
	{
		//从左往右找偶数:
		while ((left < right) && arr[left] % 2 == 1)
		{
			//找到奇数就跳过,left++,但不跳过right,防止越界
			left++;
		}

		//从右往左找奇数:
		while ((left < right) && arr[right] % 2 == 0)
		{
			//找到偶数就跳过,right--,但不跳过left,防止越界
			right--;
		}

		//此时left找到了偶数,right找到了奇数,开始进行调换:
		if (left < right)
		{
			//进行调换
			int tmp = arr[left];
			arr[left] = arr[right];
			arr[right] = tmp;
			//调换后跳过这对值
			left++;
			right--;
		}
	}

	return 0;
}

实现图片:

C语言:调整数组使奇数全部都位于偶数前面,没事做道题:C语言,c语言,c#,c++

                 


                 

第三步:

调换后进行数组打印

                     

实现代码:

#include <stdio.h>
int main() 
{
	//设置数组:
	int arr[] = { 1,2,3,4,5,6,7,8,9 };

	//计算数组元素个数:
	int sz = sizeof(arr) / sizeof(arr[0]);

	//设置左右下标:
	int left = 0; //左下标,从左往右找 偶数
	int right = sz - 1; //右下标,从右往左找 奇数

	//进行调换,奇数放前,偶数放后:
	while (left < right)
	//当数组还有元素,进行判断调换
	{
		//从左往右找偶数:
		while ((left < right) && arr[left] % 2 == 1)
		{
			//找到奇数就跳过,left++,但不跳过right,防止越界
			left++;
		}

		//从右往左找奇数:
		while ((left < right) && arr[right] % 2 == 0)
		{
			//找到偶数就跳过,right--,但不跳过left,防止越界
			right--;
		}

		//此时left找到了偶数,right找到了奇数,开始进行调换:
		if (left < right)
		{
			//进行调换
			int tmp = arr[left];
			arr[left] = arr[right];
			arr[right] = tmp;
			//调换后跳过这对值
			left++;
			right--;
		}
	}

	//调换后进行数组打印:
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}

	return 0;
}

实现图片:

C语言:调整数组使奇数全部都位于偶数前面,没事做道题:C语言,c语言,c#,c++

                    

最终代码和实现效果

最终代码:

#include <stdio.h>
int main() 
{
	//设置数组:
	int arr[] = { 1,2,3,4,5,6,7,8,9 };

	//计算数组元素个数:
	int sz = sizeof(arr) / sizeof(arr[0]);

	//设置左右下标:
	int left = 0; //左下标,从左往右找 偶数
	int right = sz - 1; //右下标,从右往左找 奇数

	//进行调换,奇数放前,偶数放后:
	while (left < right)
	//当数组还有元素,进行判断调换
	{
		//从左往右找偶数:
		while ((left < right) && arr[left] % 2 == 1)
		{
			//找到奇数就跳过,left++,但不跳过right,防止越界
			left++;
		}

		//从右往左找奇数:
		while ((left < right) && arr[right] % 2 == 0)
		{
			//找到偶数就跳过,right--,但不跳过left,防止越界
			right--;
		}

		//此时left找到了偶数,right找到了奇数,开始进行调换:
		if (left < right)
		{
			//进行调换
			int tmp = arr[left];
			arr[left] = arr[right];
			arr[right] = tmp;
			//调换后跳过这对值
			left++;
			right--;
		}
	}

	//调换后进行数组打印:
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}

	return 0;
}

实现效果:

C语言:调整数组使奇数全部都位于偶数前面,没事做道题:C语言,c语言,c#,c++文章来源地址https://www.toymoban.com/news/detail-538622.html

到了这里,关于C语言:调整数组使奇数全部都位于偶数前面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【css】css奇数、偶数、指定数选择器:

    :nth-child(n) 选择器匹配属于其父元素的第 N 个子元素,不论元素的类型 :nth-of-type(n) 匹配同类型中的第n个同级兄弟元素 区别 : nth-child(n) : 匹配父元素中的第 n 个子元素,元素类型没有限制。 nth-of-type(n) : 匹配同类型中的第n个同级兄弟元素。 n可以是一个数字,一个,

    2024年02月09日
    浏览(38)
  • Python 函数 1~n 的奇数和 偶数和

    需求: 封装一个函数,从1 到n 之间 奇数的累加 求和 封装一个函数,从1 到n 之间 偶数的累加 求和 n为形参 封装一个函数,从1 到n 的累加 求和 n为形参 奇数 x%2 == 1 偶数 y%2 == 0 “”\\\" for 变量 in range(循环次数): 重复执行的代码 #range(n) 会生成 [0, n) 之间的整数序列,不包含 n 每

    2024年02月12日
    浏览(54)
  • verilog实现分频(奇数分频和偶数分频,通用版)

    大家好,最近写了一些分频器的设计,发现奇数分频和偶数分频是比较常用分频效果,所以写了一个比较简单的分频代码, 适用于奇数分频和偶数分频(不考虑占空比) ,代码已经经过测试,需要可自取。 一、上代码 二、上验证代码 三、上仿真结果 图1:6分频效果(mult

    2024年02月13日
    浏览(37)
  • FPGA基础设计(二):任意分频器(奇数,偶数,小数)

    FPGA开发板上一般只有一个晶振,即一种时钟频率。数字系统设计中,时间的计算都要以时钟作为基本单元,对基准时钟进行不同倍数的分频而得到各模块所需时钟频率,可通过Verilog代码实现;倍频可通过锁相环【PLL】实现。 把输入信号的频率变成成倍的低于输入频率的输出

    2024年02月01日
    浏览(39)
  • Verilog时钟分频(偶数分频、奇数分频、小数分频、半整数分频)

    偶数分频最容易实现,可以用计数器实现。计数值小的时候也可以使用DFF直接完成。这里使用计数器实现,计数达到分频系数一半的时候进行翻转(占空比为50%)。对应: 牛客 VL37 时钟分频(偶数) 仿真结果如下 不要求占空比为50%,可以与偶数分频一样,根据计数值进行波形

    2024年01月23日
    浏览(42)
  • 给定N个正整数,请统计奇数和偶数各有多少个?

    输入格式: 输入第一行给出一个正整 N (≤1000);第2行给出 N 个非负整数,以空格分隔。 输出格式: 在一行中先后输出奇数的个数、偶数的个数。中间以1个空格分隔。 输入样例: 输出样例:   运行结果:    

    2024年02月06日
    浏览(40)
  • Python,使用for循环计算0到一百的奇数或偶数之和。

           初始化变量 i , Sum , Sum_1 为0。         使用 for 循环遍历1到100之间的所有数字。         判断每个数是否是奇数或者是偶数:         如果 i % 2 的余数不为0,则 i 是奇数,将其累加到变量 Sum 中。         如果 i % 2 的余数为0,则说明 i 是偶数,将

    2024年04月27日
    浏览(39)
  • Python,使用for循环计算0到一百的奇数或偶数之和

    代码解析        初始化变量i,Sum,Sum_1为0。         使用for循环遍历1到100之间的所有数字。         判断每个数是否是奇数或者是偶数:         如果i % 2的余数不为0,则i是奇数,将其累加到变量Sum中。         如果i % 2的余数为0,则说明i是偶数,将其累加到变量S

    2024年04月28日
    浏览(34)
  • 4种FPGA时钟分频 【附源码】:1.偶数分频;2.奇数分频(占空比50%);3.奇数分频(任意无占空比);4.小数分频;

    题目来源于牛客网,完整工程源码:https://github.com/ningbo99128/verilog 目录 VL37 偶数分频 VL40 奇数分频(占空比50%) VL42 奇数分频(任意无占空比) VL41 任意小数分频(较难) 题目介绍 请使用D触发器设计一个同时输出2/4/8分频的50%占空比的时钟分频器;注意rst为低电平复位。

    2024年01月17日
    浏览(37)
  • for循环的输出控制(输出1-100中的奇数、偶数、倍数以及公倍数)

    一、输出1-100中所有的奇数: i = 1 while i = 100:     if i%2 == 1:         print(i)     i += 1   法二: for i in range(1,101):     if i%2 == 1:         print(i)   法三: for i in range(1,101,2):     print(i)     二、输出1-100中所有的偶数: for i in range(1,101):     if i % 2 == 0:         print(i)   三、

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包