C语言for和while循环的编程实例练习题

for和while循环都是C语言中的循环语句,循环主要是用来遍历的,执行重复的操作。本文主要介绍C语言中for和while循环的使用的练习题,以及相关示例代码。

1、小球自由落体运动

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?利用for()循环函数求出10次后的结果。代码如下,

/*小球自由落体*/
#include<stdio.h>
int main(void){
    double height=100;  //定义初始高度变量height为100
    double S = -100;    //定义初始经过距离为-100,(详情见下)
    for(int i=0;i<10;i++){
        S += height*2;  //除第一次下落外,每次下落间隔为两个返回高度,则初始S赋值为-100.
        height /= 2;    //求第十次反弹高度
    }
    /*输出值*/
    printf("第10次降落时,有 %lf 米\n",S);
    printf("第10次高度 %.8f 米\n",height); //第十次反弹高度共有8位小数
    return 0;
}

2、求解出n以内所有能被5整除的正整数的乘积

n是通过键盘输入一个整数值,代码如下,

#include<stdio.h>
int main(void)
{  
  /*********Begin*********/
  int n,s=1;
  scanf("%d",&n);
  for(int i=5;i<=n;i+=5){
      s*=i;
  }
  printf("%d\n",s);
  /*********End**********/ 
   return 0;
}

3、最大公约数和最小公倍数

最小公倍数等于输入的两个数之积除于它们的最大公约数,先需要求出最大公约数。

1)循环实现

#include<stdio.h>
int main(){
    int a,b;
    printf("请输入a,b的值:");
    scanf("%d %d",&a,&b);
    if(a<b){  //交换a,b 的大小 
        int temp = b;
        b = a;
        a = temp;
    }
    int r;  //r代表余数
    r = a%b;
    int n;
    n = a*b; //最小公倍数为a*b/GCD 
    while(r!=0){
        a = b;
        b = r;
        r = a%b;
    }
    printf("最大公约数是%d,最小公倍数为%d",b,n/b);
    return 0;
}

2)递归实现

#include<stdio.h>
//递归实现最大公约数 
int gcd(int a,int b){
    if(a%b == 0)
        return b;
    else
        return gcd(b,a%b);
}
int main(){
    int a,b;
    printf("请输入a,b的值:");
    scanf("%d %d",&a,&b);
    if(a<b){  //交换a,b 的大小 
        int temp = b;
        b = a;
        a = temp;
    }
    int n;
    n = a*b; //最小公倍数为a*b/GCD 
    printf("最大公约数是%d,最小公倍数为%d",gcd(a,b),n/gcd(a,b));
    return 0;
}

4、字符串中各类字符数的统计

从键盘输入一行字符串,统计其中的大写字母、小写字母、空格、数字、和其他字符的个数。代码如下,

#include<stdio.h>
int main()
{
    int char_num=0,int_num=0,space_num=0,other_num=0;
    char ch;
    while((ch=getchar())!='\n')
    {
        if(ch<='z'&&ch>='a'||ch<='Z'&&ch>='A')
        {
            char_num++;
        }
        else if(ch<='9'&&ch>='0')
        {
            int_num++;
        }
        else if(ch==' ')
        {
            space_num++;
        }
        else
        {
            other_num++;
        }
    }
    printf("%d ",char_num);
    printf("%d ",int_num);
    printf("%d ",space_num);
    printf("%d",other_num);
}

5、水仙花数

阿姆斯特朗数 也就是俗称的 水仙花数 ,是指一个三位数,其各位数字的立方和等于该数本身。例如:153=13+53+33,所以 153 就是一个 水仙花数 。求出所有的 水仙花数 。代码如下,

//导入头文件
#include<stdio.h>
#include<stdlib.h>
//主函数
int main(){
    int i,j,k,n,sumi,sumj,sumk;//定义7个整型数据
 
    printf("\n100-1000 包含的“水仙花”数分别有: \n\n"); 
 
    for(n=100;n<1000;n++){     
 
        //循环求数字个位、十位、百位上的数字
        i=n/100;//求百位       
        j=n/10%10; //求十位       
        k=n%10; //求个位
 
        //求i、j、k的立方和
        sumi=i*i*i;//求个位立方和  
        sumj=j*j*j;//求十位立方和  
        sumk=k*k*k;//求百位立方和
 
         //判断是否为 水仙花数
        if(n==sumi+sumj+sumk){                  
            printf("%-5d",n);//输出 水仙花数 
        } 
    }
 
    printf("\n");//换行     
    return 0;
}

推荐阅读
cjavapy编程之路首页