桂 林 理 工 大 学
实 验 报 告
实验名称 循环程序设计 日期 2018年 12月19日
一、 实验目的:
1. 掌握用while语句、do-while语句、 for语句实现循环的方法。
2. 掌握程序设计中用循环实现的一些常用算法。
3. 进一步学习调试程序的方法。
二、实验环境:
Visual C++
三、实验内容:
(写出主要的内容)
1. 输入一个整数n,计算n!并输出。
#include<stdio.h>
int main()
{
int n,i,s=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{s=s*i;
}
printf("%d!=%d\n",n,s);
return 0;
}
输入6
输出为6!=720
2. 输入一个整数n(n>6),计算1!+2!+3!+……+n!并输出。
#include<stdio.h>
int main()
{
int n,i,s=1,t=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{s=s*i;
t=t+s;
}
printf("sum=%d\n",t);
return 0;
}
输入7
输出为sum=5913
3. 输入一个整数n(n>6),依次输出1至n之间各个数的阶乘值,输出格式为:
1!=1
2!=2
3!=6
……
(学号为单号的同学做第2题,学号为双号的同学做第3题,鼓励两题都做 )。
#include<stdio.h>
int main()
{
int n,i,s=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{s=s*i;
printf("%d!=%d\n",i,s);
}
return 0;
}
输入7
输出为
1!=1
2!=2
3!=6
4!=24
5!=120
6!=720
7!=5040
4. 百鸡百钱问题:一百个铜钱买一百只鸡,其中公鸡一只花5个铜钱,母鸡一只花3个铜钱,小鸡三只花一个铜钱,问一百只鸡中公鸡、母鸡、小鸡各多少只?(要求将所有可能的解都求出来)
#include<stdio.h>
int main()
{
int i,j,k;
for(i=1;i<20;i++)
for(j=i;j<33;j++)
{
k=100-i-j;
if(i * 5 + j * 3 + k / 3 == 100 && k % 3 == 0)
printf("公鸡%d 母鸡%d 小鸡%d\n",i,j,k);}
return 0;
}
求解为:公鸡4 母鸡18 小鸡78
公鸡8 母鸡11 小鸡81
5. 输入一行字符,统计数字字符,字母,空格和其他字符的个数
C=getchar();
While(c!=’\n’)
{if() x1++;
C=getchar();
}
6. 实现简单的投票计数功能:3个人的姓名分别用字符’a’、’b’和’c’表示,当投票的所选人姓名是’#’时结束投票,变量number_a、number_b、number_c分别表示三个候选人的得票数。
统计投票数的操作步骤如下:
(1)输入第一张投票所选人的姓名。
(2)判断输入的候选人是谁,如果输入的是字符’a’,则’a’候选人的得票数number_a加1;如果是’b’,则’b’ 候选人的得票数number_b加1;如果是’c’,则’c’ 候选人的得票number_c数加1。
(3)输入下一张投票所选人的姓名。
(4)判断投票的所选人姓名,如果姓名不是’#’,则转到(2);如果姓名是’#’,则转到(5)。
(5)输出各候选人的得票结果。
#include<stdio.h>
int main()
{
int number_a=0,number_b=0,number_c=0;
char c;
c=getchar();
while(c!='#')
{
if(c=='a') number_a++;
else if(c=='b') number_b++;
else if(c=='c') number_c++;
c=getchar();
if(c=='#') break;
}
pirintf("number_a=%d number_b=%d number_c=%d\n",number_a,number_b,number_c);
return 0;
}
输入abc#
输出number_a=1 number_b=1 number_c=1
7. 输出100—1000之间所有的水仙花数, 水仙花数指满足一个三位数等于每一位数的立方和的数,例如 153=13+53+33
#include<stdio.h>
int main()
{
int x,a,b,c;
for(x=100;x<1000;x++)
{a=x%10;b=x/10%10;c=x/100;
if(x==a*a*a+b*b*b+c*c*c)
printf("%d ",x);
}
return 0;
}
输出结果为153 370 371 407
8. 输入一批非零的整数,以输入零表示结束,求这批数据的平均值并输出。
int n;
Scanf(“%d”,&n);
While(n)
{
Scanf(“%d”,&n);
}
include<stdio.h>
int main()
{
float n,i=0,sum=0;
float x;
scanf("%f",&n);
while(n!=0)
{
sum+=n;
scanf("%f",&n);i++;
if(n==0) break;
}
x=sum/i;
printf("sum=%.2f i=%.2f x=%.2f\n",sum,i,x);
return 0;
}
输入1 2 3 4 5 6 0
输出sum=21.00 i=6.00 x=3.50
9.习题求最大公约数和最小公倍数
#include<stdio.h>
int main()
{
int a,b,t,x;
scanf("%d %d",&a,&b);
if(a<b){t=a;a=b;b=t;}
for(t=b;t>0;t--)
{
if(a%t == 0 && b%t == 0)break;
x=t;}
x=a*b;
for(;x>0;x--)
if(x%b == 0) break;
printf("最大公约数=%d\n最小公倍数=%d\n",t,x/t);
return 0;
}
输入45 10
输出 最大公约数=5
最小公倍数=90
10.习题5.16
四、心得体会:
1.通过该次的上机能较好掌握编程的基本方法
2.通过比较不同的程序的不同理解了程序的作用