有没有办法在for循环中打印(if -else)条件而不打印两次?



我正试图解决一个问题,我需要在数组中输入n个数字,需要找到数组的值是奇数还是偶数(意味着2 2 2 2 2将接受,但1 2 1 3将不接受cz它有偶数和奇数),但当我试图打印值时它显示yesyesyes我怎么能做到??

#include <stdio.h>
#include <stdlib.h>
int main()
{
int t,n,a[1000],i;
scanf("%d",&t);
if(t>=1 && t<=100)
{
scanf("%d",&n);
if(n>=2 && n<=50)
{
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
if(a[i]%2==0)
{
break;
}
if(a[i]%2!=0)
{
break;
}
else
printf("NO");
}
printf("YES");
}
}
return 0;
}

我假定问题陈述:

:查找给定列表中的所有元素是否都是all-oddall-even

  • T测试用例,1 <= T <= 100测试用例
  • 在每个测试用例中N指定列表(数组)中元素的数量,2 <= N <= 50
  • 后接N,以空格分隔。
  • 对于每个测试用例,如果所有列表成员都是all-oddall-even,则打印YES。否则打印NO
  1. 由于输入是管理的,我们假设scanf()总是成功的。
  2. 我们不需要在数组中存储数字,因为我们以后不需要它们。

简化代码:

#include <stdio.h>
#include <stdlib.h>
int main () {
int T;      // number of tests
scanf ("%d", &T);
while (T--) {
int N;  // numbers in a given test
scanf ("%d", &N);
int even = 0;
int odd = 0;
for (int ni = 0; ni++ < N; ) {
int X;
scanf ("%d", &X);
(X % 2) ? ++odd : ++even;
//if (odd && even) break; // but, you need to clear the inputs before next test case
}
if (N == odd || N == even)
printf ("YESn");
else
printf ("NOn");
}
return 0;
}

输入文件:

3
4
2 2 2 2 
4
1 2 1 3
5
1 5 7 33 5

输出将是:

YES
NO
YES

最新更新