Jzoj 循环嵌套部分代码(共27题)

时间:2025-04-04 07:50:01

1102: 【入门】字符图形1-星号矩形

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

1103: 【入门】字符图形2-星号直角

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

1104: 【入门】字符图形3-平行四边形

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

1105: 【入门】字符图形4-星号正三角

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

1106: 【入门】字符图形5-星号梯形

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

1107: 【入门】字符图形6-星号倒三角

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

或者

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

1108: 【入门】字符图形7-星号菱形

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

或者

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

1109: 【入门】字符图形8-数字三角

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

1110: 【入门】字符图形9-数字正三角

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

1111: 【入门】字符图形10-字母三角

#include <bits/stdc++.h>
using namespace std;
int n;
int main()
{
	scanf("%d", &n);
	for(int i=1; i<=n; ++i){
		for(int j=1; j<=n-i; ++j){
			printf(" ");
		}
		for(int j=1; j<=2*i-1; ++j){
			printf("%c", 'A'+i-1);
		}
		printf("\n");
	}
	return 0;
}

1112: 【入门】字符图形11-字母正三角

#include <bits/stdc++.h>
using namespace std;
int n;
int main()
{
	scanf("%d", &n);
	for(int i=1; i<=n; ++i){
		for(int j=1; j<=n-i; ++j){
			printf(" ");
		}
		for(int j=1; j<=2*i-1; ++j){
			printf("%c", 'A'+j-1);
		}
		printf("\n");
	}
	return 0;
}

1040: 【入门】打印字母塔

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

1041: 【入门】打印星号三角形

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

1201: 【入门】沙漏

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

1129: 【基础】空心六边形

#include <bits/stdc++.h>
using namespace std;
int n, cnt1, cnt2;
int main()
{
	scanf("%d", &n);
	for(int i=1; i<=n-1; ++i){
		printf(" ");
	}
	for(int i=1; i<=n; ++i){
		printf("*");
	}
	printf("\n");
	cnt1=n-2;
	cnt2=n;
	for(int i=2; i<=n; ++i){
		for(int j=1; j<=cnt1; ++j){
			printf(" ");
		}
		printf("*");
		for(int j=1; j<=cnt2; ++j){
			printf(" ");
		}
		printf("*");
		printf("\n");
		cnt1--;
		cnt2+=2;
	}
	cnt1=1;
	cnt2-=4;
	for(int i=1; i<=n-2; ++i){
		for(int j=1; j<=cnt1; ++j){
			printf(" ");
		}
		printf("*");
		for(int j=1; j<=cnt2; ++j){
			printf(" ");
		}
		printf("*");
		printf("\n");
		cnt1++;
		cnt2-=2;
	}
	for(int i=1; i<=n-1; ++i){
		printf(" ");
	}
	for(int i=1; i<=n; ++i){
		printf("*");
	}
	return 0;
}

1079: 【基础】挑战赛第二题——放大的X

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

1035: 【入门】素数的个数

#include <bits/stdc++.h>
using namespace std;
int n, m, asd;
bool flag;
int main()
{
	scanf("%d %d", &m, &n);
	for(int i=m; i<=n; ++i){
		if(i<2){
			continue;
		}
		else if(i==2){
			asd++;
			continue;
		}
		else{
			flag=0;
			for(int j=2; j<=sqrt(i); ++j){
				if(i%j==0){
					flag=1;
					break;
				}
			}
			if(flag==0){
				asd++;
			}
		}
	}
	printf("%d\n", asd);
	return 0;
}

1086: 【入门】输出m和n范围内的完全数(完美数)

#include <bits/stdc++.h>
using namespace std;
int n, m, sum;
int main()
{
	scanf("%d %d", &m, &n);
	for(int i=m; i<=n; ++i){
		//计算约数和
		sum=1;
		for(int j=2; j<=sqrt(i); ++j){
			if(i%j==0){
				sum+=j;
				sum+=i/j;
			}
			if(j*j==i){
				sum-=j;
			}
		}
		if(i==sum){
			printf("%d ", i);
		}
	}
	return 0;
}

1027: 【入门】兑换硬币

#include <bits/stdc++.h>
using namespace std;
int asd;
int main()
{
	for(int i=1; i<=100; ++i){
		for(int j=1; j<=50; ++j){
			for(int k=1; k<=20; ++k){
				if(i+2*j+5*k==100){
					asd++;
				}
			}	
		}
	}
	printf("%d", asd);
	return 0;
}

1160: 【入门】郭远摘苹果

#include <bits/stdc++.h>
using namespace std;
int x, m, n, mx, mn=1e9, asd;
int main()
{
	scanf("%d %d", &m, &n);
	for(int i=1; i<=m; ++i){
		for(int j=1; j<=n; ++j){
			scanf("%d", &x);
			mx=max(mx, x);
			mn=min(mn, x);
		}
	}
	asd=mx-mn;
	printf("%d", asd);
	return 0;
}

1085: 【入门】百钱百鸡问题

#include <bits/stdc++.h>
using namespace std;
int z;
int main()
{
	for(int i=1; i<=20; ++i){
		for(int j=1; j<=33; ++j){
			z=100-i-j;
			if(z%3==0 && 5*i+3*j+z/3==100){
				printf("%d %d %d\n", i, j, z);
			}
		}
	}
	return 0;
}

1294: 【入门】购买文具

#include <bits/stdc++.h>
using namespace std;
int n, asd;
int main()
{
	scanf("%d", &n);
	n*=10;
	for(int i=1; i<=n/8; ++i){
		for(int j=1; j<=n/2; ++j){
			for(int k=1; k<=n; ++k){
				if(8*i+2*j+k==n && (i+j+k)>30){
					asd++;
				}	
			}
		}
	}
	printf("%d", asd);
	return 0;
}

1998: 【入门】桐桐去购物

#include <bits/stdc++.h>
using namespace std;
int n, m, z;
int main()
{
	scanf("%d %d", &n, &m);
	for(int i=0; i<=n/5; ++i){
		for(int j=0; j<=n/3; ++j){
			z=m-i-j;
			if(z%3==0 && 5*i+3*j+z/3==n){
				printf("%d %d %d\n", i, j, z);
			}
		}
	}
	return 0;
}

1089: 【入门】那些4位数

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

1090: 【入门】那些4位数II

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

1093: 【入门】纯粹素数

#include <bits/stdc++.h>
using namespace std;
int p, x, y, z;
bool flag;
int main()
{
	for(int i=1000; i<3000; ++i){
		flag=false;
		for(int j=2; j<=sqrt(i); ++j){
			if(i%j==0){
				flag=true;
				break;
			}
		}	
		//i是质数 
		if(flag==false){
			x=i%1000;
			y=i%100;
			z=i%10;
			//有一个小于2, 不是质数, 直接跳过 
			if(x<2 || y<2 || z<2){
				continue; 
			}
			bool flag1=false;
			for(int j=2; j<=sqrt(x); ++j){
				if(x%j==0){
					flag1=true;
					break;
				}
			} 
			if(flag1==true){	//x不是质数 
				continue;
			}
			flag1=false;
			for(int j=2; j<=sqrt(y); ++j){
				if(y%j==0){
					flag1=true;
					break;
				}
			} 
			if(flag1==true){	//y不是质数 
				continue;
			}
			flag1=false;
			for(int j=2; j<=sqrt(z); ++j){
				if(z%j==0){
					flag1=true;
					break;
				}
			} 
			if(flag1==true){	//z不是质数 
				continue;
			}
			printf("%d\n", i);
		}
	}
	return 0;
}

1096: 【入门】纯粹合数

#include <bits/stdc++.h>
using namespace std;
int p, x, y;
bool flag;
int main()
{
	for(int i=100; i<=999; ++i){
		flag=false;
		for(int j=2; j<=sqrt(i); ++j){
			if(i%j==0){
				flag=true;
				break;
			}
		}	
		//i不是合数 
		if(flag==false){
			continue;
		}
		else{	//i是合数 
			x=i/10;
			y=i/100;
			//有一个小于2, 不是合数, 直接跳过 
			if(x<2 || y<2){
				continue; 
			}
			bool flag1=false;
			for(int j=2; j<=sqrt(x); ++j){
				if(x%j==0){
					flag1=true;
					break;
				}
			} 
			if(flag1==false){	//x不是合数 
				continue;
			}
			flag1=false;
			for(int j=2; j<=sqrt(y); ++j){
				if(y%j==0){
					flag1=true;
					break;
				}
			} 
			if(flag1==false){	//y不是合数 
				continue;
			}
			printf("%d\n", i);
		}	
	}
	return 0;
}