C语言循环结构程序设计实验报告.docx
《C语言循环结构程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《C语言循环结构程序设计实验报告.docx(9页珍藏版)》请在冰豆网上搜索。
C语言循环结构程序设计实验报告
甘肃政法学院
本科生实验报告
(五)
姓名:
赵明翔
学院:
公安技术学院
专业:
安全防范工程
班级:
2015级安全防范工程班
实验课程名称:
程序设计
实验日期:
2016年月日
开课时间:
2015学年第二学期
实验题目
实验5循环结构程序设计
小组合作
姓名
赵明翔
班级
安全防范工程
学号
201583130145
一、实验目的
1.熟悉掌握用while语句,do...while语句和for语句实现循环的方法。
2.掌握在程序设计中用循环的方法实现一些常用的算法(如穷举,代,递推等)。
3.进一步学习调试程序。
二.实验环境
MiscroftVisualC++6.0环境。
三、实验内容与步骤
编程序并上机调试程序。
(1)输入一行字符,分别统计出其中的英文字母,空格,数字和其他字符的个数。
程序如下:
#include
intmain()
{
charc;
intletters=0,space=0,digit=0,other=0;
printf("请输入一行字符:
\n");
while((c=getchar())!
='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
letters++;
elseif(c=='')
space++;
elseif(c>='0'&&c<='9')
digit++;
else
other++;
}
printf("字母数:
%d\n空格数:
%d\n数字数:
%d\n其他字符数:
%d\n",letters,space,digit,other);
return0;
}
运行结果:
(2)输出所有的水仙花数,所谓水仙花数是指一个3位数,其各位数字李方和等于该数本身。
例如,153是水仙花数,因为153=1²+53+33
程序如下:
#include
intmain()
{
inti,j,k,n;
printf("paicissusnumbersare");
for(n=100;n<1000;n++)
{
i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
printf("%d",n);
}
printf("\n");
return0;
}
运行结果:
(3)猴子吃桃问题。
猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第2天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下了1个桃子了。
求第一天共摘了多少桃子。
程序如下:
#include
intmain()
{
intday,x1,x2;
day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2;
x2=x1;
day--;
}
printf("total=%d\n",x1);
return0;
}
运行结果:
(4)①用牛顿迭代法求方程
在1.5附近的根.
#include
#include
intmain()
{doublex1,x0,f,f1;
x1=1.5;
do
{x0=x1;
f=((2*x0-4)*x0+3)*x0-6;
f1=(6*x0-8)*x0+3;
x1=x0-f/f1;
}
while(fabs(x1-x0)>=1e-5);
printf("Therootofequationis%5.2f\n",x1);
return0;
}
运行结果:
②修改程序使所设的x初值由1.5改变为100,1000,10000。
(1)#include
#include
intmain()
{doublex1,x0,f,f1;
x1=100;
do
{x0=x1;
f=((2*x0-4)*x0+3)*x0-6;
f1=(6*x0-8)*x0+3;
x1=x0-f/f1;
}
while(fabs(x1-x0)>=1e-5);
printf("Therootofequationis%5.2f\n",x1);
return0;
}
运行结果:
(2)#include
#include
intmain()
{doublex1,x0,f,f1;
x1=1000;
do
{x0=x1;
f=((2*x0-4)*x0+3)*x0-6;
f1=(6*x0-8)*x0+3;
x1=x0-f/f1;
}
while(fabs(x1-x0)>=1e-5);
printf("Therootofequationis%5.2f\n",x1);
return0;
}
运行结果:
(3)#include
#include
intmain()
{doublex1,x0,f,f1;
x1=10000;
do
{x0=x1;
f=((2*x0-4)*x0+3)*x0-6;
f1=(6*x0-8)*x0+3;
x1=x0-f/f1;
}
while(fabs(x1-x0)>=1e-5);
printf("Therootofequationis%5.2f\n",x1);
return0;
}
运行结果:
分析:
不同的x初值对结果没有影响。
因为牛顿迭代法是利用近似方法求根的计算方法,当后一个近似根减前一个近似根的绝对值小于
时,视后一个近似根为该方程的根,方程的根是唯一的,x的初始赋值对此没有影响。
③修改程序,使之能输出迭代的次数和每次迭代的结果。
#include
#include
intmain()
{doublex1,x0,f,f1;
inti=0;
printf("请输入x的初始赋值:
");
scanf("%d",&x1);
do
{x0=x1;
f=((2*x0-4)*x0+3)*x0-6;
f1=(6*x0-8)*x0+3;
x1=x0-f/f1;
i++;
printf("第%d次迭代的结果为:
%5.2f\n",i,x1);
}while(fabs(x1-x0)>=1e-5);
printf("迭代次数为%d\n",i);
return0;
}
运行结果:
分析:
不同的x初始值对迭代的次数和结果并无影响。
五、实验总结
C语言功能丰富、表达能力强、使用灵活方便、既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件。
通过本次实验,让我学会了很多东西,但是,由于自己对课本上的知识掌握不清楚,所以在分析和编写代码时混淆了一些知识点,导致在程序运行的时候错误百出。
所以在以后的学习中,需要好好看书,尽量多掌握课本上的基础知识,还有,就是多做练习,做到熟能生巧。