【题意简述】:打印数字,主要注意格式控制!
-- -- -- | | | | | | | | | | | | -- -- -- -- | | | | | | | | | | -- -- -- --- --- --- --- --- | | | | | | | | | | | | | | | | | | | | | | | | --- --- --- | | | | | | | | | | | | | | | | | | | | | | | | --- --- --- ---
【思路】:基本模拟题,注意积累。不多说,贴代码。
首先这个是我的代码,分制法:
#include<iostream>
#include<cstring>
using namespace std;
char n1[11] = {"- -- -----"};
char n2[11] = {"| ||| ||"};
char n3[11] = {"||||| |||"};
char n4[11] = {" ----- --"};
char n5[11] = {"| | | | "};
char n6[11] = {"|| |||||||"};
char n7[11] = {"- -- -- --"};
int main()
{
int s;
char szNumber[20];
int nDigit,nLength,i,j,k;
while(1)
{
scanf("%d%s",&s,szNumber);
if(s==0)
break;
nLength = strlen(szNumber);
for(i=0;i<nLength;i++)
{
nDigit = szNumber[i] - '0';
printf(" ");//???
for(j=0;j<s;j++)
printf("%c",n1[nDigit]);
printf(" ");
}
printf("\n");
for(i=0;i<s;i++){//输出所有数字的笔画 2 和笔画 3
for(j=0;j<nLength;j++)
{
nDigit=szNumber[j]-'0';
printf("%c",n2[nDigit]);
for(k=0;k<s;k++)
printf(" ");//输出所有数字的笔画 4
printf("%c ",n3[nDigit]);
}
printf("\n");
}
for(i=0;i<nLength;i++)//输出所有数字的笔画 4
{
printf(" ");
nDigit = szNumber[i] - '0';
for(j=0;j<s;j++)
printf("%c",n4[nDigit]);
printf(" ");
}
printf("\n");
for(i=0;i<s;i++)//输出所有数字的笔画 5 和笔画 6
{
for(j=0;j<nLength;j++)
{
nDigit = szNumber[j] - '0';
printf("%c", n5[nDigit]);
for (k = 0 ; k < s ; k++)
printf(" "); //笔画 5 和笔画 6 之间的空格
printf("%c ", n6[nDigit]);
}
printf("\n");
}
for(i=0;i<nLength;i++)
{
printf(" ");
nDigit = szNumber[i] - '0';
for(j=0;j<s;j++)
printf("%c",n7[nDigit]);
printf(" ");
}
printf("\n");
printf("\n");
}
return 0;
}
这个是我看到的别人的代码:
//别人代码!
#include<iostream>
#include<string>
using namespace std;
char code[5][31] = {
{" - - - - - - - - "},
{"| | | | || || | || || |"},
{" - - - - - - - "},
{"| | || | | || | || | |"},
{" - - - - - - - "},
};
void print(int n,string &s,int i)
{
int length = s.length();
int j,k,m;
for(j=0;j<length;j++)
{
/* 找到数字j的下标 */
m = (s[j] - '0') * 3;
cout<<code[i][m];
/* 关键笔画打印n次 */
for(k = 0;k<n;k++)
{
cout<<code[i][m+1];
}
cout<< code[i][m+2];
/* 每2个数字间加一个空格 */
if(j!=length-1) cout<<" ";
}
cout<<endl;
}
int main()
{
int i,j,n;
string s;
while(1)
{
cin>>n;
if(n==0) break;
cin>>s;
for(i=0;i<5;i++)
{
if(i%2)
{
/* 纵行要打印n次 */
for(j=0;j<n;j++)
{
print(n,s,i);
}
}
else
{
print(n,s,i);
}
}
cout<<endl;
}
return 0;
}