您的位置:首页 > 编程语言 > C语言/C++

OJ题目-使用+-|等符号表示数字,进行运算【C语言】

2016-05-23 00:00 483 查看
摘要: 我正在学习ACM





如上,输入两个数字,最后会输出这两个数字的和

代码如下:

[code=language-cpp]#include <iostream>
#include<stdio.h>
using namespace std;
#define space -2
#define error -1

int a, b; //加数与被加数
int c;
char tmp[5][3];//装一个数字模型的数组
char Nums[10][5][3];    //建立模型
char InputNums[5][100];

char OutputNums[5][100];
int out_p = 0;

void write(int i);
int getNum(char tmp[5][3]);
void InitNums();

int main()
{
InitNums();
//输入数字
int i=0;
int j=0;
//        //初始化OutputNums
//    for(i=0;i<5;i++)
//    {
//        for(j=0; j<100;j++)
//        {
//            OutputNums[i][j] = ' ';
//        }
//    }
/*输入符号*/
for(i=0; i<5; i++)
{
gets(InputNums[j++]);
fflush(stdin);
}
/*获得加数*/
int flag = 0;
bool x = true;
i=0;
int m,n;//获得tmp使用
int tmps;//临时变量
while(x)
{
if(InputNums[0][i] == '+' || InputNums[0][i+1] == '-' || InputNums[0][i+2] == '+')
{
/*存入一个tmp*/
for(m=0;m<5;m++)
{
for(n=0; n<3;n++)
{
tmp[m]
= InputNums[m][n+i];
}
}
tmps = getNum(tmp);
if(a == 0)
a = tmps;
else{a = a*10+tmps;}
i+=4;
}
else
{
i+=4;
flag++;
if(flag == 2)
break;
b =a;
a =0;

}
}

//    printf("%d %d %d\n", a+b, a , b);
/*求出结果*/
int rs = a+b;
int rs_s = 0;
//    rs_s = rs%10;
//    rs = rs/10;
while(rs != 0)
{
rs_s = rs%10;
rs = rs/10;
write(rs_s);

}
/*把结果用符号表示出来*/
int fuck;
for(i=0; i<5; i++)
{
flag=1;
for(j=out_p-1; j>=0; j-=4)
{
for(fuck=j-4; fuck<j; fuck++)
{if(flag != 1)
printf("%c", OutputNums[i][fuck]);
else
flag++;
}
}
printf("\n");
}
}
int getNum(char tmp[5][3])
{
int i=0;
int j,k;
int flag;  //标志
for(i=0; i<10;i++)
{
flag=1;
if(tmp[0][2] == ' ')
return space;
for(j=0;j<5;j++)
{
for(k=0; k<3; k++)
{
if(tmp[j][k] != Nums[i][j][k])
{
flag = 0;
break;
}
}
if(flag == 0)
break;
}
if(flag==1)
return i;
}
return error;
}
void InitNums()
{
//初始化0
Nums[0][0][0] = '+';
Nums[0][0][1] = '-';
Nums[0][0][2] = '+';
Nums[0][1][0] = '|';
Nums[0][1][1] = ' ';
Nums[0][1][2] = '|';
Nums[0][2][0] = '+';
Nums[0][2][1] = ' ';
Nums[0][2][2] = '+';
Nums[0][3][0] = '|';
Nums[0][3][1] = ' ';
Nums[0][3][2] = '|';
Nums[0][4][0] = '+';
Nums[0][4][1] = '-';
Nums[0][4][2] = '+';
//初始化1
Nums[1][0][0] = ' ';
Nums[1][0][1] = ' ';
Nums[1][0][2] = '+';
Nums[1][1][0] = ' ';
Nums[1][1][1] = ' ';
Nums[1][1][2] = '|';
Nums[1][2][0] = ' ';
Nums[1][2][1] = ' ';
Nums[1][2][2] = '+';
Nums[1][3][0] = ' ';
Nums[1][3][1] = ' ';
Nums[1][3][2] = '|';
Nums[1][4][0] = ' ';
Nums[1][4][1] = ' ';
Nums[1][4][2] = '+';
//初始化2
Nums[2][0][0] = '+';
Nums[2][0][1] = '-';
Nums[2][0][2] = '+';
Nums[2][1][0] = ' ';
Nums[2][1][1] = ' ';
Nums[2][1][2] = '|';
Nums[2][2][0] = '+';
Nums[2][2][1] = '-';
Nums[2][2][2] = '+';
Nums[2][3][0] = '|';
Nums[2][3][1] = ' ';
Nums[2][3][2] = ' ';
Nums[2][4][0] = '+';
Nums[2][4][1] = '-';
Nums[2][4][2] = '+';
//初始化3
Nums[3][0][0] = '+';
Nums[3][0][1] = '-';
Nums[3][0][2] = '+';
Nums[3][1][0] = ' ';
Nums[3][1][1] = ' ';
Nums[3][1][2] = '|';
Nums[3][2][0] = '+';
Nums[3][2][1] = '-';
Nums[3][2][2] = '+';
Nums[3][3][0] = ' ';
Nums[3][3][1] = ' ';
Nums[3][3][2] = '|';
Nums[3][4][0] = '+';
Nums[3][4][1] = '-';
Nums[3][4][2] = '+';
//初始化4
Nums[4][0][0] = '+';
Nums[4][0][1] = ' ';
Nums[4][0][2] = '+';
Nums[4][1][0] = '|';
Nums[4][1][1] = ' ';
Nums[4][1][2] = '|';
Nums[4][2][0] = '+';
Nums[4][2][1] = '-';
Nums[4][2][2] = '+';
Nums[4][3][0] = ' ';
Nums[4][3][1] = ' ';
Nums[4][3][2] = '|';
Nums[4][4][0] = ' ';
Nums[4][4][1] = ' ';
Nums[4][4][2] = '+';
//初始化5
Nums[5][0][0] = '+';
Nums[5][0][1] = '-';
Nums[5][0][2] = '+';
Nums[5][1][0] = '|';
Nums[5][1][1] = ' ';
Nums[5][1][2] = ' ';
Nums[5][2][0] = '+';
Nums[5][2][1] = '-';
Nums[5][2][2] = '+';
Nums[5][3][0] = ' ';
Nums[5][3][1] = ' ';
Nums[5][3][2] = '|';
Nums[5][4][0] = '+';
Nums[5][4][1] = '-';
Nums[5][4][2] = '+';
//初始化6
Nums[6][0][0] = '+';
Nums[6][0][1] = '-';
Nums[6][0][2] = '+';
Nums[6][1][0] = '|';
Nums[6][1][1] = ' ';
Nums[6][1][2] = ' ';
Nums[6][2][0] = '+';
Nums[6][2][1] = '-';
Nums[6][2][2] = '+';
Nums[6][3][0] = '|';
Nums[6][3][1] = ' ';
Nums[6][3][2] = '|';
Nums[6][4][0] = '+';
Nums[6][4][1] = '-';
Nums[6][4][2] = '+';
//初始化7
Nums[7][0][0] = '+';
Nums[7][0][1] = '-';
Nums[7][0][2] = '+';
Nums[7][1][0] = ' ';
Nums[7][1][1] = ' ';
Nums[7][1][2] = '|';
Nums[7][2][0] = ' ';
Nums[7][2][1] = ' ';
Nums[7][2][2] = '+';
Nums[7][3][0] = ' ';
Nums[7][3][1] = ' ';
Nums[7][3][2] = '|';
Nums[7][4][0] = ' ';
Nums[7][4][1] = ' ';
Nums[7][4][2] = '+';
//初始化8
Nums[8][0][0] = '+';
Nums[8][0][1] = '-';
Nums[8][0][2] = '+';
Nums[8][1][0] = '|';
Nums[8][1][1] = ' ';
Nums[8][1][2] = '|';
Nums[8][2][0] = '+';
Nums[8][2][1] = '-';
Nums[8][2][2] = '+';
Nums[8][3][0] = '|';
Nums[8][3][1] = ' ';
Nums[8][3][2] = '|';
Nums[8][4][0] = '+';
Nums[8][4][1] = '-';
Nums[8][4][2] = '+';
//初始化9
Nums[9][0][0] = '+';
Nums[9][0][1] = '-';
Nums[9][0][2] = '+';
Nums[9][1][0] = '|';
Nums[9][1][1] = ' ';
Nums[9][1][2] = '|';
Nums[9][2][0] = '+';
Nums[9][2][1] = '-';
Nums[9][2][2] = '+';
Nums[9][3][0] = ' ';
Nums[9][3][1] = ' ';
Nums[9][3][2] = '|';
Nums[9][4][0] = '+';
Nums[9][4][1] = '-';
Nums[9][4][2] = '+';
}

void write(int i)
{
int j,k;
for(j=0; j<5; j++)
{
for(k=0; k<3; k++)
{
OutputNums[j][k+out_p] = Nums[i][j][k];
}
}
out_p+=4;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C ACM +-+|