C语言学习——第五章循环结构

一、基础知识

 

二、习题

  • while语句一般用于事先并不知道循环次数的循环。

1.求1^{2}+2^{2}+3^{2}+.....+n^{2},直到累加到和大于或等于10000为止。

#include <stdio.h>
int main()
{
	int i,sum;
	i=0,sum=0;
	while(sum<10000)
	{	i++;
		sum+=i*i;
	}
	printf("n=%d,sum=%d\n",i,sum);
}


运行结果:
n=31,sum=10416
Press any key to continue

2.用\frac{\pi }{4}=1-\frac{1}{3}+\frac{1}{5}-\frac{1}{7}+\frac{1}{9}-....公式求π的近似值,直到最后一项的绝对值小于10^{-6}为止。

#include <stdio.h>
#include <math.h>
int main()
{
	float t,pi,n;
	int s;
	s=1,n=1.0,pi=0,t=1.0;
	while(fabs(t)>=1e-6)
	{	pi+=t;
		n+=2.0;
		s=-s;    /*改变符号*/
		t=s/n;
	}
	pi=4*pi;
	printf("pi=%f\n",pi);
}

注:(1)求整数绝对值用函数:int fabs(int x) ;                                         (注:调用fabs函数时要调用math.h文件)

       (2)求浮点数的绝对值:float fabs(float x);或者double fabs(double x);

       (3)pow()函数用于求x的y次方:x、y及函数值均是double型的         如pow(x,y);

3.用迭代法求方程x=cosx的根,要求误差小于10^{-6}

#include <stdio.h>
#include <math.h>
int main()
{
	double x1,x2;
	x1=0.0;
	x2=cos(x1);
	while(fabs(x2-x1)>1e-6)
	{
		x1=x2;
		x2=cos(x1);
	}
	printf("x=%lf\n",x2);
}

注意:(1)用fabs()函数 需要添加 #include <math.h>

           (2)double型变量输出格式为%lf%lf

 

  • do-while语句

 

 

 

 

 

 

 

 

 

三、编程题

1.求1-3+5-7+...-99+101的值。

#include <stdio.h>
int main()
{
	int i,j=1,k,sum=0;
	for(i=1;i<=101;i+=2)
	{
		k=i*j;
		sum+=k;
		j=-j;
	}
	printf("%d\n",sum);
}


//运行结果:51

2.求e的值,{\color{Red} {\color{Red} }e\approx1+\frac{1}{1!}+\frac{1}{2!}+\frac{1}{3!}+\frac{1}{4!}+....{\color{Red} }}

(1)用for循环,计算前50项
#include <stdio.h>
int main()
{
	double sum=1,i,j=1;
	for(i=1;i<50;i++)
	{
		j*=i;
		sum+=1.0/j;
	}	
		printf("e=%lf\n",sum);
}

//运行结果:e=2.718282
(2)用while循环,要求直至最后一项的值小于10^-6
#include <stdio.h>
int main()
{
	double sum=1,i=1,j=1,n=1;
	while(n>1e-6)
	{
		j*=i;
		n=1.0/j;
		sum+=n;
		i++;
	}
		printf("e=%lf\n",sum);
}

3.输出从公元2000年至公元3000年所有闰年的年号,每输出10个年号换一行。

注:判断公元年是否为闰年的条件:

(1)公元年数能被4整除而不能被100整除,则是闰年

(2)公元年数能被400整除也是闰年。

#include <stdio.h>
int main()
{
	int i,n=0;
	printf("闰年有:\n");
	for(i=2000;i<=3000;i++)
	{
		if((i%4==0&&i%100!=0)||i%400==0)
		{
			printf("%d ",i);
			n++;
			if(n%10==0)
				printf("\n");
		}
		
	}	
}

4.编写程序,打印以下图形。

#include <stdio.h>
int main()
{
	int i,j,k;
	for(i=0;i<=3;i++)
	{
		for(k=0;k<3-i;k++)
			printf(" ");
		for(j=0;j<1+2*i;j++)
			printf("*");
			printf("\n");
	}
	for(i=1;i<=3;i++)
	{
		for(k=0;k<i;k++)
			printf(" ");
		for(j=0;j<7-2*i;j++)
			printf("*");
			printf("\n");
	}
}


运行结果:

   *
  ***
 *****
*******
 *****
  ***
   *

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Crow_jing

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

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

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

打赏作者

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

抵扣说明:

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

余额充值