C语言第七章作业

  • 7.3

计算两整数的最大数值

#include<stdio.h>
int max(int a,int b)
{
    return a>b?a:b;
}
int main()
{
    int a,b;
    printf("Input a,b:");
    scanf("%d,%d",&a,&b);
    printf("max = %d\n",max(a,b));
}
  • 7.4
    穷举法算正整数的最小公倍数
#include <stdio.h>
int LCM(int a,int b)
{
    int i;
    for(i=a;i<=a*b;i+=a)	//i+=a比i++快速
    {
        if(i%a==0&&i%b==0)
        return i;
    }
}
int main()
{
    int x,y;
    scanf("%d%d",&x,&y);
    printf("%d\n",LCM(x,y));
}
#include <stdio.h>
int LCM(int a,int b)
{
    int i;
    for(i=1;i<=b;i++)	//i代表a的i倍
    {
        if(i*a%b==0)
            return i*a;
    }
}
int main()
{
    int x,y;
    scanf("%d%d",&x,&y);
    printf("%d\n",LCM(x,y));
}
  • 7.5
    计算输出1到n所有数的阶乘值
#include<stdio.h>
int Fact(long i)
{
    long p;
    if(i==0||i==1)
    p=1;
    else
    p=i*Fact(i-1);
    return p;
}
int main()
{
    int n,i;
    printf("Input n:");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
    printf("%d! = %ld\n",i,Fact(i));
    }
}
  • 7.6
    计算输出1到n所有数的阶乘值的和
#include<stdio.h>
int Fact(int i)
{
    int p;
    if(i==0||i==1)
    p=1;
    else
    p=i*Fact(i-1);
    return p;
}
int main()
{
    unsigned int n,i;
    unsigned long sum=0,term;
    printf("Input n(n>0):");
    scanf("%u",&n);
    for(i=1;i<=n;i++)
    {
        term=Fact(i);
        sum+=term;
    }
    printf("sum = %lu\n",sum);
}

  • 7.7
    三种方法求最大公约数
    主函数
#include<stdio.h>
int main()
{
    int x,y;
    printf("Input x,y:");
    scanf("%d%d",&x,&y);
    printf("%d\n",GCD(x,y);
}

子函数

①穷举法

#include<stdio.h>
int GCD(int a,int b)
{
	int i,c;
	c=a<b?a:b;
	for(i=c;i>=1;i--)
	{
	if(c%i==0 && c%i==0)
	return i;
	}
}

②欧几里得法
whlie语句实现

#include<stdio.h>
int GCD(int a,int b)
{
    int r,c;
    if(a<b)
    {
        c=a;
        a=b;
        b=c;
    }
    r=a%b;
    while(r!=0)
    {
        a=b;
        b=r;
        r=a%b;
    }
    return b;
}

do-whlie语句实现

#include<stdio.h>
int GCD(int a,int b)
{
    int r,c;
    if(a<b)
    {
        c=a;
        a=b;
        b=c;
    }
    do{r=a%b;
        a=b;
        b=r;
    }while(r!=0)
    return a;
}

③递归法

#include <stdio.h>
int GCD(int a,int b)
{
    if(a%b==0)
    return b;
    else
    return GCD(b,a%b);
}
#include <stdio.h>
int GCD(int a,int b)
{
    if(a%b==0)
    return a;
    else if(a>b)
    return GCD(a-b,b);
    else
    return GCD(a,b-a);
}
  • 7.8
    水手跟椰子
#include <stdio.h>
int yz(int i);
int main() 
{
	int n,sum = 0;
	for(int i = 1; i<10; i++) 
	{
		if (((5 * i) + 1) % 4 == 0 ) 
		{
			n = i;
			break;
		} 
		else
			continue;
	}
	printf("第五个人每堆椰子数至少为:%d\n",n);
	sum = 5 * n +1; 		//第五个人拿到椰子总数
	printf("第5个人拿到时椰子总数为:%d\n",sum);
	for(int i = 4; i>0; i--) 
	{
		sum = yz(sum);
		printf("第%d个人拿到时椰子总数为:%d\n",i,sum);
	}
	printf("所以这堆椰子原来至少有:%d个",sum);
	return 0;
}
int yz(int i) 
{
	return i * 5 / 4 + 1;
}

  • 7.9
    五个人的年纪
#include <stdio.h>
int old(int i)
{
    if(i==1) return 10;
    else return(old(i-1)+2);
}
int main()
{
    int i=5;
    printf("第%d个人的年龄是%d",i,old(i));
}
  • 7.10
    魔术师猜三位数
#include <stdio.h>
int main()
{
    int a,b,c,total;
    scanf("%d",&total);
    for(c=0;c<=9;c++)
    {
        for(b=0;b<=9;b++)
        {
            for(a=1;a<=9;a++)
            {
                if(total==122*a+212*b+221*c)
                {
                    printf("%d",a*100+b*10+c);
                    return 0;
                }
            }
        }
    }
    printf("你算错了!");
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值