=0;i--) { m=p/arr[i]; p=p-m*arr[i]; arr2[i]=m; printf(“%d”,m); } printf(“\n”); 对于(int i=11;i>=0;i--) { 总和+=arr2[i]; printf(“%d”,arr2[i]); } printf(“\n总和:%d\n”,总和); } getch(); },c++,arrays,C++,Arrays" /> =0;i--) { m=p/arr[i]; p=p-m*arr[i]; arr2[i]=m; printf(“%d”,m); } printf(“\n”); 对于(int i=11;i>=0;i--) { 总和+=arr2[i]; printf(“%d”,arr2[i]); } printf(“\n总和:%d\n”,总和); } getch(); },c++,arrays,C++,Arrays" />

数组中的最小值之和 我编写了一个简单的C++程序来找到数组的最小和值。我有arr[12]={1,2,4,8,16,32,64,128,256,512,1024,2048}。我想计算该数组中要满足int p的最小值。例如,p=10,有两个索引具有满足整数p的最小值,即arr[1]=2和arr[3]=8。我用某种二进制转换方法解决了这个问题。我将这些二进制文件保存到新的数组arr2[]中,并对所有这些二进制文件求和,以便在示例中得到答案2。但是我遇到了一个问题,如果输入是p=1024,出于某种原因,第二个for循环中的数组值没有保存第一个for循环中的int m值。这只适用于1024,不适用于其他输入(或尚未找到)。有人能解释为什么会发生这种情况吗?。这是我的密码: #include <stdio.h> #include <conio.h> int main() { int t, p, c=0; int arr[12] = {1,2,4,8,16,32,64,128,256,512,1024,2048}; int arr2[c]; scanf("%d", &t); while(t--) { int sum = 0, m = 0; scanf("%d", &p); for(int i = 11; i>=0; i--) { m = p/arr[i]; p = p - m*arr[i]; arr2[i] = m; printf("%d ", m); } printf("\n"); for(int i = 11; i>=0; i--) { sum+=arr2[i]; printf("%d ", arr2[i]); } printf("\n SUM : %d \n", sum); } getch(); } #包括 #包括 int main() { int t,p,c=0; int arr[12]={1,2,4,8,16,32,6412825651210242048}; int-arr2[c]; scanf(“%d”、&t); 而(t--) { 整数和=0,m=0; scanf(“%d”和“p”); 对于(int i=11;i>=0;i--) { m=p/arr[i]; p=p-m*arr[i]; arr2[i]=m; printf(“%d”,m); } printf(“\n”); 对于(int i=11;i>=0;i--) { 总和+=arr2[i]; printf(“%d”,arr2[i]); } printf(“\n总和:%d\n”,总和); } getch(); }

数组中的最小值之和 我编写了一个简单的C++程序来找到数组的最小和值。我有arr[12]={1,2,4,8,16,32,64,128,256,512,1024,2048}。我想计算该数组中要满足int p的最小值。例如,p=10,有两个索引具有满足整数p的最小值,即arr[1]=2和arr[3]=8。我用某种二进制转换方法解决了这个问题。我将这些二进制文件保存到新的数组arr2[]中,并对所有这些二进制文件求和,以便在示例中得到答案2。但是我遇到了一个问题,如果输入是p=1024,出于某种原因,第二个for循环中的数组值没有保存第一个for循环中的int m值。这只适用于1024,不适用于其他输入(或尚未找到)。有人能解释为什么会发生这种情况吗?。这是我的密码: #include <stdio.h> #include <conio.h> int main() { int t, p, c=0; int arr[12] = {1,2,4,8,16,32,64,128,256,512,1024,2048}; int arr2[c]; scanf("%d", &t); while(t--) { int sum = 0, m = 0; scanf("%d", &p); for(int i = 11; i>=0; i--) { m = p/arr[i]; p = p - m*arr[i]; arr2[i] = m; printf("%d ", m); } printf("\n"); for(int i = 11; i>=0; i--) { sum+=arr2[i]; printf("%d ", arr2[i]); } printf("\n SUM : %d \n", sum); } getch(); } #包括 #包括 int main() { int t,p,c=0; int arr[12]={1,2,4,8,16,32,6412825651210242048}; int-arr2[c]; scanf(“%d”、&t); 而(t--) { 整数和=0,m=0; scanf(“%d”和“p”); 对于(int i=11;i>=0;i--) { m=p/arr[i]; p=p-m*arr[i]; arr2[i]=m; printf(“%d”,m); } printf(“\n”); 对于(int i=11;i>=0;i--) { 总和+=arr2[i]; printf(“%d”,arr2[i]); } printf(“\n总和:%d\n”,总和); } getch(); },c++,arrays,C++,Arrays,我想我有一个简单的错误,但我找不到它。将c=0的值更改为c=12,因为我可以看到您的arr2数组将保存12个值,arr数组中每出现一个值,就有一个值。int arr2[c]错了。你能解释一下为什么错了吗。可变长度数组不是标准C++。2. c为0。访问它会导致未定义的行为。所有输入值的行为都未定义,而不仅仅是1024。事实上,输入1024的值只会出现症状,这是偶然事件-未定义行为的一个特征是允许该行为看起来是正确的。感谢您的快速响应。我将变量c值更改为@Shirish建议的值。现在成功了。非常感谢

我想我有一个简单的错误,但我找不到它。

将c=0的值更改为c=12,因为我可以看到您的arr2数组将保存12个值,arr数组中每出现一个值,就有一个值。

int arr2[c]错了。你能解释一下为什么错了吗。可变长度数组不是标准C++。2. <创建数组时,代码>c
0
。访问它会导致未定义的行为。所有输入值的行为都未定义,而不仅仅是1024。事实上,输入1024的值只会出现症状,这是偶然事件-未定义行为的一个特征是允许该行为看起来是正确的。感谢您的快速响应。我将变量c值更改为@Shirish建议的值。现在成功了。非常感谢,@Shirish现在成功了。我是对的,我一定犯了一个简单的错误:D