我们已经学了C语言的输入输出函数,讲了选择语句和循环语句,基本就等于入门了。
第7天已经讲过一些函数和数组。
今天我们就复习一下函数,然后数组内容作进一步深入。
一 函数
函数的定义语法格式:
数据类型 函数名( )
{
函数体;
}
或者:
数据类型 函数名( 形式参数表 )
{
函数体;
}
如:
以及:
上面f2函数的圆括号里面的 int m,m就是形式参数。
函数的调用语法格式:
函数名( );
或者:
函数名( 实际参数表 );
根据上述f1和f2的函数定义,f1函数的调用形式是:
f1( );
而f2函数定义时有形式参数,所以调用时需要在括号里面放一个参数跟定义的形式参数对应,调用时的参数为实际参数。如f2的调用形式是:
f2(3);
f2(10);
只要参数里有一个整数就行。
程序中由三个函数构成f1( ), f2( )和主函数main( )。
所以程序的运行结果就是:
再次强调:不管有多少个函数,程序都要从main函数开始执行。
我们再来看一个程序:
例1:以下程序的运行结果是什么?
运行结果:
看明白了吗?
我们再来看一个更复杂的程序:
例2:以下程序的运行结果是什么?
f3( )和前面程序的自定义函数不同,应为函数名f3前面不是void而是int,这里void和int 叫函数的类型。
函数类型是void的,没有返回值。
函数类型是int的,表示这个函数有一个返回值,而且返回值是int型(就是返回一个整数)。
例2的运行结果为:
例3:以下程序的运行结果是什么?
程序由3个自定义函数组成:f1( )、f2( )、f3( )和主函数main( )
运行结果:
注意:主函数里有个变量int a,函数f3(int a, int b)里有一个形式参数也叫a,这两个a没有关系,不同的函数里定义的变量,即使变量名相同,但它们是没有关系的。
就相当于两个同名的人,名字虽然相同,但不是同一个人。
再次强调:不管有多少个函数,程序都要从main函数开始执行。
上面程序这里不细讲了,你可以根据运行结果对照程序,应该可以弄得明白。
以上内容其实都是第7天的内容,今天又再次复习了一遍。
如果实在不明白,那么你先不用函数,就把所有语句放在main函数里就行了。
二、数组
数组变量的语法格式:
例如:
如:
这里定义了一个数组变量a,有10个元素,每个元素都是整数int型。
数组下标默认从0开始,就是说,第1个元素是a[0],第10个元素是a[9]。
例4:编程输入10个学生的成绩,求平均分,输出所有高于平均分的成绩。
运行结果:
运行结果中,第1行是用户输入的10个分数,第2行是求出的平均分,第3行是提示信息,第4行是所有高于平均分的成绩。
注意上面程序中的for循环里,
i=0;i<10;i++,这里i从0开始,然后i<10(或者i<=9)都行,不能写成i<=10,因为最大下标是9不是10。
第7天的课程已经讲解了数组的一些例子,今天不在此赘述。我们来看新的例子。
数组的应用主要在求查找、求最大值最小值、排序等。
1、查找
例5:编程输入10个整数,再输入一个整数n,查找n是否在前面输入的整数中,是第几个。
注意因为下标从0开始算,所以第8个数显示是第7个数,如果第1个数则会显示是第0个数。所以在显示第几个数那里要加1。
运行结果:
如果要查找的数字不在这10个数字中间,则没有输出结果。
只有输入的数字,没有任何输出结果。
如果要显示“找不到“,可以加一个标记变量,变量名可以起名为ok(或者你也可以起别的名),先让ok赋值为0,找到则赋值为1。
循环结束后看看ok的值是不是还是0,如果还是0,表示找不到,可以显示找不到信息。
修改程序如下:
运行结果:
加了一个变量ok,用来记录是否找到。
2、求最大值
求最值的思路是:
若求最大值,先默认第一个数是最大的,将它的值存放到一个变量中(如命名为max),然后将这个max跟数组中所有元素比较,一旦发现数组中某个元素值比max的值还要大,则马上将max的值换成这个元素的值。
求最小值也类似。
例6:编程输入10个整数,求最大值。
运行结果:
例7:编程输入10个整数,求最大值,输出最大值和最大值所在的下标。
运行结果:
注意数组下标从0开始,所以最大值99是第6个数,它的下标是5。
今天布置一个作业:编程输入10个整数,求最小值,输出最小值和它所在的下标。