我知道它看起来很多,但实际上并非如此 它只是检查数组中的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);
}
答案 0 :(得分:1)
*glav+=*glav+1;
看起来想成为
(*glav)+=1;
与
类似*spor=*spor+1;
即。不要通过其值和1增加变量
相反只增加1.
而且(我的个人品味)对()
更加慷慨。