函数

实例:求字符串中字符的个数

输入一个字符串,要求使用函数调用的方法计算出该字符串共含有多少个字符。

代码:

#include<stdio.h>
int main()
{
int length(char str[]);
char str[100];
gets(str);
printf("%d",length(str));
return 0;
}


int length(char str[])
{
int i=0;
while(str[i]!='\0')
i++;
return i;
}


实例:递归解决年龄问题

有5个人坐在一起,问第5个人多少岁,他说比第4个人大2岁。问第4个人多少岁,他说比第3个人大2岁。问第3个人,又说比第2个人大2岁。问第2个人,说比第1个人大2岁。

最后问第1个人,他说是10岁。编写程序当输入第几个人时求出其对应年龄。

代码:

#include<stdio.h>
int main()
{
int age(int i);
int i;
scanf("%d",&i);
printf("%d",age(i));
return 0;
}
int age(int i)
{
int n;
if(i==1)
n=10;
else
n=age(i-1)+2;
return n;
}


实例:求学生的平均身高

输入学生数并逐个输入学生的身高,输出身高的平均值。

代码:

#include<stdio.h>
int main()
{
float avgHeight(float a[],int n);
int n;
scanf("%d",&n);
float height[100];
int i;
for(i=0;i<n;i++)
scanf("%f",&height[i]);
printf("%.2f",avgHeight(height,n));
return 0;
}


float avgHeight(float a[],int n)
{
int i;
float sum=0;
for(i=0;i<n;i++)
sum+=a[i];
return (sum/n);
}


实例:分数计算器程序

在实际应用中有很多时候我们希望计算机给出的结果是分数而不是小数,本程序就是在这个前提下产生的,具体要求如下:如果用户输入形式是1,2,+,1,3则代表1/2+1/3,要求运算结果以分数的形式体现。

代码:

#include<stdio.h>
int main()
{
int gys(int x,int y);
int gbs(int x,int y);
void yuefen(int x,int y);
void add(int a1,int a2,int b1,int b2);
void sub(int a1,int a2,int b1,int b2);
void mul(int a1,int a2,int b1,int b2);
void div(int a1,int a2,int b1,int b2);
int a1,a2,b1,b2;
char c;
scanf("%d,%d,%c,%d,%d",&a1,&a2,&c,&b1,&b2);
switch(c)
{
case '+':add(a1,a2,b1,b2);break;
case '-':sub(a1,a2,b1,b2);break;
case '*':mul(a1,a2,b1,b2);break;
case '/':div(a1,a2,b1,b2);break; 
}
return 0;

int gys(int x,int y)//最大公约数 
{
return y?gys(y,x%y):x;
}
int gbs(int x,int y)//最小公倍数 
{
return x/gys(x,y)*y;
}
void yuefen(int x,int y)//约分 
{
int s=gys(x,y);
x/=s;
y/=s;
printf("%d/%d",x,y);
}
void add(int a1,int a2,int b1,int b2)
{
int s=gbs(a2,b2);
int s1=s/a2,s2=s/b2;
a1*=s1,b1*=s2;
int x=a1+b1;
int y=s;
yuefen(x,y);
}
void sub(int a1,int a2,int b1,int b2)
{
int s=gbs(a2,b2);
int s1=s/a2,s2=s/b2;
a1*=s1,b1*=s2;
int x=a1-b1;
int y=s;
yuefen(x,y);
}
void mul(int a1,int a2,int b1,int b2)
{
int x=a1*b1;
int y=a2*b2;
yuefen(x,y);
}
void div(int a1,int a2,int b1,int b2)
{
int x=a1*b2;
int y=a2*b1;
yuefen(x,y);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值