Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
二维数组中的计数值-C_C_Xcode_Windows_Macos_Sublimetext3 - Fatal编程技术网

二维数组中的计数值-C

二维数组中的计数值-C,c,xcode,windows,macos,sublimetext3,C,Xcode,Windows,Macos,Sublimetext3,所以我一直在努力完成一个学习C的作业,只是希望能纠正我的错误 这个场景是一个调查,这是我期望产生的结果 POPULARITY TABLE ---------------------------------------------------- City Cricket Footy Tennis Soccer ----------------------------------------------------- Melbourne 4 1 1

所以我一直在努力完成一个学习C的作业,只是希望能纠正我的错误

这个场景是一个调查,这是我期望产生的结果

     POPULARITY TABLE
     ----------------------------------------------------
     City Cricket Footy Tennis Soccer
     -----------------------------------------------------
     Melbourne 4 1 1 4
     Sydney 4 5 1 0
     Brisbane 2 2 4 4
     Adelaide 1 0 2 0
    ----------------------------------------------------- 
表中的变量为M、S、B、A和1,2,3,4

每次我执行代码时,它要么不计算值,要么说一个值有36个

   #include  <stdio.h>
   int main()
    {
        int  i,  j;
        char M, B, S, A;
        int m_cricket = 0, m_footy = 0, m_tennis = 0, m_soccer = 0;
        int s_cricket = 0, s_footy = 0, s_tennis = 0, s_soccer = 0
        int b_cricket = 0, b_footy = 0, b_tennis = 0, b_soccer = 0
        int a_cricket = 0, a_footy = 0, a_tennis = 0, a_soccer = 0
        int survey[36][2] = {{M, 1}, {S, 2}, {B, 1}, {B, 3}, {M, 2}, {B, 4}, {S, 1}, {A, 3}, {M, 4}, {B, 2}, {B, 1}, {S, 3}, {B, 4}, {B, 4}, {M, 1}, {M, 1}, {B, 3}, {B, 3}, {S, 1}, {S, 1}, {S, 2}, {M, 4}, {M, 4}, {S, 2}, {A, 1}, {S, 2}, {B, 3}, {M, 1}, {B, 1}, {S, 2}, {A, 3}, {M, 4}, {S, 1}, {B, 2}, {M, 3}, {B, 4}};

for (int i = 0; i < 36; i++)
{
        for (int j = 0; j == 2; j++)
        {
            if (survey[i][j] == M, 1)
            {
                m_cricket++;
            }
        }

}

    printf("\tCity  Cricket Footy  Tennis  Soccer\n");
    printf("------------------------------------------------\n");
    printf("Melbourne:\t %d\t %d\t %d\t %d\t\n", m_cricket, m_footy, m_tennis, m_soccer);
    printf("Sydney:\t %d\t %d\t %d\t %d\t\n", s_cricket, s_footy, s_tennis, s_soccer);
    printf("Brisbane:\t %d\t %d\t %d\t %d\t\n", b_cricket, b_footy, b_tennis, b_soccer);
    printf("Adelaide:\t %d\t %d\t %d\t %d\t\n", a_cricket, a_footy, a_tennis, a_soccer);

    return 0;
}   
#包括
int main()
{
int i,j;
字符M,B,S,A;
int m_板球=0,m_足球=0,m_网球=0,m_足球=0;
国际板球队=0,足球队=0,网球队=0,足球队=0
国际板球=0,足球=0,网球=0,足球=0
int a_板球=0,a_足球=0,a_网球=0,a_足球=0
[36][2][3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4}、{S,2}、{A,1}、{S,2}、{B,3}、{M,1}、{B,1}、{S,2}、{A,3}、{M,4}、{S,1}、{B,2}、{M,3}、{B,4};
对于(int i=0;i<36;i++)
{
对于(int j=0;j==2;j++)
{
如果(测量[i][j]==M,1)
{
板球++;
}
}
}
printf(“\tCity Cricket Footy网球足球”);
printf(“---------------------------------------------------------------\n”);
printf(“墨尔本:\t%d\t%d\t%d\t%d\t\n”、板球、足球、网球、足球);
printf(“悉尼:\t%d\t%d\t%d\t%d\t\n”,s_板球、s_足球、s_网球、s_足球);
printf(“布里斯班:\t%d\t%d\t%d\t%d\t\n”、板球、足球、网球、足球);
printf(“阿德莱德:\t%d\t%d\t%d\t%d\t\n”,板球、足球、网球、足球);
返回0;
}   
我哪里出错了?有没有更好的方法来编写代码

我只为墨尔本编写代码,因为在编写此代码时,我的逻辑是,如果我能让一个城市工作,其余的城市将很简单

  • 您使用未初始化的字符变量(
    M
    B
    S
    A
    )就像它们意味着什么一样;这很令人困惑
  • 这行:
    如果(调查[i][j]==M,1)
    毫无意义。如果,它将始终采用
    ,因为逗号运算符使条件等效于单个
    1
此循环

for (int j = 0; j == 2; j++)
……什么也不做。它仅在
j
2
时运行。因为它被初始化为
0
,所以永远不会执行其中的代码

如果您希望它在内部数组的值上循环(
0
1
),您需要检查
j
是否小于
2
,就像您对外部循环所做的那样

for (int j = 0; j < 2; j++)
另外,如果您打算使用
M
B
S
A
变量将字符放入数组中,您只需将单引号括起来,就像
'M'
一样,因为它们当前未分配值,所以可能具有任何值。这同样适用于
if
语句

因此,总结您的代码应该如下所示:

#include  <stdio.h>
int main()
   {
   int m_cricket = 0, m_footy = 0, m_tennis = 0, m_soccer = 0;
   int s_cricket = 0, s_footy = 0, s_tennis = 0, s_soccer = 0
   int b_cricket = 0, b_footy = 0, b_tennis = 0, b_soccer = 0
   int a_cricket = 0, a_footy = 0, a_tennis = 0, a_soccer = 0
   int survey[36][2] = {{'M', 1}, {'S', 2}, {'B', 1}, {'B', 3}, {'M', 2}, {'B', 4}, {'S', 1}, {'A', 3}, {'M', 4}, {'B', 2}, {'B', 1}, {'S', 3}, {'B', 4}, {'B', 4}, {'M', 1}, {'M', 1}, {'B', 3}, {'B', 3}, {'S', 1}, {'S', 1}, {'S', 2}, {'M', 4}, {'M', 4}, {'S', 2}, {'A', 1}, {'S', 2}, {'B', 3}, {'M', 1}, {'B', 1}, {'S', 2}, {''A'', 3}, {'M', 4}, {'S', 1}, {'B', 2}, {'M', 3}, {'B', 4}};

   for (int i = 0; i < 36; i++)
      {
      if ((survey[i][0] == 'M') && (survey[i][1]==1))
         {
         m_cricket++;
         }
      }

    printf("\tCity  Cricket Footy  Tennis  Soccer\n");
    printf("------------------------------------------------\n");
    printf("Melbourne:\t %d\t %d\t %d\t %d\t\n", m_cricket, m_footy, m_tennis, m_soccer);
    printf("Sydney:\t %d\t %d\t %d\t %d\t\n", s_cricket, s_footy, s_tennis, s_soccer);
    printf("Brisbane:\t %d\t %d\t %d\t %d\t\n", b_cricket, b_footy, b_tennis, b_soccer);
    printf("Adelaide:\t %d\t %d\t %d\t %d\t\n", a_cricket, a_footy, a_tennis, a_soccer);

    return 0;
}
#包括
int main()
{
int m_板球=0,m_足球=0,m_网球=0,m_足球=0;
国际板球队=0,足球队=0,网球队=0,足球队=0
国际板球=0,足球=0,网球=0,足球=0
int a_板球=0,a_足球=0,a_网球=0,a_足球=0
[36][[3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4},{'S',2},{'A',1},{'S',2},{'B',3},{'M',1},{'B',1},{'S',2},{'A',3},{'M',4},{'S',1},{'B',2},{'M',3},{'B',4};
对于(int i=0;i<36;i++)
{
如果((调查[i][0]='M')&&(调查[i][1]==1))
{
板球++;
}
}
printf(“\tCity Cricket Footy网球足球”);
printf(“---------------------------------------------------------------\n”);
printf(“墨尔本:\t%d\t%d\t%d\t%d\t\n”、板球、足球、网球、足球);
printf(“悉尼:\t%d\t%d\t%d\t%d\t\n”,s_板球、s_足球、s_网球、s_足球);
printf(“布里斯班:\t%d\t%d\t%d\t%d\t\n”、板球、足球、网球、足球);
printf(“阿德莱德:\t%d\t%d\t%d\t%d\t\n”,板球、足球、网球、足球);
返回0;
}

inti,j;
是多余的,因为您在循环中再次声明它们,并且它们只在循环中使用。在进行C编程时,您不能仅仅“猜测语法”通过尝试和错误。这永远不会成功。相反,你必须真正知道你在做什么,在你写的每一行代码。这段代码没有任何意义-你需要在你的初级编程书中学习字符串和字符。
#include  <stdio.h>
int main()
   {
   int m_cricket = 0, m_footy = 0, m_tennis = 0, m_soccer = 0;
   int s_cricket = 0, s_footy = 0, s_tennis = 0, s_soccer = 0
   int b_cricket = 0, b_footy = 0, b_tennis = 0, b_soccer = 0
   int a_cricket = 0, a_footy = 0, a_tennis = 0, a_soccer = 0
   int survey[36][2] = {{'M', 1}, {'S', 2}, {'B', 1}, {'B', 3}, {'M', 2}, {'B', 4}, {'S', 1}, {'A', 3}, {'M', 4}, {'B', 2}, {'B', 1}, {'S', 3}, {'B', 4}, {'B', 4}, {'M', 1}, {'M', 1}, {'B', 3}, {'B', 3}, {'S', 1}, {'S', 1}, {'S', 2}, {'M', 4}, {'M', 4}, {'S', 2}, {'A', 1}, {'S', 2}, {'B', 3}, {'M', 1}, {'B', 1}, {'S', 2}, {''A'', 3}, {'M', 4}, {'S', 1}, {'B', 2}, {'M', 3}, {'B', 4}};

   for (int i = 0; i < 36; i++)
      {
      if ((survey[i][0] == 'M') && (survey[i][1]==1))
         {
         m_cricket++;
         }
      }

    printf("\tCity  Cricket Footy  Tennis  Soccer\n");
    printf("------------------------------------------------\n");
    printf("Melbourne:\t %d\t %d\t %d\t %d\t\n", m_cricket, m_footy, m_tennis, m_soccer);
    printf("Sydney:\t %d\t %d\t %d\t %d\t\n", s_cricket, s_footy, s_tennis, s_soccer);
    printf("Brisbane:\t %d\t %d\t %d\t %d\t\n", b_cricket, b_footy, b_tennis, b_soccer);
    printf("Adelaide:\t %d\t %d\t %d\t %d\t\n", a_cricket, a_footy, a_tennis, a_soccer);

    return 0;
}