排版题
例2.7 输出梯形
代码 2.10
#include<iostream>
using namespace std;
int main(){
int h,i,m;
while(cin >> h){
for(i=0;i<h;i++){
m = (h-i-1) * 2;
while(m--)
cout << " ";
m = i * 2 + h;
while(m--)
cout << "*";
cout << endl;
}
}
return 0;
}
例2.8 箩筐
代码 2.11
#include<iostream>
using namespace std;
int main(){
int num,i,j,k;
char ch,a,b;
int cnt = 0;
while(cin >> num >> a >> b){
if(cnt > 0)
cout << endl;
cnt++;
if(num == 1)
cout << a << endl;
else{
char buf[80][80];
for(i=0;i<(num+1)/2;i++){
if((num/2-i)%2 == 0)
ch = a;
else
ch = b;
for(j=i;j<num-i;j++)
for(k=i;k<num-i;k++)
buf[j][k] = ch;
}
buf[0][0] = buf[0][num-1] = buf[num-1][0] = buf[num-1][num-1] = ' ';
for(i=0;i<num;i++){
for(j=0;j<num;j++)
cout << buf[i][j];
cout << endl;
}
}
}
return 0;
}
Repeater
好难,做不出来,先记一下错的代码。
#include<iostream>
#include<math.h>
using namespace std;
char m[6][6];
bool isFill(int i,int j,int n,int r)
{
if(r == 1){
if(m[i][j] == ' ')
return false;
else
return true;
}
int t;
t = pow(n,r-1);
int x = i/t;
int y = j/t;
if(m[x][y] != ' ')
return false;
else{
x = i%t;
y = j%t;
return isFill(x,y,n,r-1);
}
}
int main(){
int n,i,j;
while(cin >> n){
if(n == 0)
break;
getchar();
char symbol = ' ';
for(i=0;i<n;i++)
cin.getline(m[i],6);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(m[i][j] != ' '){
symbol = m[i][j];break;
}
int r;
cin >> r;
int all[3005][3005] = {0};
for(i=0;i<pow(n,r);i++){
for(j=0;j<pow(n,r);j++){
if(isFill(i,j,n,r))
cout << symbol;
else
cout << ' ';
}
cout << endl;
}
}
return 0;
}