指针不正确[C]

时间:2017-04-25 18:27:30

标签: c arrays pointers

  

我知道它看起来很多,但实际上并非如此   它只是检查数组中的char是否是元音,如果它在主/支持对角线上,它会使计数器变为+1。

     

问题是输出是主对角线= 31,支持对角线= 4。   我不确定问题出在哪里,我现在已经看了一个小时了。

#include <stdio.h>
#include <math.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>

void Dijagonala(char znakovi[5][5],int *glav,int *spor)
{
    int i,j;
for(i=0;i<5;i++){ 
for(j=0;j<5;j++)
{
    if (((znakovi[i][j] == 'a') || (znakovi[i][j] == 'e') || (znakovi[i][j] == 'i') || (znakovi[i][j] == 'o') || (znakovi[i][j] == 'u') ||
    (znakovi[i][j] == 'A') || (znakovi[i][j] == 'E') || (znakovi[i][j] == 'I') || (znakovi[i][j] == 'O') || (znakovi[i][j] == 'U')) 
    && (i==j))
    *glav+=*glav+1;
else if (((znakovi[i][j] == 'a') || (znakovi[i][j] == 'e') || (znakovi[i][j] == 'i') || (znakovi[i][j] == 'o') || (znakovi[i][j] == 'u') ||
    (znakovi[i][j] == 'A') || (znakovi[i][j] == 'E') || (znakovi[i][j] == 'I') || (znakovi[i][j] == 'O') || (znakovi[i][j] == 'U')) 
    && (j+i == 4))
    *spor=*spor+1;

}
}
}
int main()
{
char znakovi[5][5];
int gsam=0,ssam=0,i,j,test=5;
for(i=0;i<5;i++){ 
for(j=0;j<5;j++)
{scanf("%c",&znakovi[i][j]);
fflush(stdin);
}}
Dijagonala(znakovi,&gsam,&ssam);
printf("glavna %d \n Sporedna %d",gsam,ssam);
}

1 个答案:

答案 0 :(得分:1)

*glav+=*glav+1;

看起来想成为

(*glav)+=1;  

类似
*spor=*spor+1;

即。不要通过其值和1增加变量 相反只增加1.
而且(我的个人品味)对()更加慷慨。