周六1900C++班级2022-11-12 双重for循环及练习
双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个空格 + 星号 //* * // * * // * * // * // * // * // *