C语言 实验五 循环结构程序设计

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);      
}
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值