| 这个作业属于哪个班级 | C语言--网络2011/2012 |
| ---- | ---- | ---- |
| 这个作业的地址 | C博客作业03--函数 |
| 这个作业的目标 | 学习如何设计函数、C语言基本数据类型 |
| 名字 | 李洋 |
0.PTA展示
1.本章学习总结
1.1 函数定义、调用、声明
- 函数定义的一般形式
函数类型 函数名 (形式参数表) /*函数头*/
{
函数实现过程 /*函数体*/
}
- 注:
-
函数类型值函数返回值的类型,一般与return语句中表达式的类型一致
-
void类型的函数没有返回值
-
形参前面的类型必须写明
-
函数头后面不能加分号,他和函数体一起构成完整的函数定义
-
-
函数调用
-
函数的调用过程
任何C程序执行。首先从main函数开始,遇到某个函数调用,主函数暂时停止,转而执行相应的函数,该函数执行完后将返回主函数,主函数则继续执行。 -
函数调用的形式
-
1. 赋值语句
a = f(x1,x2)
2. 输出函数的实参
printf("%f",f(x1,x2))
实际参数可以是常量、变量、表达式。
-
函数声明
- C语言中函数先声明后使用,如果函数定义在main函数之后,则需在main函数之前进行函数声明
函数类型 函数名 (参数表);
1.2 全局、局部变量、静态局部变量
- 全局变量
在所有函数外部定义的变量称为全局变量,它的作用域默认是整个程序
int a, b; //全局变量
void func1(){
语句;
}
float x,y; //全局变量
int func2(){
语句;
}
int main(){
语句;
return 0;
}
- 局部变量
定义在函数内部的变量称为局部变量,它的作用域仅限于函数内部, 离开该函数后就是无效的
int f1(int a){
int b,c; //a,b,c仅在函数f1()内有效
return a+b+c;
}
int main(){
int m,n; //m,n仅在函数main()内有效
return 0;
}
- 注:
- 在 main 函数中定义的变量也是局部变量,只能在 main 函数中使用;同时,main 函数中也不能使用其它函数中定义的变量。main 函数也是一个函数,与其它函数地位平等。
- 形参变量、在函数体内定义的变量都是局部变量。实参给形参传值的过程也就是给局部变量赋值的过程。
- 可以在不同的函数中使用相同的变量名,它们表示不同的数据,分配不同的内存,互不干扰,也不会发生混淆。
- 在语句块中也可定义变量,它的作用域只限于当前语句块。
5)标准C规定局部变量不能定义在中间位置
- 静态局部变量
(1)在局部变量前加上“static”关键字,就成了静态局部变量。
(2)静态局部变量存放在内存的全局数据区。函数结束时,静态局部变量不会消失,每次该函数调用时,也不会为其重新分配空间。它始终驻留在全局数据区,直到程序运行结束。
(3)静态局部变量与全局变量共享全局数据区,但静态局部变量只在定义它的函数中可见。
1.3 C数据类型及注意点
1.3.1基本数据类型
1. 整型
包括short、int、long等,用以表示一个整数,默认为有符号型,配合unsigned关键字,可以表示为无符号型。
类型 | 字节 | 数据长度 |
---|---|---|
short 短整型 | 占2个字节 | 16位 |
int 整型 | 占4个字节 | 32位 |
long 长整型 | 占4个字节 | 32位 |
2. 浮点型
实型,即浮点型。包括float, double等,用来表示实数,相对于整型。
类型 | 字节 | 数据长度 |
---|---|---|
float 单精度浮点型 | 占4个字节 | 32位 |
double 双精度浮点型 | 占8个字节 | 64位 |
3. 字符型
char 字符型,占1个字节.
字符型变量可以用字符或者它对应的ASCII码来表示
常用的字符对应的ASCII码:
字符 | ASCII码 |
---|---|
'0' | 48 |
'A' | 65 |
'a' | 97 |
ch='A'
ch=65
/*上两式等价*/
1.3.2 整数的表示
组成 | 表现形式 | |
---|---|---|
十进制整数 | 0~9的数字 | 首位不为零 |
八进制整数 | 0~7的数字 | 首位必须为零 |
十六进制整数 | 数字09、字母af | 必须有0X或0x前缀 |
1.4 C运算符
1.4.1逻辑算符
运算符 | 说明 | |
---|---|---|
逻辑非 | !(非) | 取反:!false为true,!true为false |
逻辑与 | &&( 与) | 只要有一个为false,则直接返回false |
逻辑或 | (或) | 只要有一个为true,则直接返回true |
(逻辑非>逻辑与>逻辑或)
1.4.2位运算符
位运算指进行二进制的运算
| 名称 | 运算符 |
| ---- | ---- | ----
| 取反 | ~ |
| 左移 | << |
| 右移 | >> |
| 按位异或 | ^ |
| 按位与 | & |
| 按位或 | |
- 左移运算和右移运算
int b = 3<<2; //相当于:3*2*2
int d = 12>>2; //相当于12/2/2
学习体会
2. 综合作业:小学生口算表达自动生成系统
2.1模块流成图
一年级模块流程图
二年级模块流程图
三年级模块流程图
2.2 函数功能及全局变量介绍
2.2.1 全局变量
2.2.2菜单相关功能
2.2.2.1 函数菜单
2.2.2.2 年级菜单函数
2.2.2.3 一年级题库目录
2.2.2.4 二年级题库目录
2.2.2.5 三年级题库目录
2.2.2.6 统计和反馈函数
2.2.3出题相关函数
2.2.3.0
2.2.3.1 一年级函数
-
出题函数
-
解答函数
2.2.3.2 二年级出题函数
-
出题函数
-
求解函数
2.2.3.3 三年级函数
- 出题函数
- 求解函数
2.3 运行结果截图,测试用例
2.4 编程技巧
1. 生成随机数
-
生成一位数
a =1 + rand() % 9
-
生成两位数
a =10 + rand() % 90
-
生成三位数
a = 100 + rand() % 900
2. 时间延迟
调用Sleep函数制造时间间隔
Sleep(10000);/*停顿十秒钟*/
3. 建立运算符库
char a[] = { '+','-','*','/','%' };
int n = sizeof(a) / sizeof(a[0]);/*确定数组的长度*/