C语言博客作业03--函数

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

0.展示PTA总分(0----2)

1.本章学习总结(4分)

1.1 函数定义、调用、声明

函数返回值类型 函数名(形式参数列表)
{
函数体
}
函数调用: 两种方式
方式1: 非void型
变量名=函数名(实参列表);
方式2: void型
函数名(实参列表);
声明:
函数类型 函数名(形成类型1 形参1, 形参类型2 形参2...);
函数类型 函数名(形参类型1, 形参类型2 ...);

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

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

局部变量:它的作用域仅限于函数内部, 离开该函数后就是无效的;main 函数中定义的变量也是局部变量,只能在 main 函数中使用;同时,main 函数中也不能使用其它函数中定义的变量。main 函数也是一个函数,与其它函数地位平等。

静态局部变量:用static声明的局部变量,在函数调用结束后不消失而保留原值,在下一次该函数调用时,该变量已有值。

1.3 C数据类型及注意点

1.3 C数据类型及注意点

字符类型char
一个字节。
用来存储小范围的整数(-128 ~ 127),和“字符”(所有ASCII字符,128个)。

char a = 100;
char b = ‘a’;

整数类型int
4个字节
用来存储整数,范围:- (2的31次方) ~ 2的31次方-1

长整形long
long 也就是 long int
用来存储整数。
在32位系统上,占4个字节,和int相同
在64位系统上,占8个字节。

长长整形long long
用来存储整数。
8字节。

float类型(单精度浮点类型)
用来存储带小数部分的数据。
4个字节

表示方式:按科学记数法存储,也就是需要存储“尾数”和“指数”
float x = 1.75E5;
//1.75E5就是1.75乘以10的5次方,只需保存尾数(1.75)和指数(5)
float y = 1.123456789;
//精度只能取值到 1.1234568, 在第7位(整数部分不算)是四舍五入后的值。

表示范围:-3.4*1038~+3.4*1038 (不需记忆)
精度:最长7位有效数字(是指7位10进制位)

double类型(双精度浮点类型)

用来存储带小数部分的数据。
8个字节

表示范围:-1.7*10308~1.7*10308(不需记忆)
精度:最长16位有效数字(是指16位10进制位)

1.4 C运算符

后缀自增 x = i++; x = i;i=i+1; 先取值再自增
后缀自减 x=i--; x =i; i=i-1;先取值再自减
前缀自增 x = ++i; i=i+1; x=i; 先自增再取值
前缀自减 x = --i; i=i-1; x = i;先自减再取值

一共有15个级别!
最高优先级:( )和[ ]
倒数第二低优先级:赋值和复合赋值(=, +=, -= ...)
最低优先级:逗号表达式

! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

x = ! 3 + 4 < 5 && 6 > 7 || 8 > 7;
等效于:
x = ((!3 + 4 < 5) && (6 > 7)) || (8 > 7);

2.综合作业(6分):小学生口算表达式自动生成系统

2.1.模块流程图

2.2.函数功能及全局变量介绍

2.2.1.全局变量

未使用到全局变量

2.2.2 菜单相关函数

游戏操作界面

  • 功能
    输出游戏界面
    提示用户操作
    接受用户输入字符
  • 思路
    printf输出提示用户的语句
    定义字符型变量option用于表示用户的选择
    用switch语句按照用户的选择进入下一环节
    用do-while语句使输入的字符只能在1-4中,在范围外需重新输入
  • 截图

一年级界面函数 void GradeOneMenu()

功能

  • 输出游戏界面
  • 提示用户操作
  • 接受用户输入字符
  • 输出题目
  • 统计正确率
  • 鼓励用户
    思路
  • 定义work变量表示用户要做的题目的数量
  • 定义right变量表示用户做对题目的数量
  • 定义count变量表示用户做到第几题,若count==work则说明题目都做完了
  • 使用Expression1(count,work,right)函数,输出题目,判断题目是否正确,判断用户是否做对,统计正确率。
  • 截图

二年级界面函数 void GradeTwoMenu()

功能

  • 输出游戏界面
  • 提示用户操作
  • 接受用户输入字符
  • 输出题目
  • 统计正确率
  • 鼓励用户
    思路
  • 定义work变量表示用户要做的题目的数量
  • 定义right变量表示用户做对题目的数量
  • 定义count变量表示用户做到第几题,若count==work则说明题目都做完了
  • 使用Expression2(count,work,right)函数,输出题目,判断题目是否正确,判断用户是否做对,统计正确率。
    截图
  • 大致与一年级相同

三年级界面函数 void GradeThreeMenu()

功能

  • 输出游戏界面
  • 提示用户操作
  • 接受用户输入字符
  • 输出题目
  • 统计正确率
  • 鼓励用户
    思路
  • 定义work变量表示用户要做的题目的数量
  • 定义right变量表示用户做对题目的数量
  • 定义count变量表示用户做到第几题,若count==work则说明题目都做完了
  • 使用Expression3(count,work,right)函数,输出题目,判断题目是否正确,判断用户是否做对,统计正确率。
    截图
  • 大致与一年级相同

2.2.2 出题相关函数

文字介绍函数功能、思路,截图函数代码。

输出题目,判断题目是否正确,判断用户是否做对,统计正确率

思路与功能

  • 使用rand()函数生成随机数
  • 使用srand(time(NULL))来使每次输出的结果都随机
  • 使用生成随机操作数函数,每个年级出题的标准不同,每个年级生成操作数的函数不同
  • 使用生成随机操作符函数
  • 使用判断生成的题目是否合理的函数,每个年级判断的标准不同,故每个年级都有一个判断的函数
  • 统计做题数和正确题数来统计正确率
  • 定义变量num1,num2,num3来表示操作数
  • 定义变量op1,op2来表示操作符
  • 定义变量key来表示题目正确答案来与用户所输入的结果进行对比
  • 定义变量answer来表示用户输入结果
  • 定义变量flag,使用rand()函数来给予随机数,若flag为1则题目的操作数只有2个,若为2则为3个,操作符个数也随之改变
  • 在用户答题前询问是否作答
  • 在用户答完一题后判断是否正确,并给予嘉奖或鼓励
  • 在用户答题结束后输出用户的正确率
    截图

一年级


二年级


三年级


2.3.运行结果截图,测试用例。

2.4.大作业中编程技巧总结

若只使用rand()函数,会发现每次运行的结果都是一样的,不能达到我们想要的随机
使用srand(time(NULL))来使每次输出的结果都随机
rand()函数是按指定的顺序来产生整数,因此每次执行上面的语句都打印相同的两个值,所以说C语言的随机并不是真正意义上的随机,有时候也叫伪随机数,使用 rand() 生成随机数之前需要用随机发生器的初始化函数 srand(unsigned seed)(也位于 stdlib.h 中) 进行伪随机数序列初始化,seed 又叫随机种子,通俗讲就是,如果每次提供的 seed 是一样的话,最后每一轮生成的几个随机值也都是一样的,因此叫伪随机数,所以需要每次提供不同的 seed 达到完全的随机,我们通常用时间函数 time(NULL) 作为 seed ,因为时间值每秒都不同,这个函数需要包含以下头文件:

include <time.h>

posted @ 2020-11-30 22:56  黄帅2011  阅读(194)  评论(2编辑  收藏  举报