#include<bits/stdc++.h> using namespace std; int main(){ int a; cin>>a; string b[a][2]; for(int i=0;i<a;i++) { cin>>b[i][0]; b[i][1]=0; } for(int i=0;i<a;i++) { if(b[i][0].compare("Materiral") == 1) { b[i][1]+=60; } } }
时间: 2024-03-10 22:49:29 浏览: 142
C++万能头: bits/stdc++.h 下载
这段代码有一些问题,比如:
1. 数组 b[a][2] 的大小是动态输入的 a,但是在 C++ 中数组的大小必须是常量,所以应该使用动态内存分配来创建数组。
2. 在第一个循环中,赋值 b[i][1]=0; 应该改为 b[i][1]="0"; 因为后面需要将其转换成整数类型。
3. 在第二个循环中,条件 if(b[i][0].compare("Materiral") == 1) 的判断不正确,因为 compare() 函数返回值为 0 表示两个字符串相等,应该改为 if(b[i][0].compare("Material") == 0)。
4. 在第二个循环中,为字符串类型的 b[i][1] 加上整型数字 60 是不正确的,应该将其转换成整型后再进行加法操作。
修改后的代码如下:
```
#include <bits/stdc++.h>
using namespace std;
int main() {
int a;
cin >> a;
string **b = new string*[a];
for (int i = 0; i < a; i++) {
b[i] = new string[2];
cin >> b[i][0];
b[i][1] = "0";
}
for (int i = 0; i < a; i++) {
if (b[i][0].compare("Material") == 0) {
int num = stoi(b[i][1]) + 60;
b[i][1] = to_string(num);
}
}
// do something with b
for (int i = 0; i < a; i++) {
delete[] b[i];
}
delete[] b;
return 0;
}
```
阅读全文