我希望比较两个阵列并打印两个分数。
在下面的情况下,应该是1和5,但我得到6488164和7536740.(因为第一个只有7大于4而下一行是更大的一切)
是否可以将二维数组与单个数组进行比较并使用它创建数组? 我做错了什么或者我该怎么做以进行比较?
#include<stdio.h>
#include<stdlib.h>
int
main(int argc, char *argv[]) {
int mm_avg[2][5] = {{1,2,3,7,4},{2,3,4,5,7}};
int lt_avg[5]={1,2,3,4,5};
int i, j, score[100];
for (i=0; i<5; i++){
for (j=0; j<2; j++){
if(mm_avg[j][i]>lt_avg[i]){
score[j]++;
}
}
}
for (j=0; j<2; j++){
printf("%d\n", score[j]);
}
return 0;
}
&#13;
答案 0 :(得分:1)
score
数组未初始化,因此数组中的所有100个值都恰好存在于内存中。
试试int i, j, score[100] = {0};
。这会将所有100个值初始化为0。
答案 1 :(得分:1)
在C / C ++中,未初始化的整数具有未定义的值。与例如Java不同,它将默认值0指定为整数。 通常,最好在声明时始终显式初始化对象。
#include<stdio.h>
#include<stdlib.h>
main(int argc, char *argv[])
{
int mm_avg[2][5] = {{1,2,3,7,4},{2,3,4,5,7}};
int lt_avg[5]={1,2,3,4,5};
int i, j, score[2];
for(int ndx = 0; ndx < 2; ++ndx)
{
score[ndx] = 0;
}
for (i = 0; i < 5; ++i)
{
for (j = 0; j < 2; ++j)
{
if(mm_avg[j][i] > lt_avg[i])
{
/*printf("%d\n", j);
printf("%s", "mm_avg: ");
printf("%d\n", mm_avg[j][i]);
printf("%s", "lt_avg: ");
printf("%d\n", lt_avg[i]);
*/
score[j]++;
}
}
}
for (j=0; j<2; j++)
{
printf("%d\n", score[j]);
}
return 0;
}