c语言博客3—函数

0.pta总分

1.本章学习总结

1.1函数定义、调用、声明

函数的定义

函数的定义首先要对函数确定函数的三个内容
1.函数的返回值类型
2.函数的名称
3.函数的参数
如定义一个求和函数
int putSum (int a,int b)
{
int sum;
sum=a+b;
return sum
}
其中函数名称为putSum,函数的返回值类型为整形,函数的参数为a和b

函数的调用

#include <stdio.h>
int main()
int putSum(int a, int b);
{
	int a = 2, b = 3;
	int c;
	int putSum(int a, int b);
	c = putSum(a, b);
	printf("%d + %d = %d\n",a, b, c);
}
int putSum(int a, int b)
{
    int sum;
    sum=a+b;
    return sum;
}

得到结果为2+3=5

函数的声明

函数的声明在函数定义后加;并放在头部即可

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

1.全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。
2.静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见,每次被调用都使用上一次的值。
3.局部变量也只有局部作用域,它是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回。
4.静态全局变量也具有全局作用域,它与全局变量的区别在于如果程序包含多个文件的话,它作用于定义它的文件里,不能作用到其它文件里,即被static关键字修饰过的变量具有文件作用域。这样即使两个不同的源文件都定义了相同名字的静态全局变量,它们也是不同的变量。

1.3C数据类型及注意点

1.整型变量
int类型
取值范围(32位):-2^15— 2^15-1
转换说明:%d
short int(或简写为short)
取值范围(16位):-2^15— 2^15-1
转换说明:%d
long int(或简写为long)
取值范围(32位):取值范围(16位)-2^31— 2^31-1
转换说明:%ld
2.浮点数
单精度float
取值范围:10^-37 —10^37
转换说明:%f
双精度double
取值范围:(2^63— 2^63-1)
转换说明:%f
3.字符型
转换说明:%c
输入单个字符

注意点

1.输入多个字符用getchar()实现
2.在解决浮点误差问题时,可以利用一个很小的值进行矫正

1.4C运算符

逻辑运算符:!
算术运算符:自增++,自减--,+,-,*,/
关系运算符:<,>,==,!=等
逻辑运算符:&&,||

1.5学习体会

近段时间主要学习函数的使用以及回顾数据类型,对于函数的编写还不太熟练,应在以后多加练习

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

2.1流程图




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

菜单相关函数
void OperateMenu();//游戏操作界面

void OperateMenu()//游戏操作界面

{

	char option;

	int i;

	int temp;

	system("cls");//清屏



	do

	{

		system("cls");

		printf("******************************************\n");

		printf("1.一年级口算\n");

		printf("2.二年级口算\n");

		printf("3.三年级口算\n");

		printf("4.退出系统\n");

		printf("******************************************\n");

		printf("请输入您的选择:");

		scanf(" %c", &option);

		switch (option)

		{

		case '1':

			system("cls");

			GradeOneMenu();
		    break;

		case '2':
			system("cls");
			GradeTwoMenu();
			//GradeTwoMenu();
			break;

		case '3':
			system("cls");
			GradeThreeMenu();
			//GradeThreeMenu();
			break;

		case '4':

			printf("\n谢谢您的参与!\n");

			Sleep(500);

			exit(0);

		default:

			printf("您输入不对,只能输入1,2,3,4,请重输!\n");

			Sleep(500);

		}

	} while (!(option >= '1' && option <= '4'));

}

void GradeOneMenu();//一年级
void GradeTwoMenu();//二年级
void GradeThreeMenu();//三年级
出题相关函数
int putNum(int grade)//生成操作数,用rand随机生成数字,用switch进行转化为运算符,对不同年级对运算符进行限制

int putNum(int grade)//生成操作数
{
	int num;
	switch (grade)
	{
	case 1:num = 1 + rand() % 9; break;
	case 2:num = 1 + rand() % 99; break;
	case 3:num = 1 + rand() % 99; break;
	}
	return num;
}

int putOperation(int grade)//生成运算符,用rand随机生成数字,对不同年级对数值进行限制

int putOperation(int grade)//生成运算符
{
	char op;
	int sum = 0;
	switch (grade)
	{
	case 1:sum = 1 + rand() % 1; break;//一年级
	case 2:sum = 1 + rand() % 3; break;//二三年级
	}
	switch (sum)
	{
	case 1:op = '+'; break;
	case 2:op = '-'; break;
	case 3:op = '*'; break;
	case 4:op = '/'; break;
	}
	return op;
}

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

一年级题目,作答3次,全部正确



二年级题目,作答5次,中途退出




2.4大作业中编程技巧总结

1.分多个cpp文件,可以让代码更简洁,查阅方便
2.运用srand((unsigned)time(NULL));产生真正的随机数

posted @ 2020-11-30 12:14  写不下去了,淦  阅读(170)  评论(1编辑  收藏  举报