修改代码:for (int l = 0; l < d; l++) {for (int k = 0; k < c; k++) {for (int j = 0; j< b; j++) {for (int i = 0; i < a; i++) {cout << "arr["<<i<<"]["<<j<< "][" <<k<< "][" << l << "]的值:" << *(&arr[0][0][0][0]+(l*a*b*c+k*a*b+j*a+i)*sizeof(arr[0][0][0][0]))
时间: 2024-01-24 11:20:06 浏览: 30
可以将代码修改为:
for (int l = 0; l < d; l++) {
for (int k = 0; k < c; k++) {
for (int j = 0; j < b; j++) {
for (int i = 0; i < a; i++) {
cout << "arr[" << i << "][" << j << "][" << k << "][" << l << "]的值:" << arr[i][j][k][l] << endl;
}
}
}
}
这样就可以直接通过数组下标来访问数组元素的值,不需要通过指针计算地址了。同时也将cout语句放到了内层循环中,方便输出每个元素的值。
相关问题
C++ 1 Finclude<iostream) 2 using namespace std; 3 4 bool isPrime (int x) ! 5 6 7 for (int j=1:j<=x/2:j++) if (x%j-0)return true: 8 9 return false:] 10 int main() ! 11 int n, k-0, m=0; 12 cin) ›n; 13 int aln]: 14 for (int i=0;i<n:itt) 15 cin)›ali]; 16 for (int i=0;i<n;i#) { 17 if (isPrime (a[il))mtt:) 18 int b [m]: 19 for (int i=0;¡<n;it+) { 20 if(isPrime (a[il)) b[k++]=ali]:1 21 int 1, c; 22 for (int t=0:tsm:t++){ 23 1=t: 24 25 for (int D=t+1:p<nt1:p++)1 if (blp]<b[t]) tp; 26 if(11=t) le-btp]: 27 blp=b[t]; 28 bltl=c:l 29 for (int i=0;1<m; it+) 30 cout<<b[i]<<" 31 return 0 32 }} 33 34 35 字体大小一 控制台这个选择排序有问题吗
代码存在一些问题,可能会导致程序运行出错。以下是我发现的问题:
1. 第一行的头文件 `#include<iostream)` 中的右括号应该是左括号,应该为 `#include<iostream>`
2. 第 4 行的函数声明 `bool isPrime(int x) !` 中的感叹号应该为左括号,应该为 `bool isPrime(int x) {`
3. 第 7 行的循环条件 `for (int j=1:j<=x/2:j++)` 中的冒号应该为分号,应该为 `for (int j=1;j<=x/2;j++)`
4. 第 9 行的函数返回值 `return false:]` 中的冒号应该为分号,应该为 `return false;`
5. 第 11 行的变量声明 `int n, k-0, m=0;` 中的减号应该为等号,应该为 `int n, k=0, m=0;`
6. 第 13 行的数组声明 `int aln]:` 中的冒号应该为分号,应该为 `int a[n];`
7. 第 14 行的循环条件 `for (int i=0;i<n:itt)` 中的冒号应该为分号,应该为 `for (int i=0;i<n;i++)`
8. 第 17 行的判断条件 `if (isPrime (a[il))mtt:)` 中的冒号应该为左花括号,应该为 `if (isPrime(a[i])) {`
9. 第 18 行的数组声明 `int b [m]:` 中的空格应该去掉,应该为 `int b[m];`
10. 第 19 行的循环条件 `for (int i=0;¡<n;it+)` 中的感叹号应该为小于号,应该为 `for (int i=0;i<n;i++)`
11. 第 20 行的判断条件 `if(isPrime (a[il)) b[k++]=ali]:1` 中的冒号应该为左花括号,应该为 `if(isPrime(a[i])) b[k++]=a[i];`
12. 第 22 行的变量声明 `int 1, c;` 中的数字 1 应该为字母 l,应该为 `int l, c;`
13. 第 25 行的判断条件 `if (blp]<b[t]) tp;` 中的中括号应该为小于号,应该为 `if (b[tp]<b[t]) {`
14. 第 26 行的判断条件 `if(11=t) le-btp]:` 中的等号应该为小于号,应该为 `if (l<t) { b[tp]=b[l]; b[l]=tmp; }`
15. 第 28 行的变量赋值 `bltl=c:l` 中的冒号应该为分号,应该为 `b[l]=c;`
16. 第 29 行的循环条件 `for (int i=0;1<m; it+)` 中的数字 1 应该为字母 l,应该为 `for (int i=0;l<m; i++)`
代码经过修改后应该是这样的:
```
#include <iostream>
using namespace std;
bool isPrime(int x) {
for (int j=2; j<=x/2; j++) {
if (x%j == 0) {
return false;
}
}
return true;
}
int main() {
int n, k=0, m=0;
cin >> n;
int a[n];
for (int i=0; i<n; i++) {
cin >> a[i];
}
for (int i=0; i<n; i++) {
if (isPrime(a[i])) {
m++;
}
}
int b[m];
for (int i=0; i<n; i++) {
if (isPrime(a[i])) {
b[k++] = a[i];
}
}
int tmp, l, c;
for (int t=0; t<m; t++) {
l = t;
for (int p=t+1; p<m; p++) {
if (b[p] < b[t]) {
l = p;
}
}
if (l != t) {
tmp = b[t];
b[t] = b[l];
b[l] = tmp;
}
}
for (int i=0; i<m; i++) {
cout << b[i] << " ";
}
return 0;
}
```
int zhuanhua(char c){ int i; switch(c){ case 'I': return i=1; case 'V': return i=5; case 'X': return i=10; case 'L': return i=50; case 'C': return i=100; case 'D': return i=500; case 'M': return i=1000; }}int romanToInt(char * s){ int i=strlen(s); int *sum=(int*)malloc(i*sizeof(int)); for(int j=0;j<i;j++){ sum[j]=zhuanhua(s[j]); } int k=0; for(int l=0;l<i;l++){ if(l==i-1){ k=k+sum[l]; } else if(sum[l]<sum[l+1]){ k=k-sum[l]; } else{ k=k+sum[l]; } } return k;}错在哪里
这段代码中存在一些问题:
1. 函数 `zhuanhua()` 中定义了变量 `i` 但未初始化,应该改为 `int i = 0;`。
2. 函数 `zhuanhua()` 中应该添加一个 `default` 分支,防止输入其他非法字符时出现未定义行为。
3. 函数 `romanToInt()` 中的指针 `sum` 未在使用结束后释放内存,可能会造成内存泄漏。
4. 函数 `romanToInt()` 中的变量 `k` 应该初始化为 0,以免出现未定义行为。
修改后的代码如下所示:
```
int zhuanhua(char c) {
int i = 0;
switch(c) {
case 'I': i = 1; break;
case 'V': i = 5; break;
case 'X': i = 10; break;
case 'L': i = 50; break;
case 'C': i = 100; break;
case 'D': i = 500; break;
case 'M': i = 1000; break;
default: break;
}
return i;
}
int romanToInt(char *s) {
int i = strlen(s);
int *sum = (int*)malloc(i * sizeof(int));
for(int j = 0; j < i; j++) {
sum[j] = zhuanhua(s[j]);
}
int k = 0;
for(int l = 0; l < i; l++) {
if(l == i-1) {
k += sum[l];
} else if(sum[l] < sum[l+1]) {
k -= sum[l];
} else {
k += sum[l];
}
}
free(sum);
return k;
}
```
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)