C语言数组和函数实例练习(二)
1.C语言中不允许函数的嵌套定义,但可以使用函数的嵌套调用。
例1:输入4个整数,找出其中最大的数。
#include <stdio.h>
#include <stdlib.h>
int max1(int a,int b)
{
if(a>=b)
return a;
else
return b;
}
int max2(int a,int b,int c,int d)
{
int m;
m=max1(a,b);
m=max1(m,c);
m=max1(m,d);
return m;
}
int main()
{
int a,b,c,d,max;
printf("请输入4个数字:\n");
scanf("%d %d %d %d",&a,&b,&c,&d);
max=max2(a,b,c,d);
printf("The max is %d",max);
return ;
}
其中红色部分语句可更改为:m=max1(max1(max1(a,b),c),d);//更加精炼
2.函数的递归调用
例2:5个学生坐在一起,上一个学生比下一个学生分别小2岁,已知第1个学生今年10岁,那么求第5个学生的年龄。
int age(int n)
{
int c;
if(n==)
c=;
else
c=age(n-1)+2;
return c;
}
int main()
{
printf("第5个学生的年龄是%d",age());
return ;
}
例3:用递归方法求n!。
int fac(int n)
{
int f;
if(n<)
{
printf("n<0,输入错误!");
}else if(n==||n==){
f=;
}else{
f=fac(n-)*n;
}
return f;
}
int main()
{
int n,y;
printf("请输入要求阶乘的整数:");
scanf("%d",&n);
y=fac(n);
printf("%d!=%d\n",n,y);
return ;
}
例4:汉诺塔问题。
void move(char x,char y)
{
printf("%c->%c\n",x,y);
}
void hanoi(int n,char one,char two,char three)
{
if(n==)
move(one,three);
else{
hanoi(n-,one,three,two);
move(one,three);
hanoi(n-,two,one,three);
}
}
int main()
{
int m;
printf("请输入块数:");
scanf("%d",&m);
printf("需要移动%d块。\n",m);
hanoi(m,'A','B','C');
}
3.数组作为函数参数
例5:输入10个数,要求输出其中值最大的元素和该数是第几个数。
int max(int x,int y)
{
return(x>y?x:y);
}
int main()
{
int a[],m,n,i;
printf("请输入10个数字:\n");
for(i=;i<;i++)
{
scanf("%d",&a[i]);
}
printf("\n");
for(i=,m=a[],n=;i<;i++)
{
if(max(m,a[i])>m)
{
m=max(m,a[i]);
n=i;
}
}
printf("最大的数是%d,它是第%d个数字。\n",m,n+);
}
例6:有两个小组,分别有5人和7人,调用average函数,分别求这两个组的学生的平均成绩。
float average(float array[],int n)
{
int i;
float aver,sum=array[];
for(i=;i<n;i++)
{
sum=sum+array[i];
}
aver=sum/n;
return aver;
}
int main()
{
float score1[]={,,97.5,84.5,};
float score2[]={78.5,,97.5,84.5,,,94.5};
printf("第1个小组的成绩是:%6.2f\n",average(score1,5));
printf("第2个小组的成绩是:%6.2f\n",average(score2,7));
return ;
}
4.内部函数和外部函数
内部函数只能被本文件中其他函数所调用;static 类型名 函数名(参数列表);
外部函数可以在其他文件中被调用:extern 类型名 函数名(参数列表);
C语言中规定,若省略extern则默认为外部函数。
C语言数组和函数实例练习(二)的更多相关文章
- C语言数组和函数实例练习(一)
C语言的数组和函数部分的知识,在语法上和Java语法是有所相似的,这里只通过实例总结一些自己感觉需要理解的部分知识. 1.数组 数组中的元素具有相同的数据类型:数组一旦创建,不能被改变:数组中元素在内 ...
- GO语言数组和切片实例详解
本文实例讲述了GO语言数组和切片的用法.分享给大家供大家参考.具体分析如下: 一.数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列. (1)数组的创建. 数组有3种创建方式: ...
- C语言 数组做函数参数退化为指针的技术推演
//数组做函数参数退化为指针的技术推演 #include<stdio.h> #include<stdlib.h> #include<string.h> //一维数组 ...
- php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
本文实例总结了php常用数组array函数.分享给大家供大家参考,具体如下: array_combine 功能:用一个数组的值作为新数组的键名,另一个数组的值作为新数组的值 案例: <?php ...
- C语言数组作为函数参数
数组可以作为函数的参数使用,进行数据传送. 数组用作函数参数有两种形式,一种是把数组元素(下标变量)作为实参使用:另一种是把数组名作为函数的形参和实参使用. 数组元素作函数实参 数组元素就是下标变量, ...
- C语言 数组做函数参数不传数组个数的遍历方法
//数组做函数参数不传数组个数的遍历方法 #include<stdio.h> #include<stdlib.h> #include<string.h> void ...
- R语言数组array函数
数组是一个可以在两个以上的维度存储数据的R数据对象.例如 - 如果创建尺寸(2,3,4)的数组,那么创建4个矩形矩阵每2行3列.数组只能存储数据类型. 使用 array()函数创建数组.它需要向量作为 ...
- C语言数组篇(四)二维数组
二维数组声明: ][] ={{,,},{,,}; //两行 三列 二维数组在声明的时候可以不写行,但一定要写列 ] = {{,},{,,},{}}; //未声明的地方自动补零 二维 ...
- C语言中如何将二维数组作为函数的参数传递
今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不 ...
随机推荐
- SpringMVC参数绑定(二)
在springMVC中,提交请求的数据是通过方法形参来接收的,从客户端请求的key/value数据,经过参数绑定,将key/value数据绑定到controller形参上,然后再controller就 ...
- VMWare虚拟机Centos 6.9中的 linux 配置静态ip地址上外网
1.查看网络 # ifconfig 发现网络还没有配置,ping不通 2.修改网卡配置文件 # vim /etc/sysconfig/network-scripts/ifcfg-eth0 添加如下配置 ...
- 2013款MacBook Air装Windows7单系统
经过两天的摸索,查找无数资料终于把2013款的MacBook Air装上了WIN 7,虽然网上有很多的资料但是都不是我想要的,第一个我的是2013款的MacBook Air,跟原来2012 11款Ma ...
- OpenCV: kalman滤波的代码段
序言:在我的疲劳检测工程 AviTest中!显示框为320*240,使用OpenCV的kalman滤波算法,可以实现简单的锁相追踪-实现对眼球的位置锁定. 代码如下: CvPoint Wishchin ...
- vue 导航菜单默认子路由
export default new Router({ routes: [ { path: '/', name: 'index', component: index, children: [ { pa ...
- [luogu4162 SCOI2009] 最长距离(最短路)
传送门 Solution 题目是最长路,其实是最短路ヽ(ー_ー)ノ 把进入障碍点的边设为1,其他为0.枚举每个点为起点找距离<=T的点,更新答案 Code //By Menteur_Hxy #i ...
- Linux思维导图之sed、实战习题
命令解释: ◆sed 2p /etc/passwd第二行打印了两次其余一次 ◆sed-n '2p' /etc/passwd 只打印出第二行 ◆sed-n 1,4p' /etc/passwd 只打印出1 ...
- C#学习笔记_03_运算符
03_运算符 算数运算符 + - * / % ++ -- 赋值运算符 = += -= *= /= %= 关系运算符 > < >= <= == != 逻辑运算符 &:逻辑 ...
- JavaSE 学习笔记之Java概述(一)
一.Java的三种技术架构: JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发: JAVASE:Java Platfor ...
- MySQL中index和key的关系
KEY is normally a synonym for INDEX. The key attribute PRIMARY KEY can also be specified as just KEY ...