C语言循环语句实验报告
C语言程序设计实验报告
实验名称 循环控制语句
学 院 机械工程与自动化 专业班级 机械1003 姓 名 学 号
任课教师 实验时间 2011.10.26
1 实验目的
(1) 熟练掌握while语句、do-while语句和for语句格式及使用方法,掌握三种循环
控制语句的循环过程以及循环结构的嵌套,利用三种循环语句实现循环结构;
(2) 掌握简单、常用的算法,并在编制过程中体验各种算法的编程技巧;
(3) 进一步学习调制程序,掌握语法错误和逻辑错误的检查方法。
2 实验内容
作业一:输入两个正整数m和n,求他们的最大公约数和最小公倍数。
作业二:输出1000以内最大的10个素数以及他们的和。
作业三:根据公式π^2/6=1/1^2+1/2^2+1/3^2+„„+1/n^2,求出π的值。
3 算法描述流程图
作业一流程图:
开始
声明变量m,n.,j,s,i=1
i<=m&&i<=n 否
m>=n
i++ 是 否 是是 否
m%i==0&&n%i==0 j=n j=m
是
j++ s=i j%m==0&否
&j%n==0 输出s
是
输出j
作业二流程图:
开始 开始
声明变量及初始化 声明变量m=2,j
k=3,s=x=y=sum=add=0
否 m10
是
b[x]=a[--s];sum+
=b[x];x++ 否
k<10
输出sum
结束
作业三流程图:
开始
声明变量m=1,n,s=0,pi
m<=n
是 否
s=s+1.0/m*m;
m=m+1;
n=m-1
pi=sqrt(6*s)
输出n,pi
结束
4 源程序
作业一:
main()
{
int m,n,i,j,s;
printf("Please input two number=");
scanf("%d,%d",&m,&n);
for(i=1;i<=m&&i<=n;i++)
{
if(m%i==0&&n%i==0)
s=i;
}
if(m>=n)
j=m;
else j=n;
for(;!(j%m==0&&j%n==0);j++);
printf("s=%d,j=%d\n",s,j); }
作业二:
#include
int sushu(int j)
{int m;
for(m=2;m<=j/2;m++)
{if(j%m==0)
return 0;}
return 1;
}
main()
{
int k,s=0,a[1000],b[1000],x=0,y=0,sum=0,add=0,z=0;
{
for(k=3;k<=1000;k+=2)
{
if(sushu(k))
{
a[s]=k;
add+=a[s];
s++;
}
}
}
if(s>10)
{
for(x=0;x<10;x++)
{
b[x]=a[--s];
sum+=b[x];
}
for(y=0;y<(x-1);y++)
{
printf("%d+",b[y]);
}
printf("%d=%d\n",b[y],sum);
}
else
{
printf("the number of sushu is less than 10!\n");
for(z=0;z<(s-1);z++)
{
printf("%d+",a[z]);
}
printf("%d=%d",a[z],add);
}
}
作业三:
#include"math.h" #include main()
{
int n,m;
float s,pi;
printf("Please input a number:");
s=0,m=1;
scanf("%d",&n);
while(m<=n)
{
s=s+1.0/(m*m);
m=m+1;
}
n=m-1;
pi=sqrt(6*s);
printf("n=%d,pi=%f",n,pi);
}
5 测试数据
作业一:“5,65” “92,92” “75,35” 作业三:“20” “50” “100” “200” 6 运行结果
作业一运行结果:
作业二运行结果:
作业三运行结果:
7 出现问题及解决方法
在输入一个数(例如m)的平方是C语言中不存在m^2的形式,而是m*m的形式,实验过程中开始的程序无法运行,原因是某些函数变量名在使用前没有定义,循环在嵌套使用过程中出现交叉错误,部分函数名的参数定义错误。改正的方法是在运行的过程中定义变量,改正循环的嵌套使用。
8 实验心得
通过此次实验,是我对C语言编程有了更为深入的理解,巩固了我对一些基本知识的掌握,使我对C语言的编程更为熟练。特别是visio、fullshort这些非课上学的软件的应用,扩大了我的知识面,为以后的深造打下了基础。在这次实验编程中对函数的调用,循环的使用,变量名的定义等的理解更加深刻。