有规律可循的排版题(简单)
# include <iostream>
using namespace std;
main(){
int n;
while(cin>>n){
//计算最后一排*的个数
int lastLine = n + 2*(n-1);
//输出*的个数
int x = n;
for(int i=0;i<n;i++){
int k = lastLine - x;
for(int j=0;j<k;j++){
cout<<" ";
}
for(int k=0;k<x;k++){
cout<<"*";
}
cout<<endl;
x += 2;
}
}
}
需要先排版再输出
# include<iostream>
# include<stdio.h>
using namespace std;
//将数组的某一行的x-y编程字符c
void hang(char kuang[][80],int h,int x,int y,char c){
for(int i=x;i<=y;i++){
kuang[h][i] = c;
}
}
void lie(char kuang[][80],int l,int x,int y,char c){
for(int i=x;i<y;i++){
kuang[i][l] = c;
}
}
//将数组的某一列的x-y编程字符c
main(){
int n;
char out;
char in;
while(cin>>n){
cin>>in;
cin>>out;
char c = in;
char kuang[n][80];
int up = n/2,down = n/2,left = n/2,right = n/2;
while(up>=0){
hang(kuang,up,left,right,c);
hang(kuang,down,left,right,c);
lie(kuang,left,up,down,c);
lie(kuang,right,up,down,c);
if(c==out){
c = in;
}else{
c = out;
}
up--;
down++;
left--;
right++;
}
if(n!=1){
kuang[0][0] = ' ';
kuang[0][1] = ' ';
kuang[n-1][0] = ' ';
kuang[n-1][1] = ' ';
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
printf("%c",kuang[i][j]);
}
cout<<endl;
if(i!=n-1){
cout<<endl;
}
}
}
}
注:注意当只有一行的时候,不用去掉角。且行之间有间隔,最后没有间隔。