一道c++的题目,反复输入数据进行调试过仍未发现问题,但是oj上是wa,求大神指点下
#include<iostream>#include<iomanip>usingnamespacestd;intmain(){intt,a,b,c,d,e,f,g,j;w...
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int t,a,b,c,d,e,f,g,j;
while (cin>>t)
{
for (int i=0;i<t;i++)
{
cin>>a>>b>>c>>d>>e>>f>>g;
j=0;
if (a!=0) {cout<<a<<"m";j=1;}
if (b!=0 && j==1) cout<<setiosflags(ios::showpos)<<b<<"n";
if (b!=0 && j==0) {cout<<resetiosflags(ios::showpos)<<b<<"n";j=1;}
if (c!=0 && j==1) cout<<setiosflags(ios::showpos)<<c<<"p";
if (c!=0 && j==0) {cout<<resetiosflags(ios::showpos)<<c<<"p";j=1;}
if (d!=0 && j==1) cout<<setiosflags(ios::showpos)<<d<<"i";
if (d!=0 && j==0) {cout<<resetiosflags(ios::showpos)<<d<<"i";j=1;}
if (e!=0 && j==1) cout<<setiosflags(ios::showpos)<<e<<"j";
if (e!=0 && j==0) {cout<<resetiosflags(ios::showpos)<<e<<"j";j=1;}
if (f!=0 && j==1) cout<<setiosflags(ios::showpos)<<f<<"k";
if (f!=0 && j==0) {cout<<resetiosflags(ios::showpos)<<f<<"k";j=1;}
if (g!=0 && j==1) cout<<setiosflags(ios::showpos)<<g;
if (g!=0 && j==0) {cout<<resetiosflags(ios::showpos)<<g;j=1;}
if (j==0) cout<<"0";
cout<<resetiosflags(ios::showpos)<<endl;
}
}
return 0;
}
题目地址:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=2137 展开
#include <iomanip>
using namespace std;
int main()
{
int t,a,b,c,d,e,f,g,j;
while (cin>>t)
{
for (int i=0;i<t;i++)
{
cin>>a>>b>>c>>d>>e>>f>>g;
j=0;
if (a!=0) {cout<<a<<"m";j=1;}
if (b!=0 && j==1) cout<<setiosflags(ios::showpos)<<b<<"n";
if (b!=0 && j==0) {cout<<resetiosflags(ios::showpos)<<b<<"n";j=1;}
if (c!=0 && j==1) cout<<setiosflags(ios::showpos)<<c<<"p";
if (c!=0 && j==0) {cout<<resetiosflags(ios::showpos)<<c<<"p";j=1;}
if (d!=0 && j==1) cout<<setiosflags(ios::showpos)<<d<<"i";
if (d!=0 && j==0) {cout<<resetiosflags(ios::showpos)<<d<<"i";j=1;}
if (e!=0 && j==1) cout<<setiosflags(ios::showpos)<<e<<"j";
if (e!=0 && j==0) {cout<<resetiosflags(ios::showpos)<<e<<"j";j=1;}
if (f!=0 && j==1) cout<<setiosflags(ios::showpos)<<f<<"k";
if (f!=0 && j==0) {cout<<resetiosflags(ios::showpos)<<f<<"k";j=1;}
if (g!=0 && j==1) cout<<setiosflags(ios::showpos)<<g;
if (g!=0 && j==0) {cout<<resetiosflags(ios::showpos)<<g;j=1;}
if (j==0) cout<<"0";
cout<<resetiosflags(ios::showpos)<<endl;
}
}
return 0;
}
题目地址:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=2137 展开
1个回答
展开全部
最基本的一条就没有做到:先输入1,再输入1 2 3 4 5 6 7,回车后输出是1m+2n+3p+4i+5j+6k+7,输出正确,但为何不结束?应该只有1组啊。另一问题也要注意,那就是此题样例好像是先输入几组数据,然后输出对应的几组结果。
试试下面的代码——
//#include "stdafx.h"//vc++6.0加上这一行.
#include <iostream>
#include "iomanip"
using namespace std;
void main(void){
int t,x[100][7],i;
cin >> t;
for(i=0;i<t;cin >> x[i++][0] >> x[i][1] >> x[i][2] >> x[i][3] >> x[i][4] >> x[i][5] >> x[i][6]);
cout << endl;
for(i=0;i<t;i++){
if(x[i][0]){ cout << x[i][0] << 'm'; cout << setiosflags(ios::showpos);}
if(x[i][1]){ cout << x[i][1] << 'n'; cout << setiosflags(ios::showpos);}
if(x[i][2]){ cout << x[i][2] << 'p'; cout << setiosflags(ios::showpos);}
if(x[i][3]){ cout << x[i][3] << 'i'; cout << setiosflags(ios::showpos);}
if(x[i][4]){ cout << x[i][4] << 'j'; cout << setiosflags(ios::showpos);}
if(x[i][5]){ cout << x[i][5] << 'k'; cout << setiosflags(ios::showpos);}
if(x[i][6]) cout << x[i][6] << 'g';
if(!(x[i][0]|x[i][1]|x[i][2]|x[i][3]|x[i][4]|x[i][5]|x[i][6])) cout << '0';
cout << resetiosflags(ios::showpos) << endl;
}
}
试试下面的代码——
//#include "stdafx.h"//vc++6.0加上这一行.
#include <iostream>
#include "iomanip"
using namespace std;
void main(void){
int t,x[100][7],i;
cin >> t;
for(i=0;i<t;cin >> x[i++][0] >> x[i][1] >> x[i][2] >> x[i][3] >> x[i][4] >> x[i][5] >> x[i][6]);
cout << endl;
for(i=0;i<t;i++){
if(x[i][0]){ cout << x[i][0] << 'm'; cout << setiosflags(ios::showpos);}
if(x[i][1]){ cout << x[i][1] << 'n'; cout << setiosflags(ios::showpos);}
if(x[i][2]){ cout << x[i][2] << 'p'; cout << setiosflags(ios::showpos);}
if(x[i][3]){ cout << x[i][3] << 'i'; cout << setiosflags(ios::showpos);}
if(x[i][4]){ cout << x[i][4] << 'j'; cout << setiosflags(ios::showpos);}
if(x[i][5]){ cout << x[i][5] << 'k'; cout << setiosflags(ios::showpos);}
if(x[i][6]) cout << x[i][6] << 'g';
if(!(x[i][0]|x[i][1]|x[i][2]|x[i][3]|x[i][4]|x[i][5]|x[i][6])) cout << '0';
cout << resetiosflags(ios::showpos) << endl;
}
}
更多追问追答
追问
你可能不怎么做oj上的题,我的输出格式是符合oj上的,主要问题应该是比如说我输入:1 1 1 1 1 1 1;应该输出 m+n+p+i+j+k+1;而不是1m+1n+1p+1i+1j+1k+1等等的问题
追答
你原来的代码输出就有1啊。但这问题好办啊——
void main(void){
int t,x[100][7],i,j,f;
char a[]="mnpijkg";
cin >> t;
for(i=0;i> x[i][j++]);
cout << endl;
for(i=0;i<t;i++){
for(f=j=0;j<7;j++)
if(x[i][j]){
if(x[i][j]==1) cout << (f ? "+" : "");
else if(x[i][j]==-1) cout << '-';
else cout << x[i][j];
cout << a[j] << setiosflags(ios::showpos);
f=1;
}
if(!(x[i][0]|x[i][1]|x[i][2]|x[i][3]|x[i][4]|x[i][5]|x[i][6])) cout << '0';
cout << resetiosflags(ios::showpos) << endl;
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询