以文本方式查看主题

-  课外天地 李树青  (http://njcie.com/bbs/index.asp)
--  C语言程序设计  (http://njcie.com/bbs/list.asp?boardid=29)
----  [推荐]第四课代码讲义:循环语句之一  (http://njcie.com/bbs/dispbbs.asp?boardid=29&id=1566)

--  作者:admin
--  发布时间:2015/10/20 13:04:01
--  [推荐]第四课代码讲义:循环语句之一

打印1到100之间所有的整数:
int main()
{
    int i;

    for(i=1; i<=100; i++)
        printf("%d\\n",i);

    return 0;
}


每五个换行
int main()
{
    int i;

    for(i=1; i<=100; i++)
    {
        printf("%d\\t",i);
        if(i%5==0)
            printf("\\n");
    }


    return 0;
}

打印奇数
int main()
{
    int i;

    for(i=1; i<=100; i++)
    {
        if(i%2==1)
            printf("%d\\t",i);

    }


    return 0;
}

增加换行
int main()
{
    int i;

    for(i=1; i<=100; i++)
    {
        if(i%2==1)
            printf("%d\\t",i);
        if(i%10==9)
            printf("\\n");

    }


    return 0;
}


简单版本
int main()
{
    int i;

    for(i=1; i<=100; i+=2)
    {
        printf("%d\\t",i);

    }


    return 0;
}

 

倒序打印
int main()
{
    int i;

    for(i=100; i>0; i--)
    {
        if(i%2==1)
            printf("%d\\t",i);

    }


    return 0;
}

进一步变换代码
int main()
{

    int i=1;
    for(; i<=100; i++)
    {
        printf("%d\\t",i);

    }


    return 0;
}

请问该程序在循环结束后,i变量值为多少?

进一步变换代码
int main()
{

    int i=1;
    for(; i<=100;)
    {
        printf("%d\\t",i);
        i++;

    }


    return 0;
}

等价写法
int main()
{

    int i=1;
    while(i<=100)
    {
        printf("%d\\t",i);
        i++;

    }


    return 0;
}

死循环
int main()
{
    int i;

    while(i>=1)
    {
        printf("%d\\t",i);
    }


    return 0;
}

 

请问这个程序是否为死循环?
int main()
{
    int i;

    while(i>=1)
    {
        printf("%d\\t",i);
        i*=2;
    }


    return 0;
}

提示:并非死循环,因为变量溢出后产生的值会为负数,从而小于1

猜数字:
版本1:
#include <time.h>

int main()
{
    srand(time(0));
    //printf("%d",rand()%100+1);
    int rnd=rand()%100+1;
    printf("%d\\n",rnd);
    int nmbr;

    while(1)
    {
        scanf("%d",&nmbr);
        if(nmbr>rnd)
        {
            printf("太大了!\\n");
        }
        else if(nmbr<rnd)
        {
            printf("太小了!\\n");

        }
        else
        {
            printf("太好了!\\n");
            return 0;
        }
    }

 

    return 0;
}

版本2:
#include <time.h>

int main()
{
    srand(time(0));
    //printf("%d",rand()%100+1);
    int rnd=rand()%100+1;
    //printf("%d\\n",rnd);
    int flag=1;
    int nmbr;

    while(flag==1)
    {
        scanf("%d",&nmbr);
        if(nmbr>rnd)
        {
            printf("太大了!\\n");
        }
        else if(nmbr<rnd)
        {
            printf("太小了!\\n");

        }
        else
        {
            printf("太好了!\\n");
            flag=0;
        }
    }

 

    return 0;
}


增加次数统计
#include <time.h>

int main()
{
    srand(time(0));
    //printf("%d",rand()%100+1);
    int rnd=rand()%100+1;
    printf("%d\\n",rnd);
    int flag=1;
    int nmbr;
    int count=0;

    while(flag==1)
    {
        count++;
        scanf("%d",&nmbr);
        if(nmbr>rnd)
        {
            printf("太大了!\\n");
        }
        else if(nmbr<rnd)
        {
            printf("太小了!\\n");

        }
        else
        {
            printf("太好了!你总共猜了%d次!\\n",count);
            flag=0;
        }
    }

 

    return 0;
}

 

 

 

 

 

 

 

 

 

 


 

[此贴子已经被作者于2015-11-30 10:54:26编辑过]