0

我有一个程序,理论上应该在 scelta1=1 的情况下打开某个函数,该函数重新分配一个最初初始化的数组。问题是,程序进入开关盒,看到 scelta1=1 但它没有重新分配它只是显示“插入数组的元素 [1][1]”“插入数组的元素 [1][2]”让我插入它们,而起初它确实如此,所以我将假设问题不在函数中。

总结一下:我想知道为什么在这种情况下它不会循环并让我在函数正确时为数组插入新数字。谢谢

这是程序:

#include <stdio.h>
#include <stdlib.h>
#include "matrici.h"
#define N 3

void leggi_matr(int MAT[N][N], int nRighe, int nColonne)  // The function 
{
    int i;
    int j;
    for (i=0 ; i<nRighe ; i ++)
        for (j=0 ; j<nColonne ; j ++)
        {
            printf("\nInserisci l'elemento [%d][%d] da inserire nella matrice :  ", i+1,j+1);

            scanf("%d", & MAT[i][j]);
        }
}

 int A[N][N];
 int B[N][N];
 int C[N][N];

int main (){

    int nRighe = 3;
    int  nColonne = 3;
    int scelta = 1;
    char scelta1 = 0; 

    printf ("Inserimento matrice A\n\n");
    leggi_matr(A, nRighe, nColonne);

    printf ("\n\nInserimento matrice B\n\n");
    leggi_matr(B, nRighe, nColonne);



      switch (scelta) /* I know in this case it doesn't need a switch, i need it for                           
    {                  another thing */
           case 1:
                printf ("\n\nDo you want to insert array A or B?  "); 
                scanf ("%c", &scelta1);
                if (scelta1 == 'A')
                {
                    leggi_matr(A, nRighe, nColonne);
                }    
                else 
                {
                    leggi_matr(B, nRighe, nColonne);
                }

                break;

    }




printf("\n\n\n");
system("PAUSE");
return 0;
}
4

3 回答 3

2

我认为问题出在这里-

  scanf ("%d", &scelta1);
  if (scelta1 == A)

%d是整数的说明符。

同样正如 Jonathan 在评论中正确指出的那样,scelta is 0因此当您到达 时switch (scelta),您将不会执行case 1: code

您可能想更改

int scelta = 0;

int scelta = 1;

还尝试更改 scanf 以接受如下字符:-

scanf ("%c", &scelta1);

然后像这样比较

if (scelta1 == 'A')

编辑:-

此外,最好采用char scelta1而不是int scelta1因为您想在其中获得字符文字。

于 2013-10-21T15:19:45.713 回答
0

我注意到的第一件事是:

int scelta = 0;

switch (scelta)
{
    case 1:
    ...
}

它不会打击这个案子。值是0,而且只有一个情况1

于 2013-10-21T15:22:59.333 回答
0

使用像 Net-beans 这样好的 IDE。它显示了大多数此类问题。使用此代码段更改。

scanf("%c", &scelta1);
if(scelta1 == 'A')
{

}

不是

  if (scelta1 == A)  
  {  //code 

  } 

您正在比较数组指针和整数。

于 2013-10-21T15:30:42.190 回答