0
点赞
收藏
分享

微信扫一扫

[C语言]删除数组中的偶数,输出奇数

我阿霆哥 2022-05-03 阅读 245
c语言

1.题目

【问题描述】

在[1,50]范围生成n(n从键盘输入,10<n<100)个随机种子为824的随机整数。请你设计子函数实现删除其中的奇数,返回剩下的个数,在主函数中输出剩下的数据。

要求:

1、使用子函数:

int DelOdd(int a[],int n)//n是数组元素个数,返回值为剩下的个数。

2、在子函数中实现删除操作,不允许在子函数中输出。

3、主函数中按每行10个输出剩下的元素

4、注意:随机函数和随机种子如下使用:

int seed=824;

srand(seed);

【输入形式】

主函数中循环输入数组大小。

【输出形式】

输出剩下的个数及剩下数组元素

【样例输入】

20

【样例输出】

30 47 34 18  3 41 22 26 31 27

  1 28 19 17 36 11 40 18 32  3

10

30 34 18 22 26 28 36 40 18 32

【样例说明】

数组大小是从键盘输入,先输出原数组元素,每行10个。第三行输出剩下元素总数,第四行开始是剩下元素,每行10个。

2.完整代码

#include <stdio.h>
#include <stdlib.h>
int DelOdd(int a[],int n)//n是数组元素个数,返回值为剩下的个数。
{
	int i,j=0;
	for(i=0;i<n;i++)
	{
        if(a[i]%2==0) j++; 
		else a[i]=-1;     //是偶数保留,奇数赋值为-1;
    }
    return j;            //返回偶数的总个数。 
}
int main()
{

	int n;
    scanf("%d",&n);
    int seed=824;
    srand(seed);
    int i;
    int a[105];
    for(i=0;i<n;i++){
        a[i]=rand()%50+1;    //生成1-50范围的随机数 
    }
    for(i=0;i<n;i++){
            if((i+1)%10!=0&&i!=n-1)printf("%2d ",a[i]);
            else printf("%2d\n",a[i]);  //每行10个数字的处理 
}
	int j=DelOdd(a,n);
    if(j!=-1){
	printf("%d\n",j);
   }
    int m=0;
    for(i=0;i<n;i++){                     //i从0开始,跳过所有奇数。 
        if(a[i]>0&&(m+1)%10!=0){
            printf("%2d ",a[i]);
            m++;
        }
        else if((m+1)%10==0){
            printf("%2d\n",a[i]);
            m++;
       } 
     }
	 return 0; 	
}
举报

相关推荐

0 条评论