一、基础知识
二、习题
-
while语句一般用于事先并不知道循环次数的循环。
1.求,直到累加到和大于或等于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.用公式求π的近似值,直到最后一项的绝对值小于为止。
#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.用迭代法求方程的根,要求误差小于。
#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
-
do-while语句
三、编程题
1.求的值。
#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的值,
(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");
}
}
运行结果:
*
***
*****
*******
*****
***
*