双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全部是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个空格 + 星号
//* *
// * *
// * *
// *
// *
// *
// *