https://zoj.pintia.cn/problem-sets/91827364500/problems/91827366485
題目地址
新手求大佬點撥一下,謝謝!(string改成char陣列就可以ac了,想不明白為什么不可以用string)
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#define ll long long
using namespace std;
void delchar(int pos,string &s)
{
int len=s.length();
for(int i=pos;i<len;i++)
{
s[i-1]=s[i];
}
s[len-1]='\0';
}
int main()
{
int k,pos,cnt=1;
string s;
cin>>k;
while(k--)
{
cin>>pos;
cin>>s;
delchar(pos,s);
cout<<cnt<<" "<<s<<endl;
cnt++;
}
}
uj5u.com熱心網友回復:
因為你測驗的環境是C語言,不是C++的吧。另外,如果置換成char,那么delchar函式的s.length();怎么處理?uj5u.com熱心網友回復:
gcc是C語言的編譯器uj5u.com熱心網友回復:
難道你沒觀察輸出是否正確和符合題目要求的輸出?按要求輸出試看。
int k, pos, cnt = 1;
string s, ss;
cin >> k;
while (k--)
{
cin >> pos;
cin >> s;
delchar(pos, s);
ss += cnt++ + '0';
ss += ' ';
ss += s;
ss += '\n';
}
cout << endl << ss;
uj5u.com熱心網友回復:
2個問題1 string頭檔案是 string 不帶c開頭的 cstring對應C語言的 string.h
2 string不是0結尾 或者說 沒規定0結尾 所以s[len-1]='\0';不能保證是有效的
把最后的輸出改為cout<<cnt<<" "<<s.c_str()<<endl; 就可以了
uj5u.com熱心網友回復:
就一起改成strlen的,然后能過
uj5u.com熱心網友回復:
那就是編譯器的問題,你用的C++語言,而編譯器是C語言的
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/195510.html
標籤:C++ 語言
上一篇:求助
下一篇:奇怪的求和 之二
