C语言第五次作业练习

以下程序教材基于 谭浩强C程序设计(第四版)

第1题 分别使用while、do…while、for三种循环结构计算并输出2+4+8+10+……+100的运算结果。

/*第1题 分别使用while、do…while、for三种循环结构计算并输出2+4+8+10+……+100的运算结果。*/

/*

# include<stdio.h>

int main(void)
{
    int i=2,sum=0;
	
	while(i<=100)
	{
		sum=sum+i;
		i+=2;
	}
	printf("sum=%d\n",sum);

	return 0;
}
*/
/*
# include<stdio.h>

int main(void)
{
    int i=2,sum=0;
    
	do
	{
		sum=sum+i;
		i+=2;
	}
	while(i<=100);
	printf("sum=%d\n",sum);

	return 0;

}
*/
# include<stdio.h>

int main(void)
{
	int i,sum=0;

	for(i=2;i<=100;i+=2)
	{
		sum=sum+i;
	}
    printf("sum=%d\n",sum);    

	return 0;
}

第2题 教材习题P.140习题3,求两个正整数的最大公约数和最小公倍数。

/*此程序编写于2017年3月18日,目的:求两整数的最大公约数和最小公倍数*/

# include<stdio.h>

int main(void)
{
	int a,b,n,m,t;

	printf("请输入两个正整数n,m:");
	scanf("%d,%d",&n,&m);
	if(n<m)     //先互换两个数
	{
		t=n;
		n=m;
		m=t;
	}
	a=n*m;                   
	while(m!=0)
	{
		b=n%m;
		n=m;
		m=b;
	}
	printf("它们的最大公约数为:%d\n",n);
	printf("它们的最小公倍数为:%d\n",a/n);

	return 0;
}

第3题 教材习题P.140习题8,输出所有的水仙花数。

/*目的:求出所有的水仙花数*/

# include<stdio.h>

int main(void)
{
    int a,b,c,d;
	
	printf("水仙花数为以下数值\n");
    for(d=100;d<1000;d++)
	{
		a=d/100;
		b=d/10%10;
		c=d%10;
		if(d==a*a*a+b*b*b+c*c*c)
			printf("%d\t",d);
	}
	printf("\n");

	return 0;
}

第4题 教材习题P.141习题12,求解猴子吃桃问题。

/*猴子吃桃问题*/

# include<stdio.h>

int main(void)
{
	int d,a,b;  //d为天//
	d=9;
	b=1;
	do
	{
		a=(b+1)*2;
		b=a;
		d--;
	}
	while(d>0);
	printf("第一天一共摘了%d个桃子\n",a);
	
	return 0;
}




# include<stdio.h>

int main()
{
	int x,i,b;                //第一天摘取x个,i为天//

    for (x=1;x<10000;x++)
    {
        b=x;
        for(i=1;i<10;i++)
        {
			b=b/2-1;
		}
        if(b==1) break;
	}
    printf("第一天一共摘了%d个桃子\n",x);   
    
	return 0;
} 

第5题 完成例5.6,熟悉嵌套for循环的用法。

/*输出4*5矩阵*/

# include<stdio.h>

int main(void)
{
	int i,j,n=0;

	for(i=1;i<=4;i++)
		for(j=1;j<=5;j++,n++)
		{
			if(n%5==0)
				printf("\n");
			printf("%d\t",i*j);
		}
	printf("\n");
	
	return 0;
}

第6题 教材习题P.141习题9,输出1000之内所有的完数。

/*输出1000之内的所有完数*/

# include<stdio.h>

int main(void)
{
    int n,m,sum;
 
    for(n=1;n<=1000;n++)
    {
        sum=0;
		for(m=1;m<=n/2;m++)
            if(n%m==0) 
                sum+=m;
			if(n==sum)
        {
            printf("%d 它的因子为", n);
            for(m=1;m<=n/2;m++)
                if(n%m==0) 
                    printf("%d,",m);
            printf("\b \n");
        }
	}
	
	return 0;
}

第7题 输出九九乘法表。

/*输出九九乘法表*/

# include<stdio.h>

int main(void)
{
	int x,y,z;
	
	for(x=1;x<=9;x++)
	{
		for(y=1;y<=x;y++) 
		{
			z=x*y;
			printf("%d*%d=%d  ",y,x,z);
		}
		printf("\n");
	}
	return 0;
}

第8题 完成例5.7,计算圆周率的近似值。

/*此程序编写于2017年3月17日,目的:计算pi的值*/

# include<stdio.h>
# include<math.h>

int main(void)
{
	int sign=1;
	double pi=0.0,n=1.0,term=1.0;

	while(fabs(term)>=1e-6)
	{
		pi=pi+term;
		n=n+2;
		sign=-sign;
		term=sign/n;
	}
	pi=pi*4;
	printf("pi=%10.8f\n",pi);

	return 0;
}

/*此程序存在的问题:精度低,将循环判断改为1e-8后,精度会高一些*/

第9题 完成例5.8,求斐波那契数列的前40个数。

/*斐波那契数列前40个数*/

# include<stdio.h>

int main(void)
{
	int f1=1,f2=1,f3;
	int i;

	printf("%-5d\n%-5d\n",f1,f2);
	for(i=1;i<=38;i++)
	{
		f3=f1+f2;
		printf("%-5d\n",f3);
		f1=f2;
		f2=f3;
	}
	
	return 0;
}

/*改进程序

# include<stdio.h>

int main(void)
{
	int f1=1,f2=1;
	int i;

	for(i=1;i<=20;i++)
	{
		printf("%-5d %-5d",f1,f2);
		if(i%2==0)
			printf("\n");
		f1=f1+f2;
		f2=f2+f1;
	}

	return 0;
}
*/

第10题 完成例5.9,判断输入的整数是否为素数。

/*判断输入的整数是否为素数。*/

# include<stdio.h>

int main(void)
{
	int n,i;

	printf("请输入一个整数\n");
	scanf("%d",&n);
	for(i=2;i<=n-1;i++)
		if(n%i==0)
			break;
		if(i<n)
			printf("%d不是素数\n",n);
		else
			printf("%d是素数\n",n);

	return 0;
}

/*改进程序如下:

# include<stdio.h>
# include<math.h>

int main(void)
{
	int n,i,k;

	printf("请输入一个整数\n");
	scanf("%d",&n);
	k=sqrt(n);
	for(i=2;i<=k,i++)
		if(n%i==0)
			break;
		if(i<k)
			printf("%d不是素数\n",n);
		else
			printf("%d是素数\n",n);

	return 0;
}
*/

第11题 完成例5.10,求100-200之间所有的素数。

/*求100~200间的全部素数*/

# include<stdio.h>
# include<math.h>

int main(void)
{
	int n,k,i,m=0;

	for(n=101;n<=200;n=n+2)
	{
		k=(int)sqrt(n);
		
	for(i=2;i<=k;i++)
		if(n%i==0)break;
	if(i>=k+1)
	{
		printf("%d\t",n);
		m=m+1;
	}
	
	if(m%10==0)
	printf("\n");
	}
	
	printf("\n");

	return 0;
}
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Johnny__Wang__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值