#include<iostream> #include<algorithm> using namespace std; bool cmp(char x,char y) { return x>y; } int main() { char a[30],n[30],b[30],d[30]; for(int i=0;i<11;i++) cin>>a[i]; for(int i=0;i<11;i++) b[i]=a[i]; sort(a,a+11,cmp); n[0]=a[0]; int p=0; for(int i=0;i<11;i++) { if(a[i]>a[i+1]) { p++; n[p]=a[i+1]; } } int q=0; for(int i=0;i<11;i++) { for(int j=0;j<p;j++) { if(n[i]==b[j]) { d[q]=j; q++; } } } cout<<"int[] arr = new int[]{"; for(int j=0;j<p;j++) if(j<p-1) cout<<n[j]<<","; else { cout<<n[j]<<"};"<<endl; } cout<<"int[] index = new int[]{"; for(int i=0;i<q;i++) if(i<q-1) cout<<d[i]<<","; else { cout<<d[i]<<"};"<<endl; } return 0; }修改错误
时间: 2023-07-15 21:13:46 浏览: 38
感谢您的提醒,这里有几个错误需要修改:
1. 在输入字符数组时,应该输入前 10 个字符而不是 11 个。
2. 在输出 index 数组时,应该输出的是下标值而不是字符本身,所以应该将 d 数组的元素改为 j 而不是 b[j]。
下面是修改后的代码:
```
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(char x, char y) {
return x > y;
}
int main() {
char a[30], n[30], b[30], d[30];
for(int i = 0; i < 10; i++) // 输入前 10 个字符
cin >> a[i];
for(int i = 0; i < 10; i++)
b[i] = a[i];
sort(a, a + 10, cmp);
n[0] = a[0];
int p = 0;
for(int i = 0; i < 10; i++) {
if(a[i] > a[i + 1]) {
p++;
n[p] = a[i + 1];
}
}
int q = 0;
for(int i = 0; i < 10; i++) {
for(int j = 0; j < p; j++) {
if(n[j] == b[i]) {
d[q] = j; // 存储下标值
q++;
}
}
}
cout << "int[] arr = new int[]{";
for(int j = 0; j < p; j++)
if(j < p - 1)
cout << int(n[j]) << ",";
else {
cout << int(n[j]) << "};" << endl;
}
cout << "int[] index = new int[]{";
for(int i = 0; i < q; i++)
if(i < q - 1)
cout << d[i] << ",";
else {
cout << d[i] << "};" << endl;
}
return 0;
}
```
希望对您有帮助!