我正试图解决一个问题,我需要在数组中输入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-odd
或all-even
。
- 有
T
测试用例,1 <= T <= 100
测试用例 - 在每个测试用例中
N
指定列表(数组)中元素的数量,2 <= N <= 50
- 后接
N
,以空格分隔。 - 对于每个测试用例,如果所有列表成员都是
all-odd
或all-even
,则打印YES
。否则打印NO
- 由于输入是管理的,我们假设
scanf()
总是成功的。 我们不需要在数组中存储数字,因为我们以后不需要它们。
简化代码:
#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