循环练习

1.我有一个数组是int nArr[10] = {1,2,3,4,5,6,9,8,7,0};

请使用循环结构,输出数组中的每一个值。

int main()
{
    //遍历操作,全部输出
    //遍历,就是每一个元素访问一次
    int   nArr[10] = { 1,2,3,4,5,6,9,8,7,0 };
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", nArr[i]);
    }
    return 0;
}

2.请在数组中寻找7这个数值,然后输出它所在的位置

int main()
{
    //遍历操作,全部输出
    //遍历,就是每一个元素访问一次
    int   nArr[10] = { 1,2,7,4,5,6,9,8,3,0 };
    for (int i = 0; i < 10; i++)
    {
        if (nArr[i]==7)
        {
            printf("7这个元素所在的位置为%d", i);
            break;
        }
    }
    return 0;
}

3.从键盘输入一个数,判断这个数在不在数组中,在的话输出yes,不在的话输出no

方法1:

int main()
{
    //遍历操作,全部输出
    //遍历,就是每一个元素访问一次
    int  nArr[10] = { 1,2,7,4,5,6,9,8,3,0 };
    int  nNum = 0;
    printf("please input a number:");
    scanf_s("%d",&nNum);
    int i = 0;
    //当i自增到10的时候,就说明数组中,没有这个数
    //此时的条件,也不满足了,就退出循环了
    for ( ;i < 10; i++)
    {
        if (nArr[i]== nNum)
        {
            break;
        }
    }
    //i不为10就说明找到了
    if (i!=10)
    {
        printf("yes");
    }
    //i为10就说明没找到
    else
    {
        printf("no");
    }


    return 0;
}

方法2:

int main()
{
    //遍历操作,全部输出
    //遍历,就是每一个元素访问一次
    int  nArr[10] = { 1,2,7,4,5,6,9,8,3,0 };
    int  nNum = 0;
    printf("please input a number:");
    scanf_s("%d",&nNum);

    int nFind = 0;
    for (int i = 0;i < 10; i++)
    {
        if (nArr[i]== nNum)
        {
            nFind = 1;
            break;
        }
    }
    if (nFind==1)
    {
        printf("yes");
    }
    else
    {
        printf("no");
    }
    return 0;
}                                                        

4.我们打印出这个图形

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8 9
int main()
{
    for (int n = 2; n <= 10; n++)
    {
        for (int i = 1; i < n; i++)
        {
            printf("%d ", i);
        }
        printf("\n");
    }
}

5.打印一个99乘法表

int main()
{
    for (int n = 1; n <=9; n++)
    {
        for (int i = 1; i <= n; i++)
        {
            printf("%d*%d=%d ", i, n, i * n);
        }
        printf("\n");

    }
}

6.鸡兔同笼问题

问:有一群鸡和一群兔子在一个笼子里,总共有脚110个,头40个,请问鸡和兔子分别多少只。

int main()
{
    int nCount = 0;
    //假设鸡是i只
    //假设兔子是j只
    for (int i = 0; i < 40; i++)
    {
        for (int j = 0; j < 40; j++)
        {
            if (i+j==40&&2*i+4*j == 110)
            {
                printf("鸡是%d只 兔子是%d只\n", i, j);
            }
            nCount++;
        }
    }
    printf("我们循环了%d次解决了这个问题\n",nCount);
    return 0;
}

使用break来减少循环次数:

int main()
{
    int nCount = 0;
    //假设鸡是i只
    //假设兔子是j只
    int nFind = 0;
    for (int i = 0; i < 40; i++)
    {
        for (int j = 0; j < 40; j++)
        {
            if (i+j==40&&2*i+4*j == 110)
            {
                printf("鸡是%d只 兔子是%d只\n", i, j);
                nFind = 1;
                break;
            }
            nCount++;
        }
        if (nFind==1)
        {
            break;
        }
    }
    printf("我们循环了%d次解决了这个问题\n",nCount);
    return 0;
}    

我们可以使用1重循环解决这个问题
因为如果鸡有i只,那么兔子就是40-i
如果兔子有i只,那么鸡就是40-i

int main()
{
    int nCount = 0;
    //假设鸡是i只
    //假设兔子是j只
    for (int j = 0; j < 27; j++)
    {
        if (j*4+(40-j)*2==110)
        {
            printf("鸡是%d只 兔子是%d只\n", 40-j,j);
            break;
        }
        nCount++;
    }
    printf("我们循环了%d次解决了这个问题\n",nCount);
    return 0;
}
最后修改:2020 年 08 月 26 日
如果觉得我的文章对你有用,请随意赞赏