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

0.展示PTA总分

1.本章学习总结

1.1 学习内容总结

函数的定义:
函数是一个完成特定工作的独立程序模块,包括库函数和自定义函数两种,例如scanf()、printf()等为库函数,由C语言系统提供定义,编程时只要直接调用即可;
函数定义的一般形式为

函数类型 函数名(形式参数表)      /*函数首部*/
{
       函数实现过程           /*函数体*/
}

函数首部:
由函数类型、函数名和形式参数表组成,位于函数定义的第一行。函数首部后面不能加分号,它和函数体一起构成完整的函数定义。
例子5-1中函数首部为
double cylinder (double r, double h)
表面函数类型是double,也就是函数的结果类型;函数名是cylinder;函数又两个形参r和h,它们的类型都是double
函数体:
函数体体现函数的实现过程,有一对大括号内的若干条语句组成,用以计算,或完成特定的工作,并用return语句返回运算的结果。
函数的调用:
任何c程序运行,首先从主函数main()开始,如果遇到某个函数调用,主函数被暂停执行,转而执行相应的函数,该函数执行完后将返回主函数,然后再从原先暂停的位置继续执行。
函数调用的一般形式为:

函数名(实际参数表)

实际参数(简称实参)可以使常量、变量和表达式。例如,cylinder()中,使用变量radius和height作为实参(p96)。
对于实现计算功能的函数,函数调用一般出现在两种情况下:
①赋值语句

volume=cylinder(radius,height);

②输出函数的实参

printf("%f",cylinder(radius,height));

函数的形参必须是变量,用于接受实参传递过来的值;而实参可以是常量、变量或表达式,其作用是把常量、变量或表达式的值传递给形参。如果实参是变量,它与所对应的形参是两个不同的变量。实参是主调函数的,形参是自定义函数的,这两者可以同名,也可以不同名。
按照C语言的规定,在参数传递过程中,将实参的值复制给形参。这种参数传递是单向的,只允许实参把值复制给形参,形参的值即使在函数中改变了,也不会反过来影响实参。
实参和形参一一对应,数量应相同,顺序应一致
函数结果返回
函数结果返回的形式如下:

return 表达式;

return语句只能返回一个值。

/*判断奇数偶数的函数*/
int even (int n)
{
if(n%2==0)
return 1;
else
return 0;
}

函数原型声明
C语言要求函数先定义后调用,就像变量先定义后使用一样。如果自定义函数放在主调函数的后面,就需要在主函数调用前,加上函数原型声明(或称之为函数声明)。
一般格式为:

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

即与函数定义中的第一行(函数首部)相同,并以分号结束。
如果在调用函数前,既不定义,也不声明,程序编译时会出错。

不返回结果的函数
在很多程序设计中,调用函数不是为了得到牟利个运算结果,而是要让它产生某些作用。
不返回结果的函数定义:

void函数名(形参表)    /*函数首部*/
{
函数实现过程   /*函数体*/
}

函数类型为void,表示不返回结果,函数体重可以使用没有表达式的return语句,也可以省略return。
在不返回结果的函数定义中,void不能省略;否则,函数类型被默认定义为int。

1.2 本章学习体会及代码量学习体会

1.2.1 学习体会

本章学习了函数的使用,通过使用函数,不仅使得操作简易化,大大减少了庞大程序中的错误和不清楚的问题,还能把我们的程序以更模块化的形式组织起来,从而利用C语言所支持的结构化程序设计。在学习的过程中,我感受到了编程与数学的巧妙结合,领悟到了思考的趣味性和重要性。

1.2.2 代码累计

本次综合作业代码量:377

2.本次作业的函数关系图

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

3.1.全局变量

void menu();
void gradeOne();//一年级
void gradeTwo();//二年级
void gradeThree();//三年级
int grade;//年级
int amount;//题目数量

3.2.ListMenu()函数


函数的功能是让使用者输入年级和题目数量,从而让系统编出相应难度和数量的题。主要用了scanf()函数、printf()函数和if-else语句

3.3 函数2等

    一年级有如图四种题型,使用了随机数


    二年级有如图两种题型


    三年级有如图两种题型


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


一年级的题目测试,所涉及的题目类型基本没有问题


二年级的题目测试,对除法没有太细的讲究,所以出错了


三年级的题目测试,所涉及的题目类型基本没有问题

5. 调试碰到问题及解决办法

1.随机数不会用
解决方法:高强度使用百度搜索终于学会
2.一开始调试的时候,输入一个答案后所有的题目一起跳出
解决方法:原来是switch语句忘记加上break;
3.编辑函数时出现最多的问题其实是大括号的多余和缺少,这主要怪自己不细心

6.大作业总结

这次作业完全就是粗制滥造...之前请了假,整整一周没来上课,所以周末很晚才开始做这个任务,仓促之下只写了200行整,成果就是一个功能严重缩水的半半半成品,像什么输入某个东西退出程序那种的都没有,后面我将会好好完善。

原文地址:https://www.cnblogs.com/9418wdnm/p/11786098.html