我有一个程序理论上应该在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;
}
答案 0 :(得分: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
,因为您希望获得字符文字。
答案 1 :(得分:0)
我注意到的第一件事:
int scelta = 0;
switch (scelta)
{
case 1:
...
}
这不会打击案件。值为0
,1
只有一个案例。
答案 2 :(得分:0)
使用像Net-beans这样的好IDE。它显示了大部分这类问题。 使用此代码段更改。
scanf("%c", &scelta1);
if(scelta1 == 'A')
{
}
不
if (scelta1 == A)
{ //code
}
您正在比较数组指针和整数。