c语言函数

C语言复习题

人盡茶涼 提交于 2020-01-19 02:13:43
一、选择题 1.源程序TEST.C经编译产生的目标文件和连接后产生的可执行文件是(B)。 A.TEST.BAK和TEST.OBJ B.TEST.OBJ和TEST.EXE C.TEST.EXE 和TEST.C D.TEST.BAK和TEST.EXE 2.以下选项中合法的实型常数是(C)。 A.5E2.0 B.E-3 C.2E0 D.1.3E 3.字符串“ABC”在内存中占用的字节数是(B)。 A.3 B.4 C.6 D.8 4.在C语言中,要求运算数必须是整型的运算符是(D)。 A./ B.++ C.!= D.% 5.若有以下类型说明语句:char w ; int x ; float y ; double z ; ,则表达式w * x + z - y的结果为(D)类型。 A.float B.char C.int D.Double 6.若x和y代表整型数,以下表达式中不能正确表示数学关系|x―y|<10的是(C)。 A.abs( x – y ) < 10 B.x – y > -10 && x – y < 10 C.!( x – y ) < -10 || !( y – x ) > 10 D.( x – y ) * ( x – y ) < 100 7.已知char a = ‘\103’ ;则语句printf( “%3d” , a ) ; 执行后的输出结果为(C)。 A.67 B.‘C’ C

C语言函数返回指针方法

那年仲夏 提交于 2020-01-19 00:10:27
什么是指针? 指针 是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。 指针变量声明 type *var-name; type 是指针的基类型,它必须是一个有效的 C 数据类型, var-name 是指针变量的名称。用来声明指针的星号 * 与乘法中使用的星号是相同的。 空指针 赋为 NULL 值的指针被称为 空 指针,NULL 指针是一个定义在标准库中的值为零的常量。 数组指针: 它是一个指针,它指向一个数组。指向数组的指针,本质是指针。 int (*p)[3] 因为()优先级高,首先说明p是一个指针,指向一个int型的一维数组, 数组有3个元素,每个元素是一个int型整数 简单来说,就是int (*p)[3]是指一个指向数组的指针,它其实还是一个指针,只不过是指向数组而已 指针数组: 它是一个数组,数组的元素都是指针。存放指针的数组,本质是数组。 int *p[3] [ ] 优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,指针数组本身就是个数组,只不过这个数组里存放的不是int 不是char,而是一个指针类型( int*,char* ),也就是就是地址 。 函数返回指针 C语言允许函数的返回值是一个 指针 (地址),我们将这样的函数称为指针函数。 用指针作为函数返回值时需要注意的一点是,函数运行结束后会销毁在它内部定义的所有局部数据,包括局部变量

第一个程序&C语言数字表示

僤鯓⒐⒋嵵緔 提交于 2020-01-18 23:32:48
第一个C语言程序 与hello world不同,这里是另外一个简单的C语言程序。接下来对这个程序结构进行简要介绍,使得了解C程序的基本架构。 #include <stdio.h> 这一行的意思是引入一个头文件,.h就是head的意思。一般地,在C语言或C++中,会把用来#include的文件的扩展名叫 .h,称其为头文件。 #include文件的目的就是把多个编译单元(也就是c或者cpp文件)公用的内容,单独放在一个文件里减少整体代码尺寸;或者提供跨工程公共代码。 stdio 就是指 “standard input & output"(标准输入输出) 所以,源代码中如用到标准输入输出函数时,就要包含这个头文件 也可以自己写一个.h或者.cpp文件,在其中存储一些自己写的函数,放在程序的同一文件夹下,这时也就可以include自己的文件调用自己写的函数了。 int main() printf() 本程序包含两个函数。函数就是C语言中的程序模块,当我们经常要执行一项任务时,就可以抽象出一个函数实现这个功能。函数在使用前必须声明,一般用函数原型的方法实现,这里不在赘述。 函数一般的形式: return_value_type function_name(parameter_list) 即 返回值 函数名(形参列表) int main()中,返回值就是int整型,而且main(

c语言基础----函数

廉价感情. 提交于 2020-01-17 21:36:14
函数定义 dataType functionName(){ //body } dataType 是返回值类型,它可以是C语言中的任意数据类型,例如 int、float、char 等。 functionName 是函数名,它是 标识符 的一种,命名规则和标识符相同。函数名后面的括号 ( ) 不能少。 body 是函数体,它是函数需要执行的代码,是函数的主体部分。即使只有一个语句,函数体也要由 { } 包围。 如果有返回值,在函数体中使用 return 语句返回。return 出来的数据的类型要和 dataType 一样。 内联函数 要将一个函数定义为内联函数,需要在函数定义时加上 inline 函数修饰符。关键字 inline 告诉编译器,任何地方只要调用内联函数,就直接把该函数的机器码插入到调用它的地方。这样程序执行更有效率,就好像将内联函数中的语句直接插入到了源代码文件中需要调用该函数的地方一样。 inline 修饰符并非强制性的:编译器有可能会置之不理。例如,递归函数通常不会被编译成内联函数。编译器有权自行决定是否要将有 inline 修饰符的函数编译成内联函数。 和其他函数不同的是,在每个用到内联函数的翻译单元中,都必须重复定义这个内联函数。编译器必须时刻准备好该函数定义,以便在调用它时及时插入内联代码。因此,经常在头文件中定义内联函数。

C语言深度学习之int main(int argc,char **argv)的理解及延申

我只是一个虾纸丫 提交于 2020-01-17 13:57:29
C语言深度学习之int main(int argc,char **argv)的理解及延申 前者为可接受 命令行参数,argc表示参数个数, argv[]是参数数组,其中第0个参数是程序本身的名称(包含路径)。 argv[]是一个字符数组. argv[0]:指向程序的全路径名 argv[1]:指向在DOS命令行中执行程序名后的第一个字符串。 argv[2]:指向第二个字符串。 简单的说:main(int argc,char argv[])函数的两个形参,第一个int argc,是记录你输入在命令行上的字符串个数;第二个 argv[]是个指针数组,存放输入在命令行上的命令(字符串)。 argc == 1 就是说参数的个数为1. argv是字符串数组,存的是参数,定义为char**或者char* argv[] 【举例】 比如你编译好的程序为my.exe (1)在命令行执行 my.exe 则:此时argc就是1,接受参数是1个,即参数argv[0]是”my.exe” (2)在命令行执行 my.exe 1 2 3 则:此时argc就是4,接受参数是4个,即参数argv[0]是”my.exe”,argv[1]是”1”,argv[2]是”2”,argv[3]是”3”; 输入参数和输出参数 1.输入参数,是函数的调用者,传递给函数的实现者,对函数来说,是函数外部传入给函数内部使用的输出参数

C语言利用qsort()函数实现排序

血红的双手。 提交于 2020-01-17 08:56:01
引用#include<stdlib.h>头文件 qsort()括号里面有4个参数 第一个参数是将要排序的数组名array; 第二个参数是将要排序的数量n; 第三个参数是每个要排序的参数的大小xizeof(array[o]); 第四个参数是自己写的一个比较函数comp; 若排序的是int类型的数组 升序: int comp(const void*a,const void*b)//用来做比较的函数。 { return *(int*)a - *(int*)b; } 降序: int comp(const void*a,const void*b)//用来做比较的函数。 { return *(int*)b - *(int*)a; //降序 } 若排序的是结构体数组,假定结构体node typedef struct{ int a; int b; }node; qsort(a,n,sizeof(node),comp) int comp( const void*x, const void*y) { return ((*(node*)y).a) - ((*(node*))x).a); } 来源: https://www.cnblogs.com/Hqx-curiosity/p/12204085.html

C语言 基础练习40

旧街凉风 提交于 2020-01-16 18:24:53
一、题目 1.输入2个整数,求两数的平方和并输出。 2. 输入一个圆半径(r)当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息。 3、函数y=f(x)可表示为: 4、编写一个程序,从4个整数中找出最小的数,并显示此数。 5.有一函数当x<0时y=1,当x>0时,y=3,当x=0时y=5,编程,从键盘输入一个x值,输出y值。 6.从键盘输入两个数,求出其最大值(要求使用函数完成求最大值,并在主函数中调用该函数) 7、从键盘输入你和你朋友的年龄,编成判断谁的年龄最大,并打印最大者的年龄。 8、键盘输入2个加数,再输入答案,如果正确,显示“right”,否则显示“error” 9. 编一程序每个月根据每个月上网时间计算上网费用,计算方法如下: 要求当输入每月上网小时数,显示该月总的上网费用(6分) 10.神州行用户无月租费,话费每分钟0.6元,全球通用户月租费50元,话费每分钟0. 4元。输入一个月的通话时间,分别计算出两种方式的费用,判断哪一种合适。 11.个人所得税计算,应纳税款的计算公式如下: 收入 税率 收入<=1000元部分 0% 2000元>=收入>1000元的部分 5% 3000元>=收入>2000元的部分 10% 6000元>=收入>3000元的部分 15% 收入>6000元的部分 20% 输入某人的收入,计算出应纳税额及实际得到的报酬。(7分)

C语言函数指针

我的梦境 提交于 2020-01-16 02:27:41
原理: 1、对于一个函数来说,他的函数名是函数的地址,一个指向函数代码的指针,是函数的入口地址,调用地址。 2、函数指针是一个指向函数的指针(获得函数名),函数指针指向函数名就可以替代该函数执行,去调用该函数 使用方法: 1,声明一个函数指针,统一接口(函数返回值类型和函数参数类型):返回值类型 ( 函数指针名)(参数列表) 函数指针名首先与 结合表明是指针,之后与()结合表明是指向函数的指针 2,指针指向要执行的函数地址(函数名) 3,用函数指针替代函数名执行该函数 代码 # include <stdio.h> # include <stdlib.h> typedef int ( * pfunc ) ( int , int ) ; //该函数指针的别名为pfunc,统一接口 int getMax ( int a , int b ) { return a > b ? a : b ; } int getMin ( int a , int b ) { return a < b ? a : b ; } void test01 ( ) { printf ( "getMax = %p, getMin = %p\n" , getMax , getMin ) ; //打印函数入口地址 } void test02 ( ) { int res = 0 ; pfunc p = NULL ; /

【C语言】变量类型

让人想犯罪 __ 提交于 2020-01-15 11:16:24
转载自cnblogs.com/mjios 语言有丰富的数据类型和运算符,因此计算能力非常强大,计算过程中使用的值一般用变量来存储。变量也是有分类型的,不同类型的变量有不同的存储类型、不同的生命周期、不同的作用域,C语言也提供了一些关键字来设置变量的属性(比如设置存储类型、生命周期)。 回到顶部 一、变量的作用域 C语言根据变量 作用域 的不同,将变量分为局部变量和全局变量。 1.局部变量 1> 定义:在函数内部定义的变量,称为局部变量。 形式参数也属于局部变量 。 2> 作用域:局部变量只在定义它的函数内部有效,即局部变量只有在定义它的函数内部使用,其它函数不能使用它。 2.全局变量 1> 定义:在所有函数外部定义的变量,称为全局变量。 2> 作用域:全局变量的作用范围是从定义变量的位置开始到源程序结束,即全局变量可以被在其定义位置之后的其它函数所共享。 1 int a; 2 3 int main () 4 { 5 int b; 6 return 0; 7 } 第1行的变量a是全局变量,第5行的变量b是局部变量。 回到顶部 二、变量的存储类型 * 变量的存储类型就是指变量存储在什么地方。有3个地方可以用于存储变量:普通内存、运行时堆栈、硬件寄存器。变量的存储类型决定了变量何时创建、何时销毁以及它的值能保持多久,也就是决定了变量的生命周期。 * C语言根据变量的 存储类型 的不同

C语言06-函数的调用过程II、数组

[亡魂溺海] 提交于 2020-01-13 18:20:18
文章目录 函数调用过程 栈帧的概念 数组 sizeof 函数调用过程 函数调用过程中的步骤: 按照调用约定传参 保存返回地址 流程转移 保存上一层栈帧地址 开辟局部变量空间 开始执行被调用函数的代码 详细得展示各个步骤。 栈帧的概念 我们已经知道,因为每个函数被调用过程,那个函数的参数、局部变量、返回地址, 都会放在一断 特定的栈区域中 ,并且 每个被调用的函数,都对应了一段特定的栈区 域,那一段特定的栈区域 ,称为 那一个被调用函数的栈帧 。 void Fun2(int arg) { int nValue = 0; printf("fun2:%08X, %p\r\n", &arg, &nValue); } void Fun1(int arg) { int nValue = 0; Fun2(0x22222222); printf("fun1:%08X, %p\r\n", &arg, &nValue); } int main(int argc, char* argv[]) { printf("main:%p\r\n", &argc); Fun1(0x11111111); return 0; } 通过以上代码可以验证,紧挨着返回地址的“栈帧”,确实是指向了 上一层调用方的栈帧 ,这种设计,使得当前函数结束后,程序流程都可以顺利地找到上一层栈帧。 通过以上的图和代码实验