江苏网友来相约

江苏的网友,不如来这里相约吧,我是江苏省海门市人,这里也许能找到你知心朋友。

103 成员713 主题4,022 回复0 张照片

实验三

@
@南方
2001-02-19 08:14
实验三:循环控制


一.实验目的
1. 熟练用while,while-do语句和for语句实现循环的方法。
2. 掌握在程序设计中用循环的方法实现各种算法(如穷举、迭代、递推等)

二.实验环境
CPU:P133; RAM:48M; OS:WINDOWS98; SOFTWARE:TURBO C2。0

三.实验过程

程序一
输入两个正整数,求其中的最大公约数和最小公倍数。

程序如下:
main()
{
int a,b,num1,num2,temp;
printf("请输入两个整数:\n");
scanf("%d,%d",&num1,&num2);
if(num1<num2)
{
temp=num1;
num1=num2;
num2=temp;
}
a=num1,b=num2;
while(b!=0)
{
temp=a%b;
a=b;
b=temp;
}
printf("它们的最大公约数为:%d\n",a);
printf("它们的最小公倍数为:it is:%d\n",num1*num2/a);
}
运行结果:
请输入两个整数:
3,23↙
它们的最大公约数为:1
它们的最小公倍数为:69


程序二:
输入一行字符,分别统出其中的英文字母、空格、数字、和其它字符的个数
程序如下:
#include <stdio.h>
main()
{
char c;
int letters=0,space=0,digit=0,other=0;
printf("请输入一行字符:\n");
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
letters++;
else if(c==' ')
space++;
else if(c>='0'&&c<='9')
digit++;
else
other++;
}
printf("其中:字母数=%d 空格数=%d 数字数=%d 其它字符=%d,letters,space,digit,other);
}

运行结果:
请输入一行字符:
I'm 1512, ,. ↙
字母数=2 空格数=2 数字数=4 其它字符=4

程序三:
用牛顿迭代法求方程控2x3-4x2+3x-6=0在1.5附近的根.
程序如下:
#include<math.h>
main()
{
float x,x0,f,f1;
x=1.5;
do
{
x0=x;
f=((2*x0-4)*x0+3)*x0-6;
f1=(6*x0-8)*x0+3;
x=x0-f/f1;
}
while(fabs(x-x0)>=1e-5);
printf("方程的根=%6.2f\n",x);
}
运行结果:
方程的根= 2.00

程序四:
猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又吃了一个, 第二天早上又将剩下的桃子吃了一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半多一个,到第10天早上想再吃时,见兴剩一个桃子了。求第一天共摘了多少桃子。

程序如下:
main()
{
int day,x1,x2;
day=9;
x2=1;
while(day>0)
{
x1=(x2+1)*2;
x2=x1;
day--;
}
printf("桃子总数=%d\n",x1);
}

运行结果:
桃子总数=1534

while和do-while都是循环控制语句,但while是先判断表达式,再执行循环体语句;而do-while先执行循环体语句,再判断表达式。当循环体内语句为多句时要用花括弧括起来。还要注意的是for语句中的表达式之间用分号而不是逗号分开,表达式省略时分号不能省。
1 / 1

登录后回复。