自用答案

这篇博客介绍了奇偶交换排序算法的实现过程,并通过示例展示了算法如何操作数组。此外,博主还探讨了如何计算斐波那契数列分数序列的前20项和,利用数学规律进行编程求解。最后,讨论了使用指针作为函数参数来完成三个数排序的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.奇偶交换排序算法

举例:待排数组[6 2 4 1 5 9]

第一次比较奇数列,奇数列与它的邻居偶数列比较,如6和2比,4和1比,5和9比

[6 2 4 1 5 9]

交换后变成

[2 6 1 4 5 9]

第二次比较偶数列,即6和1比,5和5比

[2 6 1 4 5 9]

交换后变成

[2 1 6 4 5 9]

第三趟又是奇数列,选择的是2,6,5分别与它们的邻居列比较

[2 1 6 4 5 9]

交换后

[1 2 4 6 5 9]

第四趟偶数列

[1 2 4 6 5 9]

一次交换

[1 2 4 5 6 9]

以下表现其单处理器算法,类似冒泡排序,较为简单但效率并不特别高。

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>  
void swap(int *a, int *b)
{
    int t;
    t = *a;
    *a = *b;
    *b = t;
}
void printArray(int a[], int count)
{
    int i;
    for(i = 0; i < count; i++)
        printf("%d ",a[i]);
    printf("\n");
}
void Odd_even_sort(int a[], int size)  
{
    bool sorted = false;
    while(!sorted)
    {
        sorted = true;
        for(int i = 1; i < size - 1; i += 2)
        {
            if(a[i] > a[i + 1])
            {
                swap(&a[i], &a[i + 1]);
                sorted = false;
            }
        }
        for(int i = 0; i < size - 1; i += 2)
        {
            if(a[i] > a[i + 1])
            {
                swap(&a[i], &a[i+1]);
                sorted = false;
            }
        }
    }
}
int main(void)   
{
    int a[] = {3, 5, 1, 6, 9, 7, 8, 0, 11};
    int n = sizeof(a) / sizeof(*a);
    Odd_even_sort(a, n);
    printArray(a, n);
    return 0;
}
2.设圆半径r=1.5,圆柱高h=3
// 设圆半径r = 1.5,圆柱高h = 3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱表面积,圆柱体积
// 要求:用scanf输入数据,取小数点后两位
#include <stdio.h>
int main()
{
	float r,h;
	float c,s,sq,vq,sv,vz;
	float pai = 3.1415926;
	printf("请输入圆半径:");
	scanf("%f",&r);
	printf("请输入圆柱高:");
	scanf("%f",&h);
	c = 2 * pai * r;
	s = pai * r * r;
	sq = 4 * pai * r * r;
	vq = ( 4 / 3 ) * pai * r * r * r;
    sz = 2*s+c*h;
	vz = s * h;
	printf("圆周长是:%4.2f\n",c);
	printf("圆面积是:%4.2f\n",s);
	printf("圆球表面积是:%4.2f\n",sq);
	printf("圆球体积是:%4.2f\n",vq);
    printf("圆柱表面积是:%4.2f\n",sz);
	printf("圆柱体积是:%4.2f\n",vz);
	return 0;
}
3.有一个分数序列2/1,3/2,5/3,8/5,13/8,21/13,···求出这个数列的前20项和。

看到分数,变量类型要用浮点型,格式化输出也要用相对应的输出符号

首先,找出这串数字的规律

1 2 3 5 8 13 21···

将数字这样展开并去掉重复的数字之后,很容易可以看出,从第三项开始,当前项等于前两项之和(和斐波那契数列有点像,所以借用斐波那契数列的思路)。

(以前3个数字1,2,3为例)

(1)计算当前分数<2/1>的值

(2)将当前数字<3>的前一个<2>的前一个数字<1>先存放在tmp<tmp=1>中

(3)将当前数字<3>的前一个<2>赋值给下一个分数<3/2>的分子< i >

(4)然后将前两个数字<1>、<2>的和<3>赋值给下一个分数< 3/2 >的分母< j >

(5)计算前n项的和

将以上内容放在一个循环中,循环20次,也就是计算出前20项的和。

#include<stdio.h>
int main(){
	double i = 1.0, j = 2.0;
	int n,count = 0;
	double sum = 0;
    printf("请输入n的值:");
	scanf("%d",&n);
	while (count < n){
		double ret = j / i;//保存当前项的结果
		double tmp = i;
				i = j;
				j = tmp + j; 
				sum += ret;//前n项的累加和
				count++;
	}
	printf("sum=%lf", sum);
	return 0;

}
4.用指针作为函数形参,完成三个数的排序
#include<stdio.h>
int sort(int *a,int *b,int *c)
{
   int d;
   if(*a>*b){
      d=*a;*a=*b;*b=d;
   }
   if(*a>*c){
      d=*a;*a=*c;*c=d;
   }
   if(*b>*c){
      d=*b;*b=*c;*c=d;
      }
}
void main(){
   int a,b,c,*x,*y,*z;
   printf("输入3个整数:");
   scanf("%d,%d,%d",&a,&b,&c);
   x=&a;
   y=&b;
   z=&c;
   sort(x,y,z);
   printf("这个三个数从小到大排列是:%d,%d,%d\n",a,b,c);
}
目录: 01.《交换那些事儿》- 基础维护篇 - 流统 02.《交换那些事儿》- 基础维护篇 - 镜像 03.《交换那些事儿》- 基础维护篇 - IRF升级指导 04.《交换那些事儿》- 基础维护篇 - IRF替换指导 05.《交换那些事儿》- 基础维护篇 - 机房环境不良导致设备故障案例 06.《交换那些事儿》- 基础维护篇 - IPv6地址分类及配置方法 07.《交换那些事儿》- 基础维护篇 - IPv6邻居发现及状态迁移机制 08.《交换那些事儿》- 基础维护篇 - EPON网络安装维护小贴士 09.《交换那些事儿》- 基础维护篇 - 揭秘STP Dispute保护机制 10.《交换那些事儿》- 基础维护篇 - 常用STP保护功能 11.《交换那些事儿》- 基础维护篇 - STP TC问题排查与优化 12.《交换那些事儿》- 基础维护篇 - 常见问题答复集(一) 13.《交换那些事儿》- 基础维护篇 - 常见问题答复集(二) 14.《交换那些事儿》- 基础维护篇 - 常见问题答复集(三) 15.《交换那些事儿》- 基础维护篇 - 常见问题答复集(四) 16.《交换那些事儿》- 基础维护篇 - 常见问题答复集(五) 17.《交换那些事儿》- 基础维护篇 - 常见问题答复集(六) 18.《交换那些事儿》- 基础维护篇 - 常见问题答复集(七) 19.《交换那些事儿》- 基础维护篇 - 交换机License相关小知识 20.《交换那些事儿》- 技术专题篇 - VXLAN概述及使用场景 21.《交换那些事儿》- 技术专题篇 - 二层手工VXLAN基本配置 22.《交换那些事儿》- 技术专题篇 - EVPN路由消息及三类RT功能介绍 23.《交换那些事儿》- 技术专题篇 - DRNI基本概念及流量转发 24.《交换那些事儿》 -技术专题篇 - DRNI部署网络模型介绍
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值