第四次作业

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

0.展示PTA总分

1.本章学习总结

1.1 函数定义、调用、声明

1. 函数定义
一般形式:

函数类型 函数名(形式参数表) /*函数首部*/
{
   函数实现过程  /*函数体*/
}
  • 函数定义的函数首部括号后面不能加分号
  • 函数类型一般与函数结果return返回的类型一致
  • 括号内的形参定义要分开写,不可写出int x,y这种类型
  • 函数体中可能需要定义一些变量,这些变量与形参是有区别的,形参为从主函数调用的已知数据
  • 若函数类型为void,则函数体最后可不需要return

2. 函数调用
一般形式:

函数名(实际参数表)
  • c语言运行程序先从主函数开始,当遇到某个函数被调用时,主函数暂停,执行相应的函数,执行完后返回主函数。
  • 实际参数表可以是常量 变量和表达式。而形参只能是变量。
  • 函数调用的两种情况:
    (1)赋值语句:例:volume=cylinder(radius,height)
    (2)输出函数的实参:例:printf("%f",cylinder(radius,height))
  • 参数传递时,形参和实参必须一 一对应,数量相同,类型尽量一致
  • 函数return有两个作用:
    (1)结束函数的运行。
    (2)带着运算结果返回主调函数

3. 函数声明

函数类型 函数名(参数表);
  • 括号后面需要加分号
  • 若自定义函数被放在主函数后面,主函数前要添加函数说明

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

1. 全局变量

  • 定义在函数外而不属于任何函数的变量称为全局变量
  • 其作用范围为所有函数
  • 局部变量和全局变量允许同名,当同名时,局部变量起作用,全局变量不起作用

2. 局部变量

  • 定义在函数内部的变量成为局部变量
  • 其作用在函数内部,形参是局部变量
  • 局部变量一般定义在函数或者复合语句的开始处

3. 静态局部变量
格式:

static 类型名 变量表
  • 局部变量调用完后其分配的单元会被收回
  • 静态局部变量调用时的存储单元会被保留,其生命周期保留到程序结束
  • 全局变量的存储单元也会被保留,其生命周期保留到程序结束

1.3 C数据类型及注意点

(1)
整型:
int可在其前面加上short long unsigned等限定词

  • int 输入输出%d long int输入输出%ld
  • %u以十进制输入输出一个无符号整数,%o以八进制输入输出一个整数,%x以十六进制输入输出一个整数
  • 整型是指不存在小数部分的数据类型
  • 无符号的整型数据指不带符号的整数,即零和正整数,不包括负数

整型常量:

  • 十进制:由正负号和阿拉伯数字0~9组成,但首位数字不能为0
  • 八进制:由正负号和阿拉伯数字0~7组成,首位数字必须为0
  • 十六进制:由正负号和阿拉伯数字09组成,英文字符af或A~F组成,首位数字必须为0x或者0X
  • 判断整数的类型,首先根据整数后面的字母后缀,若没有则根据整型常量的值判断其在哪个数值范围

(2)

字符型

*输入getchar()输出putcahr单个字符,%c用于另一形式输入输出

字符型常量:

  • 字符型常量指单个字符,用一对单引号将要表达的单个字符括起来,如'a''x'

转义字符:

字符 含义
换行
横向跳格
反斜杠
" 双引号
' 单引号
ddd 1~3位八进制整数代表的字符
xhh 1~2位十六位进制整数所代表的字符

例:“ "abc " "有7位字符

(3)
实型

  • 单精度输入输出%f,双精度输入输出%lf
  • 实型又称浮点数型,指存在小数部分的数
  • 浮点型数据分为单精度和双精度,但是当实数的有效位数超过了精度的有效范围,会降低精度
    例:IT 协会举办程序设计竞赛,准备购买 U 盘作奖品。请编写程序,根据活动经费和 U 盘单价预估可购买 U 盘的最大数量。
    当经费为660.8 单价为47.2,若数量用float来定义,输出结果为13,答案确是14
    需要在后面加上0.000001来消除误差

实型常量
(1)浮点表示法
实数由正号 负号 阿拉伯数字0~9 小数点组成,必须要有小数点,且小数点前后至少有一边要有数字
(2)科学计数法
实数由正号 负号 数字 字母e或E组成,e是指数的标志。e之前要有数据,e后面的指数只能是整数
例:0.2e2.3非法 e-5非法

1.4 C运算符

  1. 运算符种类
运算符种类 运算符 结合方向
逻辑运算符 右到左
算术运算符 ++ -- + - (单目) 右结合
算术运算符 * / % (双目) 左结合
算术运算符 + -(双目) 左结合
关系运算符 < <= > >= 左结合
关系运算符 == != 左结合
逻辑运算符 && 左结合
赋值运算符 = += -= *= /= %= 右结合
逗号运算符 左结合
  1. 位运算
运算符 名称
&
^ 亦或
~ 取反
<< 左移
>> 右移
A B A^B
0 0 0
0 1 1
1 0 1
1 1 0

例:对二进制的后三位取反加密 ,则另其与7取反

  1. 位移运算
  • a>>b相当于二进制右移b位,得到的数相当于原数除2的b次方 a<<b相当于二进制左移b位,得到的数相当于原数乘2的b次方

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

2.1.模块流程图

  • 外界面选择进入年级界面流程图

  • 进入年级后的答题系统界面流程图

  • 一年级生成题目的流程图

  • 二三年级生成题目的流程图

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

2.2.1.全局变量

本次大作业并没有用到全局变量,可能对其在本次大作业哪里的用处比局部变量更好不太了解

2.2.2 菜单相关函数

主界面

先在界面形成一个总界面,再要求输入年级来参加,通过switch来辨别年级后再进入相应年级的答题界面

年级界面

进入年级界面,提示是否答题,判断输入是否后,若否返回主界面,若是则进入答题系统,用循环来控制要答题的数量,同时每轮询问是否继续,判断是否后重新进行。二三年级的模板类似于此。

2.2.2 出题相关函数

随机数函数

因为不同年级需要的不同数要求是不一样的,故将随机数分为三类,一类为110一类为1100另一类为1~1000,不同年级会用到其中不同的随机数

随机运算符函数

一年级只用到+和-,而二三年级需要+ - * /,故用switch来辨别年级,并产生相应的运算符

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

一年级答题测试

二年级答题测试

三年级答题测试

界面进入退出测试

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

  • 在进行随机数生成时,将srand生成随机种子放在生成随机数函数里面,调试的时候生成的2个随机数是一样的,在百度查找资料后,将srand放在大函数里面,调试后生成的两个随机数是不一样的
  • 界面设定可用到的代码:system("cls");//清屏 Sleep(数字);//保持界面的时间
  • 在写大作业这种类型的代码量大的任务时,一定要多写函数来分担主函数,分成几个块任务逐个完成,减少自己的工作量,同时也便于调试找出错误
  • 写之前先构思模块,通过画流程图的方法,将流程图每个区域对应代码构思打出,区域代码可能也需要用流程图,大体代码构思后需要考虑一些特殊情况,怎样满足这些特殊情况又不影响到基本情况,甚至需要多种结构方法掺杂,不是一件轻松的事,多测试几组数据来检验。区域代码打完后再按照流程图的形式逐个以某些语句来拼接
原文地址:https://www.cnblogs.com/960223447a/p/14020245.html