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;
}