双for循环-嵌套循环

双重for循环其实就是在一个循环中还有另一个循环,也被称之为嵌套循环

#include<bits/stdc++.h>
using namespace std;
int main()
{
    for(int i=1;i<=5;i++)
    {
        for(int j=1;j<=5;j++) 
        {
            printf("i=%d,j=%d ",i,j);
        }
        printf("\n");
    }
    return 0;
}

比如上面的程序就会得到

i=1,j=1 i=1,j=2 i=1,j=3 i=1,j=4 i=1,j=5
i=2,j=1 i=2,j=2 i=2,j=3 i=2,j=4 i=2,j=5
i=3,j=1 i=3,j=2 i=3,j=3 i=3,j=4 i=3,j=5
i=4,j=1 i=4,j=2 i=4,j=3 i=4,j=4 i=4,j=5
i=5,j=1 i=5,j=2 i=5,j=3 i=5,j=4 i=5,j=5

可以看到第一行时i全部是1,而j会从1开始++一直到5;所以双重循环是必须得执行完最里层的循环后,外层的循环才会执行到下一轮;每一次循环的执行,都是在执行该循环内所包含的所有循环体代码;

比如在上述的程序中,for(int i=1;i<=5;i++)就会执行

for(int j=1;j<=5;j++) 
{
    printf("i=%d,j=%d ",i,j);
}
printf("\n");

而在for(int i=1;i<=5;i++)的执行里又有j的循环 for(int j=1;j<=5;j++) ,所以i循环的每次执行前,都要先执行j循环中的

printf("i=%d,j=%d ",i,j);

执行完了j的循环,才会去执行j循环下面的

printf("\n");

 

4872:记数问题

#include<bits/stdc++.h>
#include<iostream> //C++
#include<cstdio> //有这个才能使用printf 
using namespace std;
int main()
{
    //4872
    //定义输入n,x,sum=0 
    int n,x,sum=0;
    cin>>n>>x; 
    //循环1到n
    for(int i=1;i<=n;i++)
    {
        //定义变量y = i
        int y = i; //定义整型变量y并且把i的数值赋值给y
        while(y>0)
        {
            if(y%10==x) //y%10取出y的个位数 
                sum++; //统计结果sum+1
            y = y/10; //舍弃个位数 
        } 
    } 
    cout<<sum;
    return 0;
}

 

7306: 打印三角形

#include <iostream>
#include <cstring>
#include <stdio.h>
#include <cmath>

using namespace std;

int main()
{
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) { //打印上半部分1-n行的星号
        for (int j = 1; j <= i; j++) {//每行有i个星号
            cout << '*';
        }
        cout << endl;
    }
    for (int i = n-1; i > 0; i--) { //打印下半部分的星号
        for (int j = i; j >= 1; j--) { //每行有i个星号
            cout << '*';
        }
        cout << endl;
    }


    return 0;
}

5970: 打印长方形

#include<iostream>
using namespace std;
int main(){
    int r,c;
    cin>>r>>c;
    for(int i=1;i<=r;i++)
    {
        for(int j=1;j<=c;j++){
            cout<<"*";
        }
        cout<<endl;
    }
    return 0;
}

6145: 打印平行四边形

#include<bits/stdc++.h>
using namespace std;
int main()
{//6145 打印平行四边形 
    int n;
    cin>>n;
    for(int i=1;i<=n;i++) //n行
    {
        //每一行都由i-1个空格和n个星号组成
        for(int j=1;j<=i-1;j++) cout<<" "; //打印i-1个空格
        for(int j=1;j<=n;j++) cout<<"*"; //输出n个星号
        cout<<endl; //换行 
    } 
     return 0;
}

1172: C语言实验题――打印菱形

#include<bits/stdc++.h>
using namespace std;
int main()
{ // 1172: C语言实验题――打印菱形
    int n;
    cin>>n;
    for(int i=1;i<=n;i++) //上半部分
    {
        for(int j=1;j<=n-i;j++)cout<<" "; //循环n-i 
        for(int j=1;j<=2*i-1;j++) cout<<"*"; //循环2*i-1次输出星号
        cout<<endl; //换行 
    }
    for(int i=1;i<=n-1;i++) //下半部分 
    {
        for(int j=1;j<=i;j++) cout<<" "; //循环i次输出空格
        for(int j=1;j<=2*(n-i)-1;j++) cout<<"*"; //循环2*(n-i)-1次输出星号
        cout<<endl;//换行 
    }
     return 0;
}
//菱形分为两大部分
//一、上半部分有n行,每行由n-i个空格 + (1到i个数字 + i-1到1个数字) 
//二、下半部分有n-1行,每行由i个空格 + (1到n-i个数字 + n-i-1到1个数字)

1177: C语言实验题――打印数字图形

#include<bits/stdc++.h>
using namespace std;
int main()
{// 1177: C语言实验题――打印数字图形
    int n;
    cin>>n;
    for(int i=1;i<=n;i++) //上半部分 
    {
        for(int j = 1;j<=n-i;j++) cout<<" "; //每行n-i个空格 
        for(int j = 1;j<=i;j++) cout<<j; //打印从1到i的数字 
        for(int j = i-1;j>=1;j--) cout<<j; //打印右半边数字 
        cout<<endl;//换行 
    }
    for(int i=1;i<=n-1;i++) //下半部分 
    {
        for(int j = 1; j<=i; j++) cout<<" ";//打印i个空格
        for(int j = 1; j<=n-i; j++) cout<<j;//1到n-i个数字 
        for(int j = n-i-1; j>=1; j--) cout<<j;//n-i-1到1个数字 参考11行代码 
        cout<<endl;//换行 
    }
     return 0;
}
//菱形分为两大部分
//一、上半部分有n行,每行由n-i个空格 + (1到i个数字 + i-1到1个数字) 
//二、下半部分有n-1行,每行由i个空格 + (1到n-i个数字 + n-i-1到1个数字)
//    1
//   121
//  12321
// 1234321
//123454321
// 1234321
//  12321
//   121
//    1

5358: 打印大写字母Y

#include<bits/stdc++.h>
using namespace std;
int main()
{//5358: 打印大写字母Y
    int n;
    cin>>n;
    for(int i=1;i<=n-1;i++) //上半部分
    {
        for(int j=1;j<=i-1;j++)cout<<" ";
        cout<<"*";
        for(int j=1;j<=2*(n-i)-1;j++)cout<<" ";
        cout<<"*"<<endl;
    }
    for(int i=1;i<=n;i++) //下半部分 
    {
        for(int j=1;j<=n-1;j++)cout<<" ";
        cout<<"*"<<endl;7
    }
     return 0;
}
//一、上半部分,n-1行,第i行由(i-1)个空格+星号+(n-i)*2-1个空格+星号 
//二、下半部分,n行, 第i行有n-1个空格 + 星号 
//*     *
// *   *
//  * *
//   *
//   *
//   *
//   *