代码记录(1)

想用刚学的二维数组做一个东西,于是想到做一个输入五个数字,输出57的“”和“ ”来表示它们。

先尝试打出五个0,但在实际操作时发现输出一个0要修改数组里面20个变量太麻烦,于是学一下最基本的函数。

//打印一横
int hor(int x,int y)
{
for(k=0;k<5;k++){
strn[x][y+k]='*';
}

return 1;
}

//打印一竖
int ver(int z,int w)
{
for(k=0;k<4;k++){
strn[z+k][w]='*';
}

return 2;
}

这样就可以把每个数字的输出程序在七行之内搞定。
最开始运行结果一片空白,发现是函数定义时括号没加数据类型,里面的变量也没有定义。

修改之后运行时只有一堆叠在一起的星号。
然后我才意识到初始的时候应该加上空格:
//初始化
for(i=0;i<7;i++){
for(j=0;j<30;j++){
strn[i][j]=' ';
}
}

接下来新的问题又出现了,运行结果少了一行。
原来是因为忘记数组的开头是0而不是1。
改过之后成功输出0。
接下来把123456789的输出补上之后就完成了。

最后附上我的完整代码:

include

using namespace std;

int i,j,m,k,x,y,z,w;

//定义输入和输出数组
char n[5];
char strn[7][30];

//打印一横
int hor(int x,int y)
{
for(k=0;k<5;k++){
strn[x][y+k]='*';
}

return 1;
}

//打印一竖
int ver(int z,int w)
{
for(k=0;k<4;k++){
strn[z+k][w]='*';
}

return 2;
}

int main()
{
//初始化
for(i=0;i<7;i++){
for(j=0;j<30;j++){
strn[i][j]=' ';
}
}

//输入
for(i=0;i<5;i++){
cin>>n[i];
}

//转化
for(i=0;i<5;i++){
m=6*i;
switch(n[i]){
case '0':{
//输出0
hor(0,m);
hor(6,m);
ver(0,m);
ver(3,m);
ver(0,m+4);
ver(3,m+4);
break;
}
case '1':{
//输出1
ver(0,m+4);
ver(3,m+4);
break;
}
case '2':{
hor(0,m);
hor(3,m);
hor(6,m);
ver(0,m+4);
ver(3,m);
break;
}
case '3':{
hor(0,m);
hor(3,m);
hor(6,m);
ver(0,m+4);
ver(3,m+4);
break;
}
case '4':{
hor(3,m);
ver(0,m);
ver(0,m+4);
ver(3,m+4);
break;
}
case '5':{
hor(0,m);
hor(3,m);
hor(6,m);
ver(0,m);
ver(3,m+4);
break;
}
case '6':{
hor(0,m);
hor(3,m);
hor(6,m);
ver(0,m);
ver(3,m);
ver(3,m+4);
break;
}
case '7':{
hor(0,m);
ver(0,m+4);
ver(3,m+4);
break;
}
case '8':{
hor(0,m);
hor(3,m);
hor(6,m);
ver(0,m);
ver(3,m);
ver(0,m+4);
ver(3,m+4);
break;
}
case '9':{
hor(0,m);
hor(3,m);
hor(6,m);
ver(0,m);
ver(0,m+4);
ver(3,m+4);
break;
}
}
}

//输出
for(i=0;i<7;i++){
for(j=0;j<30;j++){
cout<<strn[i][j];
}
cout<<"\n";
}

return 0;
}

(新手求轻喷)

posted @ 2026-08-14 17:54  classicscheme  阅读(2)  评论(0)    收藏  举报