lesson33 三种循环语句

task:【利用循环求和】求1000以内所有偶数的和

要求:请编出3个程序来,分别用三种循环语句完成,注意体会各种循环语句的执行过程及语法特点。

代码

/*
*Copyright @2017,CSDN学院
*All rights reserved.
*文件名称:main.c
*作    者:袁生
*完成日期:2017年10月27日
*版 本 号:v1.0
*问题描述:输出1000以内所有偶数的和
*要求:请编出3个程序来,分别用三种循环语句完成,注意体会各种循环语句的执行过程及语法特点。
*/
#include <stdio.h>
int main( )
{
    int i=0,total=0;
    /*方法一
    for (i=0;i<=1000;i+=2)
        total+=i;
    *方法二 */
    do
    {
        total+=i;
        i+=2;
    }while (i<=1000);

    //方法三
    /*
    while (i<=1000)
    {
        total+=i;
        i+=2;
    }*/
    printf("1000内所有偶数和为:%d\n",total);
    return 0;
}

输出结果



task2:【求阶乘】输入n,求 n! 并输出

代码

/*
*Copyright @2017,CSDN学院
*All rights reserved.
*文件名称:main.c
*作    者:袁生
*完成日期:2017年10月27日
*版 本 号:v1.0
*问题描述:输入n,求n!并输出
*/
#include <stdio.h>
int main( )
{
    int n,i=1,total=1;
    printf("请输入n:");
    scanf("%d",&n);
    while(i<=n)
    {
        total*=i;
        i++;
    }
    printf("n!为:%d\n",total);
    return 0;
}

运行结果



task3:【求x^n】输入x,n,求x的n次方(x^n)并输出(比较n!看有什么区别)

代码

/*
*Copyright @2017,CSDN学院
*All rights reserved.
*文件名称:main.c
*作    者:袁生
*完成日期:2017年10月27日
*版 本 号:v1.0
*问题描述:输入x,n,求x^n并输出
*/
#include <stdio.h>
int main( )
{
    int x,n,i=1,total=1;
    printf("请输入x,n:");
    scanf("%d %d",&x,&n);
    while(i<=n)
    {
        total*=x;           //此处若是换为total*=i就变成了求n!
        i++;
    }
    printf("x^n为:%d\n",total);
    return 0;
}

输出结果


心得

若为total*=i,则求的是n!,若为total*=x,则求的是x的n次方即x^n


task:4:【输出这样的整数】输出1000以内能被3整除且个位数为6的所有整数。

代码

/*
*Copyright @2017,CSDN学院
*All rights reserved.
*文件名称:main.c
*作    者:袁生
*完成日期:2017年10月27日
*版 本 号:v2.0
*问题描述:输出1000以内能被3整除且个位数为6的所有整数。
*/
#include <stdio.h>
int main( )
{
    int  i,j;
    //方法一:
    /*
    for (i=0; j<=1000; i++)        // (1)
    {
        j=i*10+6;
        if (j%3==0)
            printf ("%d ",j);    // (2)
    }
    */
    //方法二:
    
    for (i=0;i<=1000;i++)
    {
        if (i%3==0)                 //如果能被3整除,继续看个位是否是6
            if (i%10==6)            //如果个位是6,则打印该数,不是则加3继续循环
                printf ("%d ",i);
            else
            {
                i+=2;               //个位不是6则加2循环,加上for的表达式3,所以是加3判断再循环
                continue;
            }
        else
            continue;               //不能整除3则加1继续循环
    }
    //方法三:
    /*
    for (i=0;i<=1000;i++)
    {
        if (i%10==6)                //个位是6再判断能否被3整除,个位不是6则加一循环
        {
           if(i%3==0)
            {
                printf("%d ",i);
                i+=9;               //能被3整除就打印该数,i加9再转for循环表达式3,形成加10循环
            }
            else
                i+=9;               //不能被3整除就找下一个个位是6的数(在该数基础上加10)
        }

    }*/
    printf("\n");
    return 0;
}
运行结果

心得
方法二是先找能被3整除的数再找个位是6的数,相较于方法一先找个位是6的数再找个位是3的数来说,效率要低上许多。以后尽量使用高效的方法。
方法二优化:

    //方法二:

    for (i=0;i<=1000;i++)
    {
        if (i%3==0)                 //如果能被3整除,继续看个位是否是6
        {
            if (i%10==6)            //如果个位是6,则打印该数,不是则加3继续循环
            {
                printf ("%d ",i);
                i+=2;
            }
            else
                i+=2;               //个位不是6则加2循环,加上for的表达式3,所以是加3判断再循环
        }
        //不能整除3则加1继续循环
    }

task5:【多数中的最大】编程序,输入10个整数,找出最大数。
代码
/*
*Copyright @2017,CSDN学院
*All rights reserved.
*文件名称:main.c
*作    者:袁生
*完成日期:2017年10月27日
*版 本 号:v1.0
*问题描述:编程序,输入10个整数,找出最大数。
*/
#include <stdio.h>
int main( )
{
    int x,i,max;
    scanf("%d",&x);
    max=x;
    for (i=2;i<=10;i++)
    {
        scanf("%d",&x);
        max=(max>x)?max:x;
    }
    printf("max=%d\n",max);
    return 0;
}

运行结果

心得
输入n个数据巧妙使用循环,简单 粗暴,而不是这样

scanf("%d %d %d %d %d",&a,&b...)
涉及n个变量。




猜你喜欢

转载自blog.csdn.net/epsilono1/article/details/78360750