- 博客(40)
- 收藏
- 关注
转载 快速排序
快速排序对数组元素进行分区操作,在数组元素中选择一个作为基准值,将其他元素一一和其比较,比基准值小的放在基准值左边,比基准值大的放在基准值右边,再对基准值两边进行分区操作,分别选一个新的基准值进行比较,直到不能再分区。快速排序是不稳定的排序以下为代码演示#include void Swap(int *a,int i,int j){ int tmp = a[i]; a[i] =
2017-08-11 11:04:28 244
转载 归并排序
归并排序是将数组元素分成左右两个部分,对两边分别进行归并排序:把分开后的两部分再各自分成两部分,进行归并排序.....分到不能再分为止以下为代码演示#include void printA(int *a,int len){ int i; for(i = 0; i < len; i++) { printf("%4d",a[i]); } printf("\n");}/
2017-08-11 10:02:32 218
转载 堆排序
堆排序利用二叉树模型,把要排序的元素建成一个类似完全二叉树的样子,将每三个元素中最大的元素调整至这三个结点中根结点的位置,调整后最大元素位于整个树的根结点位置。将根结点的元素与最后一个元素交换,则最大数沉底,将树的长度减一,调整结点位置,重复操作,最后得到排好序的数组。堆排序是不稳定排序。以下为代码演示void Swap(int *a, int i, int j){ int tmp
2017-08-11 09:43:09 298
原创 插入排序改进之二分插入排序
二分插入排序在二分排序基础上进行改进,将抓到的牌与之前抓到的已排好序的牌的中间一张进行比较,缩小比较范围,减少比较次数将数组 a[10] = {7,2,9,4,1,3,8,6,5,0} 从小到大排序并打印结果打印函数void printA(int *a,int len){ int i; for(i = 0; i < len; i++) { printf("%4d",a[i]
2017-08-10 14:45:25 336
原创 插入排序
将数组 a[10] = {7,2,9,4,1,3,8,6,5,0} 从小到大排序并打印结果插入排序类似抓牌,每抓一张牌与前面抓的对比,从右往左,找到第一个比抓到的牌小的的位置,将后面的元素位置依次后移一位,将新元素插入#include void printA(int *a,int len){ int i; for(i = 0; i < len; i++) { print
2017-08-10 11:25:56 158
原创 选择排序
将数组 a[10] = {7,2,9,4,1,3,8,6,5,0}从小到大排序并打印结果打印函数void printA(int *a,int len){ int i; for(i = 0; i < len; i++) { printf("%4d",a[i]); } printf("\n");}交换函数void Swap(int *a,int i,int j){
2017-08-10 10:38:25 180
原创 冒泡排序及其改进算法
将数组 a[10] = {7,2,9,4,1,3,8,6,5,0}从小到大排序并打印结果打印函数:void printA(int *a,int len){ int i; for(i = 0; i < len; i++) { printf("%4d",a[i]); } printf("\n");}交换两个元素的位置:将数组首地址及要交换的元素下标作为参数传入vo
2017-08-10 09:55:48 314
转载 文件操作函数的使用和区别
一、fopen 与 fclose 函数的使用fopen 函数用于打开一个文件函数定义:FILE *fopen(const char *filename, const char *mode);fopen 的返回值是一个文件指针,FILE 是在stdio.h中定义的结构体类型,封装了与文件相关的信息:struct _iobuf { cha
2017-08-06 19:13:12 415
转载 srand函数与rand函数的使用方法及区别
rand函数函数头文件:stdlib.h函数定义:int rand(void)函数功能:产生一个随机数函数说明:rand函数产生的随机数严格意义讲不是真正的随机数,它里面采用了线性同余法计算出随机数,所谓的线性同语法简单来说就是使用了一个公式,该方法有个最大周期M,也就是说该方法实在一定的范围内生成一串数字,不过这个M一般来说比较大,所以正常使用时一般看起来就是产生
2017-08-06 19:07:46 4884
原创 程序功能:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转储到链表的各个结点中。
#include #include struct node{int num;struct node *next; };typedef struct node Node;typedef struct node *Link;void CreatLink(Link *head){*head = NULL;}void IsMallocOk
2017-08-06 18:59:00 762
原创 编写函数fun(int *a, int n, int *odd, int *even)
编写函数fun(int *a, int n, int *odd, int *even),功能是: 求出数组a[]中所有奇数之和以及所有偶数之和。 并利用指针odd返回奇数之和,利用指针even返回偶数之和。 例如:a[]的值依次为:1,9,2,3,11,6; 则利用指针odd返回奇数之和24;利用指针even 返回偶数之和 8。#include
2017-08-06 18:58:33 3432
原创 编写函数int stat(int a[],int n,int c[][2])
编写函数int stat(int a[],int n,int c[][2])。 a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。 函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位的整数, 从而生成有n/2个元素组成的整数数列;统计该数列中不同整数各自出现的次数, 并将统计结果保存到c指向的二维数组中。函数返回不同整数的个数。#includ
2017-08-06 18:58:21 656
原创 编写函数void count(char a[],char w[][10],int n,int b[])。
编写函数void count(char a[],char w[][10],int n,int b[])。 功能是:统计w指向的数组中的n个单词在a指向的字符串中各自出现的次数 将非字母字符看作单词分割符,拧将统计结果依次保存在b指向的数组中#include #define N 4int mystrlen(const char *str){
2017-08-06 18:58:02 2478
原创 对一个二维数组中的数据排序
对一个二维数组中的数据排序,方法如下: 将整个数组中值最小的元素所在行调整为数组第一行, 将除第一行外的行中最小元素所在行调整为第2行, 将除第1,2行外的行中最小值元素所在行调整为第3行,以此类推#include #define N 4int FindMinLine(int Arr[][N], int CurrenLine)
2017-08-06 18:57:47 1013
原创 找出7个默森尼数。法国数学家默森尼曾提出下列公式:Mp=2^p-1。
找出7个默森尼数。法国数学家默森尼曾提出下列公式:Mp=2^p-1。 当p是素数并且Mp也是素数时,称Mp为默森尼数, 例如,p=5,Mp=2^5-1=31,5和31都是素数,因此31是默森尼数; 而Mp=2^11-1=2047,11是素数,2047不是素数,因此2047不是默森尼数#include #include int Judg
2017-08-06 18:57:33 647
原创 合并两个字符集合为一个新集合,每个字符串在新集合中仅出现一次,函数返回新集合中字符串
合并两个字符集合为一个新集合,每个字符串在新集合中仅出现一次,函数返回新集合中字符串。 如: s1集合{“while”,”for”,”switch”,”if”,”continue”} s2集合{“for”,”case”,”do”,”else”,”char”,”switch”} 运行结果: while for swit
2017-08-06 18:56:53 699
原创 找出符合以下条件的Troitsky数,将该数的首位数字移动到末位数字之后得到的数是原数的整数倍
找出符合以下条件的Troitsky数,将该数的首位数字移动到末位数字之后得到的数是原数的整数倍 例如:将142857的首位数字1移动到末位之后得到的数是428571,而428571=3*142857,因此142857 是Troitsky数 编程要求: (1) 编写函数int Troitsky(long a[]),其功能是求出10000以内的所有Troitsky数,
2017-08-06 18:56:37 707
原创 对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序
对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序 例如 3行3列 的二维数组 34,85,72,93,49,28,48,12,43 输出 34, 72, 85 93, 49, 28 12, 43, 48#include #define N 4void Swap (int *a, int *b
2017-08-06 18:56:04 906
原创 编写函数void change(char *a,char *b,char*c)。 函数功能是首先把b指向的字符串逆向存放 然后将a指向的字符串和b指向的字符串按排列顺序交叉合并到c指向的数
编写函数void change(char *a,char *b,char*c)。 函数功能是首先把b指向的字符串逆向存放 然后将a指向的字符串和b指向的字符串按排列顺序交叉合并到c指向的数组中 两个字符串中过长的剩余字符接在c指向数组的尾部。#include #include int mystrlen (char *str) /
2017-08-05 18:45:16 982
原创 查找介于n1与n2(0<n1<n2<32768)之间所有满足下列条件的整数: (1)该数的十进制表示中有且仅有两个相同的数字位; (2)该数是素数。
查找介于n1与n2(0 (1)该数的十进制表示中有且仅有两个相同的数字位; (2)该数是素数。#include void Search(int n1, int n2){int i = 0, j = 0, k = 0;int m = 0, n = 0;int temp = 0;int t = 0;int flag = 0;
2017-08-05 18:44:48 1242 1
原创 字符串数组的冒泡排序,从小到大
字符串数组的冒泡排序,从小到大例如 hello good suqian nice world 输出 good hello nice suqian world#include #include #define LEN 5int mystrlen(char *str) //计算字符串长度{if (str == NULL){ret
2017-08-05 18:44:03 2020
原创 将整数转换为相应的一个字符数组
将整数转换为相应的一个字符数组。分析:从个位提取数字,组合字符 符号位的处理 。12345=>"12345"#include int IntToStr(int num, char *str){if (str == NULL){return -1;}int len = 0;int count = 0;int temp
2017-08-05 18:43:34 1366
原创 从一个字符数组中读出相应的整数、实数
从一个字符数组中读出相应的整数、实数例如qwe32.56dgh456ml9.4sad 应该输出32.56 456 19.4#include int ReadFloatInt(char *str, char (*outbuf)[10]){if (str == NULL || outbuf == NULL){return -1;}
2017-08-05 18:43:10 414
原创 自我实现itoa(整形转字符串)
自我实现itoa(整形转字符串)如: 123 转换成 “123”“-123” 转换成 -123#include int IntegerToString(int num, char *str){if (str == NULL){return -1;}int temp = num; //先定义临时变量记录numint len
2017-08-05 18:42:44 378
原创 自我实现atoi(字符串转整形)
自我实现atoi(字符串转整形)如:“123”转换成 123 “-123” 转换成 -123#include #include int StringToInteger(char *str){int flag = 1;int num = 0; //最后的整型数char *p = str; if (str ==
2017-08-05 18:41:01 315
原创 给一个字符串,有大小写字母,要求写一个函数把小写字母放在前面 大写字母放在后面,尽量使用最小空间,时间复杂度。(即用指针做)。 如:aAbBcCdD ---àabcdABCD
给一个字符串,有大小写字母,要求写一个函数把小写字母放在前面大写字母放在后面,尽量使用最小空间,时间复杂度。(即用指针做)。如:aAbBcCdD ---àabcdABCD#include #include int SmallToCaptial( char *str, char *outbuf ){char *p = str;if (str ==
2017-08-05 18:40:27 2800 1
原创 统计一个字符串中各个字符的百分比:
统计一个字符串中各个字符的百分比:如输入字符串asdfs a ----- 20%s ----- 40%d -----20%f -----20%#include #include #include #define N 1024//asdfs void count_num_char(char *src,
2017-08-05 18:40:06 1444
原创 求100以内的素数,全部打印出来
#includevoid Prime(void){int i = 0;int j = 0;int flag = 0;pritf ("Prime numbers are : \n");for (i = 2; i {for (j = 2; j {if (i % j == 0){flag = 1;break;}}if (fl
2017-08-05 18:38:54 381
原创 编写程序STUDENT *Create(STUDENT studs[],int n)。 STUDENT是一个结构类型,包含姓名、成绩和指针域。
编写程序STUDENT *Create(STUDENT studs[],int n)。 STUDENT是一个结构类型,包含姓名、成绩和指针域。 studs数组中存储了n个STUDENT记录。 create函数的功能是根据studs数组建立一个链表, 链表中结点按成绩降序排列,函数返回链表头指针。#include #include struct s
2017-08-04 19:43:25 1243
原创 输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.
输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.提示:帧头和帧尾分别是head和tail 字符串”asdheadhauboisoktail”中headhauboisoktail是合法帧#include int mystrlen(const char *str){int length = 0;whi
2017-08-04 15:18:10 619
原创 编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”; 及将句子中的单词位置倒置,而不改变单词内部结构.
#include int mystrlen(const char *str){int length = 0;while (*str++){length++;}return length;}void RevStr(char *str, int len) //字符串倒置函数{int i = 0;char temp = 0;f
2017-08-04 15:16:13 1061
原创 输入一个字符串,计算字符串中子串出现的次数
#include int mystrlen(const char *str){int length = 0;while (*str++){length++;}return length;}char* mystrstr(const char *str, const char *sub) //寻找字串,找到则返回该地址{
2017-08-04 15:13:34 1219
原创 请编写一个C函数,该函数可以实现将一个整数转为任意进制的字符串输出
#include void Transfer(int num, int radix, int *Arr){int i = 0;int temp = 0;if (radix == 2) //二进制{while (num){Arr[i++] = num % 2;num /= 2;}printf ("num = ");while (i)
2017-08-04 15:10:53 398
原创 请编写一个C函数,该函数将一个字符串逆序
#include int mystrlen(const char *str) //计算字符串的长度{int length = 0;if (str == NULL){return -1;}while (*str++){length++;}return length;}void RevStr(char *str){int
2017-08-04 15:08:15 670
原创 题目: 一个数如果恰好等于它的因子之和,这个数被成为”完数” 例如:6=1+2+3.请编程找出1000以内的完数
#includevoid PerfectNum(void){int i = 0;int j = 0;int sum = 0;for(i = 2;i { sum = 0; for(j = 1;j {if(i % j == 0){sum += j;}}if(sum == i){printf("%
2017-08-04 15:04:18 2269
原创 求100以内的素数,全部打印出来
#includevoid Prime(void){int i = 0;int j = 0;int flag = 0;printf ("Prime numbers are : \n");for (i = 2; i {for (j = 2; j {if (i % j == 0){flag = 1;break;}}if (fla
2017-08-04 14:59:36 286
原创 输入5个数(含负数、小数)将它们按由小到大的顺序排列起来 提示:需要排数的数字通过参数传递进来, 例如:输入:./a.out -1 2.1 -3 5 7输出: -3 -1 2.1 5 7
#include#define False 0#define True 1double StrToFloat(const char *str){if (str == NULL){return -1;}double s = 0.0;double d = 10.0;int flag = False;while (*str == ' ')
2017-08-04 14:55:12 515
原创 有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.
#includevoid LastNum(int *Arr, int n){int qw = 0; //圈外的人数int count = 0; //报数计数器int i = 0;for (i = 0; i {Arr[i] = i + 1; //给这n个人编号}printf ("out number is : ");i = 0;whil
2017-08-04 14:51:51 811
原创 统计1-n有多少个9
n通过参数传入,对n除以10取余后与9比较#include int main(){int n;printf("Please Input n:\n");scanf("%d",&n);int i,j,sum;for(i=0;i{j=i;if(j!=0){if(j%10==9){sum++;}j=j/10;}}pri
2017-08-04 14:44:31 556
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人