C博客作业03--函数

| 这个作业属于哪个班级 | C语言--网络2011/2012 |
| ---- | ---- | ---- |
| 这个作业的地址 | C博客作业03--函数 |
| 这个作业的目标 | 学习如何设计函数、C语言基本数据类型 |
| 名字 | 李洋 |

0.PTA展示

1.本章学习总结

1.1 函数定义、调用、声明

  1. 函数定义的一般形式

函数类型  函数名 (形式参数表)            /*函数头*/
{

      函数实现过程                 /*函数体*/

}

  • 注:
    • 函数类型值函数返回值的类型,一般与return语句中表达式的类型一致

    • void类型的函数没有返回值

    • 形参前面的类型必须写明

    • 函数头后面不能加分号,他和函数体一起构成完整的函数定义

  1. 函数调用

    1. 函数的调用过程
      任何C程序执行。首先从main函数开始,遇到某个函数调用,主函数暂时停止,转而执行相应的函数,该函数执行完后将返回主函数,主函数则继续执行。

    2. 函数调用的形式


1. 赋值语句

      a = f(x1,x2)

2. 输出函数的实参

      printf("%f",f(x1,x2))
    

实际参数可以是常量、变量、表达式。

  1. 函数声明

    1. C语言中函数先声明后使用,如果函数定义在main函数之后,则需在main函数之前进行函数声明

    函数类型 函数名 (参数表);

1.2 全局、局部变量、静态局部变量

  1. 全局变量

在所有函数外部定义的变量称为全局变量,它的作用域默认是整个程序


int a, b;  //全局变量
void func1(){
    语句;
}

float x,y;  //全局变量
int func2(){
    语句;
}

int main(){
    语句;
    return 0;
}

  1. 局部变量

定义在函数内部的变量称为局部变量,它的作用域仅限于函数内部, 离开该函数后就是无效的


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;
}

  • 注:
  1. 在 main 函数中定义的变量也是局部变量,只能在 main 函数中使用;同时,main 函数中也不能使用其它函数中定义的变量。main 函数也是一个函数,与其它函数地位平等。
  1. 形参变量、在函数体内定义的变量都是局部变量。实参给形参传值的过程也就是给局部变量赋值的过程。
  1. 可以在不同的函数中使用相同的变量名,它们表示不同的数据,分配不同的内存,互不干扰,也不会发生混淆。
  1. 在语句块中也可定义变量,它的作用域只限于当前语句块。

5)标准C规定局部变量不能定义在中间位置

  1. 静态局部变量

(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 一年级函数

  1. 出题函数

  2. 解答函数

2.2.3.2 二年级出题函数

  1. 出题函数

  2. 求解函数

2.2.3.3 三年级函数

  1. 出题函数

  2. 求解函数

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]);/*确定数组的长度*/

3. 代码提交

posted on 2020-11-30 21:24  木野  阅读(156)  评论(1编辑  收藏  举报