ccf-csp 201903-2求题解。 题目链接
求指正一下我的代码思路,我自己觉得逻辑应该是正确的,但运行程序时候代码输入两行数据就再输不进去了,回车键运行也没有输出什么结果,这题的优解我已经弄明白,只是想知道我自己的代码错误在哪,感谢各位的热心!
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
getchar();
char str[100][7];
for(int i=0;i<n;i++){
for(int a=0;b<7;b++){
scanf("%c",&str[i][a]);
if(a%2==0){
str[i][a]=str[i][a]-'0';
}//将字符型数字转换为实际数字
}
//先处理有x和/的算式
for(int j=1;j<=5;j+2){
if(str[i][j]=='x'){
str[i][j+1]=str[i][j-1]*str[i][j+1];//将运算结果赋给*号的后一位数
str[i][j-1]=0;//前一位数字归零
}else if(str[i][j]=='/'){
str[i][j+1]=str[i][j-1]/str[i][j+1];//将运算结果赋给/号的后一位数
str[i][j-1]=0;//前一位数字归零
}
}
//再处理+和-的算式
for(int k=1;k<=5;k+2){
if(str[i][k]=='+'){
str[i][k+1]=str[i][k-1]+str[i][k+1]; //将运算结果赋给+号的后一位数
str[i][k-1]=0; //前一位数字归零
}else if(str[i][k]=='-'){
str[i][k+1]=str[i][k-1]-str[i][k+1];//将运算结果赋给-号的后一位数
str[i][k-1]=0;//前一位数字归零
}
}
//此时将所有数字相加判断和是否为24
if(str[i][0]+str[i][2]+str[i][4]+str[i][6]==24){
cout<<"Yes"<<endl;
}else{
cout<<"No"<<endl;
}
}
}