这个作业属于哪个班级 | C语言--网络2011/2012 |
---|---|
这个作业的地址 | C博客作业03--函数 |
这个作业的目标 | 学习如何设计函数、C语言基本数据类型 |
姓名 | 李雷默 |
0.展示PTA总分:
1.1 函数定义、调用、声明
1.1.1 定义:
函数是一段可以重复使用的代码,用来独立地完成某个功能,它可以接收用户传递的数据,也可以不接收。接收用户数据的函数在定义时要指明参数,不接收用户数据的不需要指明,根据这一点可以将函数分为有参函数和无参函数。
将代码段封装成函数的过程叫做函数定义。
例如,定义一个函数,计算从 1 加到 100 的结果:
int sum(){ \()内可以定义参数
int i, sum=0;
for(i=1; i<=100; i++){
sum+=i;
}
return sum;
}
累加结果保存在变量sum中,最后通过return语句返回。sum 是 int 型,返回值也是 int 类型,它们一一对应。return是C语言中的一个关键字,只能用在函数中,用来返回处理结果。
1.1.2 调用:
函数作为表达式中的一项出现在表达式中如
z = max(x, y);
m = n + max(x, y);
并且函数不能嵌套定义,但可以嵌套调用,也就是在一个函数的定义或调用过程中允许出现对另外一个函数的调用。
1.1.3 声明:
C语言代码由上到下依次执行,原则上函数定义要出现在函数调用之前,否则就会报错。但在实际开发中,经常会在函数定义之前使用它们,这个时候就需要提前声明。
就是告诉编译器我要使用这个函数,你现在没有找到它的定义不要紧,请不要报错,稍后我会把定义补上。如:
int sum(int m, int n);
1.2 全局、局部变量、静态局部变量
1.2.1 全局变量:
-
在所有函数外部定义的变量称为全局变量,它的作用域默认是整个程序。
-
变量的使用遵循就近原则,如果在当前作用域中存在同名变量,就不会向更大的作用域中去寻找变量。即在全局、局部变量同名时,优先局部变量。
1.2.2 局部变量:
-
定义在函数内部的变量称为局部变量,它的作用域仅限于函数内部, 离开该函数后就是无效的,再使用就会报错。
-
在 main 函数中定义的变量也是局部变量,只能在 main 函数中使用;同时,main 函数中也不能使用其它函数中定义的变量。
-
可以在不同的函数中使用相同的变量名,它们表示不同的数据。
1.2.3 静态局部变量:
-
静态局部变量定义时前面加static。
-
静态局部变量也是定义在函数内部的,静态局部变量所在的函数在多调用多次时,只有第一次才经历变量定义和初始化,以后多次在调用时不再定义和初始化,而是维持之前上一次调用时执行后这个变量的值。
1.3 C数据类型及注意点
浮点型数据:
-
int类型
取值范围(16位):-32768~32767(-2^15— 2^15-1)
转换说明:%d -
单精度float
取值范围:10^-37 —10^37
转换说明:%f -
双精度double
取值范围:(2^63— 2^63-1)
转换说明:%f
字符型数据:
-
字符型数据是用单引号括起来的一个字符。例如:'a'、'b'、'='、'+'、'?'
-
字符型数据只能用单引号括起来,不能用双引号或其它括号。
-
字符型数据只能是单个字符,不能是字符串。
-
字符可以是字符集中任意字符。但数字被定义为字符型之后就不能参与数值运算。如'5'和5 是不同的。'5'是字符型数据,不能参与运算。
字符串:
-
字符串是由一对双引号括起的字符序列。例如: "CHINA" , “C program” , "$12.5" 等都是合法的字符串。字符串和字符不同,它们之间主要有以下区别:字符由单引号括起来,字符串由双引号括起来。
-
字符只能是单个字符,字符串则可以含一个或多个字符。
1.4 C运算符
算术运算符:
关系运算符:
逻辑运算符:
- 优先级:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符(赋值运算符现只学过 = )
2.1.模块流程图
2.2.函数功能及全局变量介绍
2.2.1.全局变量
m:字符型变量,用于输出运算关系符
n:int型变量,用于随机数
2.2.2 菜单相关函数
看不懂老师给的菜单界面,所以没做。
2.2.2 出题相关函数
目的是使用随机函数确定运算符号,再用随机函数确定运算用的数据a,b。最后printf("%d%c%d = ", a, m, b);形成可以阅读的题目。
2.3.运行结果截图,测试用例。
在以上三种情况:结果为负数,结果为小数,乘法会出现错误,并且偶尔会出现使用未定义的函数m的情况。
2.4.大作业中编程技巧总结
- 我学会了rand函数的用法,如我上图使用的随机0`3的整数。
n = rand() % 4;
- 学会了字符型变量要加单引号,如
if (n == 0) { m = '+'; }
if (n == 1) { m = '-'; }
if (n == 2) { m = '*'; }
if (n == 3) { m = '/'; }