函数作业——C语言函数——第五天

函数作业

基础作业

1.编写一个程序,该程序使用一个函数来计算5个float数的平均值

2.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入

3.编写函数实现输出100~999之间的水仙花数,并统计水仙花数的个数

4.用函数实现求1+1/2+1/3+1/4+……1/n 的值

5.编写函数,实现将一个字符串中的所有字符 a 用指定字符代替。

例如:char str[20]=”abcba”;fun(str,’*’);  数组的值变为”*bcb*”

提高作业

6.函数计算:一个皮球从 100 米高度自由落下,每次落地后反弹回原高度的一半再落下,再反弹。求当它第 n 次落地时,共经过了多少米

扩展作业

7.不使用标准库,分别写三个函数实现字符的复制、比较、拼接功能

/*1.编写一个程序,该程序使用一个函数来计算5个float数的平均值*/

#include 
#include 

float fun(float buff[],int len)
{
    float sum=0,average;
    int i;
    for(i=0;i

/*编译结果:
输入5个float类型的数值:1.2 3.4 5.6 7.8 9.0
平均值为:5.40
*/

//结论:
/*
调用函数fun(),传递数组buff的值。
函数定义:int fun(int buff[],int len)
函数调用:fun(buff,5)
*/


/*2.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入*/

#include 
#include 

int appro(int num1,int num2)
{    
    int i;
    for(i=num1;i>=1;i--)
    {
        if(num1%i==0)
        {
            if(num2%i==0)
            {
                printf("%d与%d的最大公约数为:%d\n",num1,num2,i);
                break;
            }
        }
    }
}
int multiple(int num1,int num2)
{
    int i;
    for(i=1;i<=num1;i++)
    {
        if(num2*i%num1==0)
        {
            printf("%d与%d的最小公倍数为:%d\n",num1,num2,num2*i);
                break;
        }
    }
}
int main()
{    
    int num1,num2;
    printf("输入第1个整型数值:");
    scanf("%d",&num1);
    printf("输入第2个整型数值:");
    scanf("%d",&num2);
    
    appro(num1,num2);
    multiple(num1,num2);
}


/*编译结果:
输入第1个整型数值:12
输入第2个整型数值:3
12与3的最大公约数为:3
12与3的最小公倍数为:12
*/


/*3.编写函数实现输出100~999之间的水仙花数,并统计水仙花数的个数 */

#include 
#include 

void flower(void)
{    
    int i,a,b,c,num=0;
    for(i=100;i<1000;i++)
    {
        a=i/100;
        b=i%100/10;
        c=i%10;
        if(a*a*a+b*b*b+c*c*c==i)
        {
            num++;
        }
    }
    printf("水仙花的个数为%d\n",num);
    
}

int main()
{    
    flower();
}

/*编译结果:
水仙花的个数为4
*/


/*4.用函数实现求1+1/2+1/3+1/4+……1/n 的值*/

#include 
#include 

void sum(int n)
{    
    int i;
    float j=0;
    for(i=1;i<=n;i++)
    {
        j+=1.0/i;
    }
    
    printf("函数求和的值为:%.2f\n",j);
}

int main()
{    
    int n;
    printf("输入n的值:");
    scanf("%d",&n);
    sum(n);
}

/*编译结果:
输入n的值:10
函数求和的值为:2.93
*/


/*5.编写函数,实现将一个字符串中的所有字符 a 用指定字符代替。
例如:char str[20]=”abcba”;fun(str,’*’);  数组的值变为”*bcb*”*/

#include 
#include 

void fun(char str[],char a)
{    
    int i=0;
    while(str[i]!=0)
    {
        if(str[i]=='a')
        {
            str[i]=a;
        }
        i++;
    }
    printf("替换后的字符串为:%s\n",str);
}

int main()
{    
    char str[20] = "abcba";
    fun(str,'*');
}


/*编译结果:
替换后的字符串为:*bcb*
*/


提高作业

/*6.函数计算:一个皮球从 100 米高度自由落下,每次落地后反弹回原高度的一半再落下,再反弹。求当它第 n 次落地时,共经过了多少米*/
//非递归

#include 
#include 

void len(int n)
{    
    int i;
    float sum=100,high=100;
    for(i=2;i<=n;i++)
    {    
        sum+=high;
        high/=2;
    }    
    
    printf("%d次落地共经过%.2f米。\n",n,sum);
}

int main()
{    
    int n;
    printf("输入落地的次数:");
    scanf("%d",&n);
    len(n);
}

/*编译结果:
输入落地的次数:4
4次落地共经过275.00米。
*/
//递归算法

#include 
#include 

float len(int n)
{    
    float sum;
    if(n<2)
    {
        sum=100;
    }
    else
    {
        sum+=len(n-1)/2+150;
    }
    
    return sum;
}

int main()
{    
    int n;
    printf("输入落地的次数:");
    scanf("%d",&n);
    printf("%d次落地共经过%.2f米。\n",n,len(n));
}

/*编译结果:
输入落地的次数:4
4次落地共经过275.00米。
*/


扩展作业

/*7.不使用标准库,分别写三个函数实现字符的复制、比较、拼接功能*/
//字符串复制函数(strcpy)
//字符串对比函数(strcmp)
//字符串拼接函数(strcat)

#include 
#include 
/**************************************
函数名称:strcpy
函数功能:字符串复制
**************************************/

void StrCpy(char buff[],char str[])
{
    int i=0;
    while(str[i]!=0)
    {
        buff[i]=str[i];
        i++;
    }
    
    buff[i]=0;
    
    printf("字符串复制结果为:%s\n",buff);
    
}
/**************************************
函数名称:StrCmp
函数功能:字符串对比
返回值:0 相同,1 不同
**************************************/
int StrCmp(char buff[],char str [])
{
    int i=0,flag=1;
    while(str[i]!=0)
    {
        if(str[i]==buff[i])
            flag = 0;
        else
        {
            flag = 1;
            break;
        }
        i++;
    }
    if(buff[i]!=0)
        flag=1;
        
    return flag;
    
}
/**************************************
函数名称:StrCat
函数功能:字符串拼接
**************************************/
void StrCat(char buff[],char str[])
{
    int i=0,j=0;
    while(buff[i]!=0)
    {
        i++;
    }
    while(str[j]!=0)
    {
        buff[i]=str[j];
        i++;
        j++;
    }
    
    buff[i]=0;
    
    printf("拼接的结果为:%s\n",buff);
}
int main()
{    
    char buff[128]="qwer";
    char str[]="1234";
    //字符串复制
    printf("buff为:%s\n",buff);
    printf("str为:%s\n",str);
    StrCpy(buff,str);
    
    //字符串对比
    printf("buff为:%s\n",buff);
    printf("str为:%s\n",str);
    if(StrCmp(buff,str)==0)
        printf("字符串对比结果相同。\n");
    else
        printf("字符串对比结果不同。\n");
        
    //字符串拼接
    printf("buff为:%s\n",buff);
    printf("str为:%s\n",str);
    StrCat(buff,str);
}

/*编译结果:
buff为:qwer
str为:1234
字符串复制结果为:1234
buff为:1234
str为:1234
字符串对比结果相同。
buff为:1234
str为:1234
拼接的结果为:12341234
*/

你可能感兴趣的:(C语言,c语言)