当前位置: 首页 > news >正文

寒假作业-day5

1>现有无序序列数组为23,24,12,5,33,5347,请使用以下排序实现编程
函数1:请使用冒泡排序实现升序排序
函数2:请使用简单选择排序实现升序排序
函数3:请使用直接插入排序实现升序排序
函数4:请使用插入排序实现升序排序

代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>void bubble(int a[],int n){for(int i=1;i<n;i++){for(int j=0;j<n-i;j++){if(a[j]>a[j+1]){int temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}}
}
void simple(int b[],int n){for(int i=0;i<n-1;i++){int min=i;for(int j=i+1;j<n;j++){if(b[min]>b[j])min=j;}if(min!=i){int temp=b[min];b[min]=b[i];b[i]=temp;}}
}
void dir_insert(int c[],int n){int j;for(int i=1;i<n;i++){int temp=c[i];for(j=i-1;j>=0&&c[j]>temp;j--){c[j+1]=c[j];}c[j+1]=temp;}
}int sort(int arr[],int low,int high){int key=arr[low];while(low<high){while(low<high&&key<=arr[high])high--;arr[low]=arr[high];while(low<high&&key>=arr[low])low++;arr[high]=arr[low];}arr[low]=key;return low;
}
void quick(int arr[],int low,int high){if(low>=high)return;int mid=sort(arr,low,high);quick(arr,low,mid-1);quick(arr,mid+1,high);
}void output(int arr[],int len){for(int i=0;i<len;i++)printf("%d\t",arr[i]);puts("");
}
int main(int argc,const char *argv[]){int a[]={23,24,12,5,33,5,34,7};int len=sizeof(a)/sizeof(a[0]);bubble(a,len);output(a,len);int b[]={23,24,12,5,33,5,34,7};simple(b,len);output(b,len);int c[]={23,24,12,5,33,5,34,7};dir_insert(c,len);output(c,len);int d[]={23,24,12,5,33,5,34,7};quick(d,0,len-1);output(d,len);return 0;
}

结果:

2>请编程实现
写个递归函数 DigitSum(n),输入一个非负整数,返回组成它的数字之和
例如:调用 DigitSum(1729),则返回 1+7+2+9,它的和是 19
输入1729,输出 19

代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>int DigitSum(int n){if(n==0)return 0;int temp=n;temp%=10;n/=10;return temp+DigitSum(n);
}int main(int argc,const char *argv[]){int num=1729;printf("%d\n",DigitSum(num));return 0;
}

结果:

3>请编程实现
写一个宏,可以将一个 int 型整数的二进制位的奇数位和偶数位交换

代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SWAP_BIT(n) (n=((n&0xaaaaaaaa)>>1)+((n&0x55555555)<<1))int main()
{int a = 10;//00000000000000000000000000001010 ->10// 其奇偶位交换后得 ://00000000000000000000000000000101 ->5SWAP_BIT(a);printf("a=%d\n", a);return 0;
}

结果:

相关文章:

  • Spring的学习(上)
  • 性能评测|虚拟化和裸金属 K8s 哪个性能更好?
  • C++:二叉搜索树模拟实现(KV模型)
  • 计算机网络相关题目及答案(第六章)
  • 2月6日作业
  • HARRYPOTTER: FAWKES
  • 在angular12中proxy.conf.json中配置详解
  • 线性矩阵不等式LMI与李雅普诺夫Lyapunov稳定性
  • 时序预测 | MATLAB实现基于CNN-GRU-AdaBoost卷积门控循环单元结合AdaBoost时间序列预测
  • 数据结构-->线性表-->单链表
  • 【Java数据结构】单向 不带头 非循环 链表实现
  • 使用 Python、Elasticsearch 和 Kibana 分析波士顿凯尔特人队
  • 【开源】SpringBoot框架开发校园电商物流云平台
  • 【开源】基于JAVA+Vue+SpringBoot的数据可视化的智慧河南大屏
  • lnmp指令
  • [Vue CLI 3] 配置解析之 css.extract
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • ERLANG 网工修炼笔记 ---- UDP
  • gf框架之分页模块(五) - 自定义分页
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Java-详解HashMap
  • mysql 5.6 原生Online DDL解析
  • PHP 7 修改了什么呢 -- 2
  • react 代码优化(一) ——事件处理
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 学习ES6 变量的解构赋值
  • 译米田引理
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • #Linux(make工具和makefile文件以及makefile语法)
  • #pragma once
  • #宝哥教你#查看jquery绑定的事件函数
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (Note)C++中的继承方式
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (多级缓存)多级缓存
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (九十四)函数和二维数组
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (五)关系数据库标准语言SQL
  • (小白学Java)Java简介和基本配置
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转载)利用webkit抓取动态网页和链接
  • **PHP分步表单提交思路(分页表单提交)
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .NET 4.0中的泛型协变和反变
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET/C# 的字符串暂存池
  • @Autowired 与@Resource的区别
  • @Autowired标签与 @Resource标签 的区别
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • [ IO.File ] FileSystemWatcher
  • [20150904]exp slow.txt
  • [20190401]关于semtimedop函数调用.txt
  • [BZOJ1010] [HNOI2008] 玩具装箱toy (斜率优化)