如果不考虑数组存储,那直接循环输入然后判断就行了。比如:
#include<
stdio.h>
int main()
{
int n,even=0,odd=0;
printf("输入任意个
正整数(输入-1结束输入):");
scanf("%d",&n);
while(n!=-1)
{
if(n>0 && n%2==0)
even++;
if(n>0 && n%2!=0)
odd++;
scanf("%d",&n);
}
printf("其中偶数个数:%d个,奇数个数:%d个\n",even,odd);
return 0;
}
如果想要保存任意输入的数组,需要动态申请(不需要事先规定数组大小):
#include<stdio.h>
#include<malloc.h>
int main()
{
int i,n,even=0,odd=0,len=0,*nums=(int *)malloc(sizeof(int)),*nSave=NULL;
if(!nums)
{
printf("内存申请失败!\n");
return 1;
}
printf("输入任意个正整数(输入-1结束输入):");
scanf("%d",&n);
while(n!=-1)
{
len++;
if(len>1)
{
if((nSave=(int *)realloc(nums,sizeof(int)*len)))
nums=nSave;
else
{
printf("内存申请失败!\n");
return 1;
}
}
nums[len-1]=n;
if(n>0 && n%2==0)
even++;
if(n>0 && n%2!=0)
odd++;
scanf("%d",&n);
}
printf("输入的数组为:");
for(i=0;i<len;i++)
printf("%d ",nums[i]);
printf("其中偶数个数:%d个,奇数个数:%d个\n",even,odd);
return 0;
}