C语言 实验五 循环结构程序设计
一、实验目的
1.掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制
循环的次数。
2.了解条件型循环结构的基本测试方法。
3.掌握如何正确地控制计数型循环结构的次数。
4.了解对计数型循环结构进行测试的基本方法。
5.了解在嵌套循环结构中,提高程序效率的方法。
二、实验学时
4 学时
三、实验内容
1.编程求 2+4+6+„„„„+100 的和。
2.编程求 n!
3.编程求和 s=1!+2!+……+n!
4.有一数列:2/1,3/2,5/3,8/5,„求出这个数列的前 10 项之和,保留 2 位
小数。(该序列从第二项起,每一项的分子是前一项分子与分母之和)
5.打印 1000 以内的“水仙花数”。“水仙花数”是一个三位数,其各位数立方
和等于该数本身。
6.打印下列图案
7.有若干只鸡兔同在一个笼子里,从上面数,有 35 个头;从下面数,有 94 只脚。
问笼中各有几只鸡和兔?编程利用循环语句用试凑法完成。
8.一个数如果恰好等于它的因子之和,这个数就称为完数。求 100 之内的所有完
数。
9.计算两个数的最大公约数; 分析:首先,随机输入两个数 m,n;其次,算法:
使 k 为 m 除以 n 的余数,如果 m 能被 n 整除,则 k 值为 0,n 为这两个数的最大公约数,否则,使 k 代替 n,n 代替 m,重复以上过程,直到 k 值为 0。
1,2,3,4,9分别用三种循环结构:for,while,do-while
程序代码如下:
1.
//①用while语句://
#include<stdio.h>
int main()
{
int i=0,j=2;
while(j<=100)
{
i=i+j;j=j+2;
}
printf("%d",i);
}
//②用for语句://
#include<stdio.h>
int main()
{
int i,j;
for(i=0,j=2;j<=100;)
{
i=i+j,j+=2;
}
printf("%d",i);
}
//③用do-while语句://
#include<stdio.h>
int main()
{
int i=0,j=2;
do
{
i=i+j,j+=2;
} while(j<=100);
printf("%d",i);
}
//①用while语句://
#include<stdio.h>
int main()
{
double i=1;
int n,j=1;
printf("请输入n:"); scanf("%d",&n);
while(j<=n)
{
i=i*j;j++;
}
printf("n!=%.0lf",i);
}
//②用do-while语句://
#include<stdio.h>
int main()
{
double i=1;
int n,j=1;
printf("请输入n:");
scanf("%d",&n);
do
{
i=i*j;j++;
} while(j<=n);
printf("n!=%.0lf",i);
}
//③用for语句://
#include<stdio.h>
int main()
{
double i;
int n,j;
printf("请输入n:");
scanf("%d",&n);
for(i=1,j=1;j<=n;j++)
{
i*=j;
}
printf("n!=%.0lf",i);
}
//①用while语句://
#include<stdio.h>
int main()
{
int n;
double i=1,j=1,s=0;
printf("请输入n:");
scanf("%d",&n);
while(j<=n)
{
i=i*j;j++;s+=i;
}
printf("s=%.0lf",s);
}
//②用do-while语句://
#include<stdio.h>
int main()
{
int n;
double i=1,j=1,s=0;
printf("请输入n:");
scanf("%d",&n);
do
{
i*=j,j++,s+=i;
} while(j<=n);
printf("s=%.0lf",s);
}
//③用for语句://
#include<stdio.h>
int main()
{
int n;
double i=1,j=1,s=0;
printf("请输入n:");
scanf("%d",&n);
for(;j<=n;j++)
{
i*=j,s+=i;
}
printf("s=%.0lf",s);
}
//①用for语句:
#include<stdio.h>
int main()
{
float i=1,j=2,s=0;
int k;
for(k=1;k<=10;k++)
{
s+=j/i;
float x=i;
i=j;
j=j+x;
}
printf("%.2f", s);
}
//②用while语句:
#include<stdio.h>
int main()
{
float i=1,j=2,s=0;
int k=1;
while(k<=10)
{
s+=j/i;
float x=i;
i=j,j=j+x;
k++;
}
printf("%.2f", s);
}
//③用do-while语句:
#include<stdio.h>
int main()
{
float i=1,j=2,s=0;
int k=1;
do
{
s+=j/i;
float x=i;
i=j,j=j+x,k++;
} while(k<=10);
printf("%.2f", s);
}
#include<stdio.h>
int main()
{
int i=100,j,s,n;
printf("1000以内的水仙花数:");
while(i<1000&&i>99)
{
j=i/100;s=i%100/10;n=i%100%10;
if(j*j*j+s*s*s+n*n*n==i)
printf("%d ",i);
i++;
}
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j,k;
for(i=1;i<=4;i++)
{
for(j=1;j<=4-i;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
printf("*");
for(j=1;j<=4;j++)
printf(" ");
for(k=1;k<=9-2*i;k++)
printf("*");
for(j=1;j<=4;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
}
#include<stdio.h>
int main()
{
int i,j;
for(i=0,j=35;i*2+j*4!=94;i++,j--);
printf("鸡%d只,兔%d只",i,j);
}
#include<stdio.h>
int main()
{
int i,j;printf("100以内的完数:");
for(i=100;i>0;i--)
{
int s = 0;
for(j=2;j<100;j++)
{
if(i%j==0&&i!=j)
s=s+j;
}
if(i==s+1)
printf("%d ",i);
}
return 0;
}
//①用while语句:
#include<stdio.h>
int main()
{
int m,n,s;
printf("请输入m,n:");
scanf("%d,%d",&m,&n);
while(m==0||n==0)
{
printf("输入无意义,请重新输入:");
scanf("%d,%d",&m,&n);
}
while(n!=0)
{
s=m%n;
if(s==0)break;
m=n;
n=s;
}
printf("%d", n);
}
//②用do-while语句:
#include<stdio.h>
int main()
{
int m,n,s;
printf("请输入m,n:");
scanf("%d,%d",&m,&n);
while(m==0||n==0)
{
printf("输入无意义,请重新输入:");
scanf("%d,%d",&m,&n);}
do
{
s=m%n;
if(s==0)break;
m=n;
n=s;
} while(n!=0);
printf("%d", n);
}
//③用for语句:
#include<stdio.h>
int main()
{
int m,n,s;
printf("请输入m,n:");
scanf("%d,%d",&m,&n);
while(m==0||n==0)
{
printf("输入无意义,请重新输入:");
scanf("%d,%d",&m,&n);
}
for(;n!=0;)
{
s=m%n;
if(s==0)break;
m=n;
n=s;
}
printf("%d", n);
}