c语言函数

八种常用排序算法 - C语言

狂风中的少年 提交于 2019-12-26 22:58:51
文章目录 数据结构之排序算法 一、 实验目的 二、 实验内容 三、 实验工具 四、 实验代码 五、 实验结果 六、 总结与思考 数据结构之排序算法 一、 实验目的 了解排序的相关概念,理解各种排序方法的思想与排序过程,掌握各种排序方法的时间复杂度分析,实现各种排序算法。 二、 实验内容 通过编写程序,实现希尔排序、快速排序、堆排序和归并排序等算法。具体步骤如下: 在主函数中输入线性序列和关键字; 创建实现希尔排序、快速排序、堆排序和归并排序的子函数; 在主函数中,通过switch语句调用相关函数,实现排序。 三、 实验工具 Dev - C++ 四、 实验代码 //Authors:xiaobei # include <stdio.h> # include <stdlib.h> # define MAXSIZE 20 typedef int KeyType ; typedef char InfoType ; typedef struct { KeyType key ; InfoType otherinfo ; } RedType ; typedef struct { RedType r [ MAXSIZE + 1 ] ; int length ; } SqList ; //函数创建顺序表 int CreateSq ( SqList & L ) { int i , length ;

指针

旧巷老猫 提交于 2019-12-26 18:20:53
前言 这不是我第一次写关于C指针的文章了,只是因为指针对于C来说太重要,而且随着自己编程经历越多,对指针的理解越多,因此有了本文。然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识。所以我想通过一篇文章来尽可能的讲解指针,以对得起这个文章的标题吧。 为什么需要指针? 指针解决了一些编程中基本的问题。 第一,指针的使用使得不同区域的代码可以轻易的共享内存数据。当然你也可以通过数据的复制达到相同的效果, 但是这样往往效率不太好,因为诸如结构体等大型数据,占用的字节数多,复制很消耗性能。但使用指针就可以很好的避免这个问题,因为任何类型的指针占用的字节数都是一样的(根据平台不同,有4字节或者8字节或者其他可能)。 第二,指针使得一些复杂的链接性的数据结构的构建成为可能,比如链表,链式二叉树等等。 第三,有些操作必须使用指针。如操作申请的堆内存。还有: C语言中的一切函数调用中,值传递都是“按值传递(pass by value)”的,如果我们要在函数中修改被传递过来的对象,就必须通过这个对象的指针来完成。 指针是什么? 我们指知道:C语言中的数组是指 一类 类型,数组具体区分为 int 类型数组,double类型数组,char数组 等等。同样指针 这个概念也泛指 一类 数据类型,int指针类型,double指针类型,char指针类型等等。

C语言博客作业05--指针

女生的网名这么多〃 提交于 2019-12-25 03:26:39
1.本章学习总结 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 可能因为这两周进度的加快,感到比较吃力,知识点比较抽象,不那么容易理解,也可能最近因为被准备考试,写论文等事情追赶着,对C语言、PTA这方面有所懈怠(我的错。。。T_T)。总之,在指针方面还存在很多不足,有的知识点没有及时掌握,还要课后花时间看课本,对一些用法或者需要注意的地方还不够熟悉,希望通过之后的时间可以抓紧时间,掌握不熟练或者遗漏的知识点,多加练习,掌握这方面的知识。 1.2.2 代码累计 2.PTA总分 2.1截图PTA中指针题目集的排名得分 2.2 我的总分: 125分 3.PTA实验作业 3.1 PTA题目 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。 3.1.1 算法分析 定义 i,统计count=0; 定义 字符数组s[500001],指针*p; gets(s); //输入英语 i=strlen(s)-1;//取字符串长度 for i=strlen(s)-1 to 0 do if s[i]==' ' then if s[i+1]!=' '&&s[i+1]!='\0' //出现单词 p=s+i+1; count++; if count>1 then printf(" ");//控制输出最后一个单词没有空格 printf("%s",p); end if s

C语言I博客作业05

ぐ巨炮叔叔 提交于 2019-12-24 19:09:02
一, 本周教学内容&目标 第2章 用C语言编写程序-函数 2.5 生成乘方表与阶乘表。使学生对函数的定义和调用有初步的认识,能模仿编程。 二,本周作业头 这个作业属于哪个课程? C语言程序设计I 这个作业要求在哪里? https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/9826 我在这个课程的目标是 学精C语言,奠定基础 这个作业在哪个具体方面帮助我实现目标? 了解到函数的概念,熟练地运用函数 参考文献 C语言作业评价标准,百度百科 三,本周作业 四,作业格式 1.1 水仙花数判断 本题要求实现一个函数,判断任一整数是否为水仙花数(必须是三位数,且数的每一位上数字的立方和与数本身相等)。例如153=1^3+5^3+3^3=1+125+27=153,而1或155则不是水仙花数。如果是水仙花数,则函数返回1,否则返回0. 1.1.1数据处理 数据表达 本题变量:运用int整型。s,i,N。 数据处理 运用函数,以及while循环语句。 1.1.2实验代码截图 [] 1.1.3造测试数据 1.1.4 PTA提交列表及说明 提交列表说明: 1.编译错误:第六行%用成/ 2.编译错误:while()外面打了;号 1.2 使用函数验证哥德巴赫猜想 本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想

C语言文件操作详解

亡梦爱人 提交于 2019-12-24 12:07:05
C语言文件操作详解 数据流 数据流(data stream)是一组有序,有起点和终点的字节的数据序列。包括输入流和输出流。 程序与数据的交互是以流的形式进行的。进行C语言文件的存取时,都会先进行“打开文件”操作,这个操作就是在打开数据流,而“关闭文件”操作就是关闭数据流。 缓冲区 指在程序执行时,所提供的额外内存,可用来暂时存放做准备执行的数据。它的设置是为了提高存取效率,因为内存的存取速度比磁盘驱动器快得多。 C语言中带缓冲区的文件处理: C语言的文件处理功能依据系统是否设置“缓冲区”分为两种:一种是设置缓冲区,另一种是不设置缓冲区。由于不设置缓冲区的文件处理方式,必须使用较低级的I/O函数(包含在头文件io.h和fcntl.h中)来直接对磁盘存取,这种方式的存取速度慢,并且由于不是C的标准函数,跨平台操作时容易出问题。下面只介绍第一种处理方式,即设置缓冲区的文件处理方式: 当使用标准I/O函数(包含在头文件stdio.h中)时,系统会自动设置缓冲区,并通过数据流来读写文件。 当进行文件读取时,不会直接对磁盘进行读取,而是先打开数据流,将磁盘上的文件信息拷贝到缓冲区内,然后程序再从缓冲区中读取所需数据,如下图所示: 事实上,当写入文件时,并不会马上写入磁盘中,而是先写入缓冲区,只有在缓冲区已满或“关闭文件”时,才会将数据写入磁盘,如下图所示: fopen、fclose fopen

C语言输入输出函数

隐身守侯 提交于 2019-12-24 03:03:55
1. int getchar(void)与int putchar(int c) getchar函数一次只从屏幕输入读取一个字符且以整型的格式返回。如果想读取多个字符,可以将其放入循环中。 putchar函数一次只显示一个字符,如果想显示多个字符,可以将其放入循环中。 2. char* gets(char* s)与int puts(const char* s) gets从stdin读取一行进入s缓存区域,当遇到新行或者EOF终止符时,终止读取。 puts 将s字符串写入标准输出。 3. int scanf(const char* format,.....)和 int printf(const char*, ......) scanf从标准输入流stdin读取输入,并根据提供的格式format扫描数据。 printf根据提供的格式,将输出写入标准输出流stdout。 来源: https://www.cnblogs.com/cbyzju/p/5880036.html

c primer plus 专题2:C语言概述

百般思念 提交于 2019-12-23 08:45:08
1 简单的c程序 first.c #include <stdio.h> int main(void) /* 一个简单的C程序 */ { int num; /* 定义一个名为num的变量 */ num = 1; /* 为num赋一个值 */ printf("I am a simple "); /* 使用printf函数 */ printf("computer.\n"); printf("My favorite number is %d because it is first.\n", num); getchar(); return 0; } 程序细节: #include <stdio.h> 指令和头文件 main() 主函数 注意,main() 函数的返回值是传递给操作系统,用于判断程序是否执行成功。 注释 /* 这是一条注释 */ // 这也是一条注释 函数体、块 变量声明 注意:1 标准C中,变量声明必须要在块的顶部;C99和C11允许在任何位置声明变量 ; 2 首次使用变量前,一定要先声明; C99和C11规定: 变量命名: 1 C99和C11编译器,只能识别前63个字符,超出部分将被忽略; 2 减少使用 _ 或者 __ 开头的变量,如 _thread,原因是操作系统中经常使用这类变量,要避免重名; 3 变量命名区分大小写; 赋值 声明变量,相当于申请内存

C语言I博客作业11

蹲街弑〆低调 提交于 2019-12-23 03:48:44
这个作业属于哪个课程 C语言程序设计II 这个作业的要求在哪里 C语言I博客作业11 我在这个课程的目标是 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 这个作业在哪个具体方面帮助我实现目标 PTA实验作业,读代码 参考文献 C语言程序设计,百度百科 1.PTA实验作业 1.1统计各位数字之和是5的数 本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。 函数接口定义: int is( int number );void count_sum( int a, int b ); 函数 is 判断 number 的各位数字之和是否等于5,是则返回1,否则返回0。 函数 count_sum 利用函数 is 统计给定区间[ a , b ]内有多少个满足上述要求(即令 is 返回1)的整数,并计算这些整数的和。最后按照格式 count = 满足条件的整数个数, sum = 这些整数的和 进行输出。题目保证0< a ≤ b ≤10000。 裁判测试程序样例: #include <stdio.h>​int is( int number );void count_sum( int a, int b );​int main(){ int a, b;​ scanf("%d %d", &a

C语言基础知识一

安稳与你 提交于 2019-12-22 18:23:54
C语言的组成及数据 一、C语言的组成 组成:若干文件 文件:若干函数 函数:函数头 + 函数尾 函数头:四部分 -> (返回值)+ 函数名 + ()+ (小括号内的参数列表) 函数体:{}+语句 语句:三类语句 类型1 -> /* */,// -> 注释语句 类型2 -> 定义语句; -> 前有数据类型,以分号结尾,定义语句一般在程序的前面,定义在前执行在后。 类型3 -> 执行语句; 单框架:只有一个main函数 复合框架:一个main函数+若干函数 二、C语言的数据与数据类型 数据四类:常量、变量、表达式、函数 常量:值不发生变化的量 【整型常量】:十进制、八进制(以数字0开关的一串连续合法八进制)、十六进制(用0x或0X开头的一边串连续合法的十六进制) 若表示长整型常量由必须后加字母L或l,如 34l,012l, oX123L 【实型常量】: 小数形式:由数字和小数点组成。 如:123.45, .123,0.456 指数形式:用 E 或 e 后紧跟一个整数表示以10为底的幂数 如:123E-5, 452e3 注意:(1)字母 E 或 e之前之后必须都有数字,且后必是整数。 (2)字母 E 或 e 的前后及各数字之间不能有空格。 【字符型常量】四种形式 1、常规形式:一对单引号括一个字符。如 'a', 'B', '@', '9' 2、转义字符常量:必须以一个反斜杠 “\”开头

C语言程序设计(十六)12.10

拜拜、爱过 提交于 2019-12-22 17:01:48
1、函数的定义 2、函数的调用 1) 2) 3) 1) 2) 3) 3、函数的声明 为什么要声明 当被调用函数的定义在主调函数后面,此时应该在主调函数中对被调用函数进行声明,方便编译系统检查函数调用语句的合法性 函数调用时参数的传递: 非指针类型的数据做函数参数,由实参将值对应地传递给形参,实参形参占用不同的内存单元,形参的改变不会影响到实参 数组名(指针)做函数参数,实参将值(地址)对应地传递给形参,形参实参占用同一内存单元,形参的改变就是实参的改变 void exchange(int a,int b) { int t; t=a;a=b;b=t; } void main() { int x=2,y=5; exchange(x,y); exchange1(&x,&y); printf("%d%d",x,y); } void exchange1(int * a,int * b) { int t; t=*a; *a=*b; *b=t; } 案例:利用函数,实现数组排序 int sum(int * a)// int sum (int a[])// int sum(int a[20])//c语言中,如果指针指向数组,则指针可以带下标,即可以把指针看成是 数组名 { int i,sum=0; for(i=0;i<10;i++) sum+=a[i]; return sum } viod