c语言函数

c语言中交换两个变量的值

天涯浪子 提交于 2020-02-02 20:04:00
一、两个变量的值交换了吗? 编写一个 数值交换函数,实现两个变量的值交换 运行结果如下: 发现 swap函数 中两个变量的值的确交换了,但是主函数里面两个数值并没有交换。 即形参x,y值变了,实参a,b并没有变化原因如下(最简单的理解: 形参x,y的值的确交换了,但是形参x,y只在swap函数中起作用, 此函数 一结束这两个形参值就不存在了,所以实参值不会发生改变) 二、两个变量的值交换了 利用指针来实现两个变量值的交换 运行结果如下: 三、打印数组元素值和交换数组中 两个 元素的值 Void 函数名(数组的首地址,数组的长度) { 可以产看数组元素的值 可以修改数组元素的值 } 1、打印数组元素值 运行结果如下: 2、对数组元素值+1操作 运行结果如下: 3、利用数组可实现数据的交换(交换数组中两元素的数值),m,n表示数组中的下标 Void swap(int a[],int m,int n) { Int c=a[m]; a[m]=a[n]; a[n]=c; } 运行结果如下: 来源: CSDN 作者: 永相随1 链接: https://blog.csdn.net/qq_37281984/article/details/104146844

【C语言】编写函数unsigned int reverse_bit(unsigned int value)(位运算)

瘦欲@ 提交于 2020-02-02 18:53:38
编写函数 : unsigned int reverse_bit(unsigned int value); 这个函数的返回值value的二进制位模式从左到右翻转后的值。 如: 在32位机器上25这个值包含下列各位: 00000000 00000000 00000000 00011001 翻转后: (2550136832) 10011000 00000000 00000000 00000000 程序结果返回: 2550136832 方法一: 【思想】 : 先找翻转的规律 (左边高位)00000000 00000000 00000000 00011001(右边低位) 第1位 1->32 —> 十进制2^31 (第1位翻转之后要放到32位上) 第2位 2->31 —> 十进制2^30 (第2位翻转之后要放到31位上) 第i位: i -> 32 - i + 1 —> 十进制2^(32-i) 逆置: 累加每一位逆置之后的十进制数 sum += 每一位二进制值 * 2^(32-i) 从i=1开始 取每一位的二进制值: (n >> i - 1)& 1 所以 unsigned int reverse_bit ( unsigned int val ) { unsigned int sum = 0 ; for ( int i = 1 ; i <= 32 ; i ++ ) { /

C语言函数

老子叫甜甜 提交于 2020-02-02 12:20:28
函数就是一段封装好的,可以重复使用的代码,它使得我们的程序更加模块化,不需要编写大量重复的代码。 函数的定义 无参数定义 dataType functionName ( ) { //body } 有参数的定义 dataType functionName ( dataType1 param1 , dataType2 param2 . . . ) { //body } 注意:函数不能嵌套定义。 实参与形参 C语言函数的参数会出现在两个地方,分别是函数定义处和函数调用处,这两个地方的参数是有区别的。 形参(形式参数) 在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参。 实参(实际参数) 函数被调用时给出的参数包含了实实在在的数据,会被函数内部的代码使用,所以称为实际参数,简称实参。 形参与实参的区别与联系 形参变量只有在函数被调用时才会分配内存,调用结束后,立刻释放内存,所以形参变量只有在函数内部有效,不能在函数外部使用。 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的数据,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参,所以应该提前用赋值、输入等办法使实参获得确定值。 实参和形参在数量上、类型上、顺序上必须严格一致,否则会发生“类型不匹配”的错误。当然,如果能够进行自动类型转换

C语言博客05--指针

社会主义新天地 提交于 2020-02-01 20:36:34
1.本章学习总结(2分) 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 本周学习了指针,都说指针是C语言的灵魂,也是C语言区别于其他语言所独特的地方,学好指针的相关内容十分必要,但同时难度也更大,需要付出更多的时间去理解和熟练掌握。学习到指针部分之后明显感觉有点吃力,虽然也和前面的知识结合紧密,但是需要对指针的概念搞得很清楚,不然就会把地址和该地址所存的内容搞混。然后指针上完之后老师又教了结构体和文件相关的内容,真的要认真学习多花时间才能完全理解掌握。目前的自己觉得还是一直半解,蛮吃力的。 在数据传递时,如果数据块较大,这时就可以使用指针传递地址而不是实际数据,即提高传输速度,又节省大量内存。 指针为动态数据结构(如二叉树、链表)提供支持 1.2.2 代码累计 2.PTA总分(2分) 2.1截图PTA中函数题目集的排名得分 3.PTA实验作业(1分) 3.1 PTA题目1 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。 33.1.1 算法分析 int main() { 定义字符数组 str[500010]; 输入gets(str); 定义长度变量len; len=strlen(str); 定义i,j,count=0; 定义flag=0; for i=len-1 to i>=0 do if str[i]!=' ' then count++

C语言博客05--指针

末鹿安然 提交于 2020-02-01 14:46:01
1.本章学习总结 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 本章学习了指针的应用,指针是C语言中很有特色的一个东西,其他的语言基本没有这个功能,直接在内存上对变量赋值,同时也学到了很多函数可应用在字符串中运用比如strlen、strcat、 strcmp等等,对数组的大小进行控制也学到了一个新的方法,动态内存分配,可以对数组的大小进行控制,防止像以前那样给数组定义过大的范围,浪费内存。以后也能更好的运用数组。 学完了指针,以后在写程序时需要用函数对变量进行赋值时就不用那么多函数一一进行返回值,可以直接在函数中用指针对函数外面的变量进行修改。 1.2.2 代码累计 2.PTA总分 2.1截图PTA中函数题目集的排名得分 2.2 我的总分:110 3.PTA实验作业 3.1 PTA题目1 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。 3.1.1 算法分析 输入字符串str x=strlen(str); max=x-1; for i=max to 0 then if(字符等于' ') then for j=i+1 to max then 输出下标从i+1到max的字符 输出空格 end for max=i-1; end if end for 3.1.2 代码截图 3.1.4 PTA提交列表及说明 Q1:刚开始段错误因为数组的范围不够

C语言之结构体

喜你入骨 提交于 2020-02-01 03:56:21
概念 结构体是一种构造类型,由若干个成员组成,成员可以是基本数据类型,或是另一个结构体 声明结构体 struct 结构体名 { 成员列表 }; 结构体名表示结构的类型名。 声明一个结构体表示创建一种新的类型名(自定义数据类型),然后用类型名定义变量。 struct Product { char name[10]; char shape[10]; char color[10]; float price; } 使用结构体定义变量有三种方式 第一种:声明结构体类型,再定义变量 struct Product p1; struct Product p2; p1和p2是结构体变量名,这两个变量具有相同的结构 类比: 类型名 变量名 int a; | | struct Product p; struct Product整体表示一种数据类型 定义结构体变量后,系统会为其分配内存单元 第二种:声明结构体类型时,同时定义变量(可以定义多个变量) struct 结构体名 { 成员列表 } 变量名列表; example: struct Product { char name[10]; char shape[10]; char color[10]; float price; } p1, p2; 第三种:直接定义结构体类型变量(匿名结构体,没有结构体名称) struct { 成员列表 } 成员变量;

C语言函数指针的用法

丶灬走出姿态 提交于 2020-01-31 06:01:28
这篇文章简单的叙述一下函数指针在结构体中的应用,为后面的一系列文章打下基础 本文地址: http://www.cnblogs.com/archimedes/p/function-pointer-in-c-struct.html ,转载请注明源地址。 引言 指针是C语言的重要组成部分, 于是深入理解指针并且高效地使用指针可以使程序员写出更加老练的程序。我们要记住指针是一个指向内存地址的变量。指针可以引用如int、char……常见的数据类型,例如: int * intptr; // 声明一个指向整型值的指针 int intval = 5 ; // 定义一个整型变量 intptr = & intval ; // intptr现在包含intval的地址 指针不仅仅指向常规的类型还可以指向函数 函数指针 函数指针的内容不难理解,不再赘述,参见《 C语言函数指针的用法 》 语法 要声明一个函数指针,使用下面的语法: Return Type ( * function pointer's variable name ) ( parameters ) 例如声明一个名为func的函数指针,接收两个整型参数并且返回一个整型值 int (*func)(int a , int b ) ; 可以方便的使用类型定义运用于函数指针: typedef int (*func)(int a , int b ) ;

[总结]C语言二维数组作为函数的参数

送分小仙女□ 提交于 2020-01-31 05:21:58
   前言: 今天在实现装配线调度程序时候,用到了二维数组,并将其作为函数的参数。在写程序的时候,遇到一些问题,即二维数组做函数的参数应该如何正确表示。我写程序的错误如下程序所示: 1 #include <cstdio> 2 void print(int *a[3]) 3 { 4 printf("%d\n",a[0][0]); 5 } 6 7 int main() 8 { 9 int a[2][3] = {1,2,3,4,5,6}; 10 print(a); 11 return 0; 12 } 编译程序时候,在第10行提示错误信息: |10|error: cannot convert 'int (*)[3]' to 'int**' for argument '1' to 'void print(int**)'|。 根据错误提示我明白了, int *a[3]表示一个一维数组,数组的数据类型为整型指针(int*),数组的大小为3,这是因为[]的优先级高于*的优先级。如是我将程序改写如下,顺利通过编译,得到正确结果。 1 #include <cstdio> 2 void print(int (*a)[3]) //用括号将指针括起来 3 { 4 printf("%d\n",a[0][0]); 5 } 6 7 int main() 8 { 9 int a[2][3] = {1,2,3,4,5

C语言学习的第一天

孤街浪徒 提交于 2020-01-30 22:55:19
C语言的应用 操作系统 语言编译器 汇编器 文本编辑器 打印机 网络驱动器 现代程序 数据库 语言解释器 实体工具 C语言的环境设置 文本编辑器 notepad或者vim vi都是可以的 C语言编译器 Windows 上的安装 为了在 Windows 上安装 GCC,您需要安装 MinGW。为了安装 MinGW,请访问 MinGW 的主页 www.mingw.org,进入 MinGW 下载页面,下载最新版本的 MinGW 安装程序,命名格式为 MinGW-.exe。 当安装 MinWG 时,您至少要安装 gcc-core、gcc-g++、binutils 和 MinGW runtime,但是一般情况下都会安装更多其他的项。 添加您安装的 MinGW 的 bin 子目录到您的 PATH 环境变量中,这样您就可以在命令行中通过简单的名称来指定这些工具。 当完成安装时,您可以从 Windows 命令行上运行 gcc、g++、ar、ranlib、dlltool 和其他一些 GNU 工具。 C程序结构 C语言主要包括以下几个部分 1.预处理器指令 2.函数 3.变量 4.语句&表达式 5.注释 Hello Word实例 # include <stdio.h> /*预处理器指令*/ int main ( ) { /*主函数*/ printf ( "hello,word.\n" ) ; /*语句

c语言静态局部变量

北城余情 提交于 2020-01-30 12:33:50
使用实例 static int n = 10 ; 一般在函数中使用 如 void fn_static ( void ) { static int n = 10 ; printf ( "static n=%d\n" , n ) ; n ++ ; printf ( "n++=%d\n" , n ) ; } 第一次使用函数时输出10,11 第二次使用函数时输出11,12 因为代码static int n = 10 ;只会在第一次跑时赋值,并且这里面的n在函数跑完以后会保存,下一次n就等于n+1 可以做到保存一个函数里的变量 来源: https://www.cnblogs.com/zhjc/p/12242356.html