随机生成一组(20个)两位整数,完成如下功能:
(1)分别统计输出奇偶数的个数,求出偶数和、奇数平均值;
(2)从小到大排序并输出结果;
(3)不重新排序的前提下(前后对调),把数组改为从大到小排序并输出结果
如下程序是随机生成三位整数num,拆分出百位数num1和个位数num2,若百位数与个位数之差为5则结束生成随机数,统计并输出共执行了多少次,最终生成的数是多少。该程序有四个空白处,请阅读程序,将空白处补充完整
代码
请把程序空缺的内容(1)-(4)填写完整,并调试通过输出正确的结果。
先说说第2个:
第1个空因为 rand()%900 可生成0-899,这样加上100后,就是100-999,为三位随机数。
第2个与第3个就是分别求百位和个位。
第4个,因为满足了差为5,退出循环。
第1个:
#include <bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
int a[25];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
srand((unsigned int)(time(NULL)));
for (int i=1;i<=20;i++) a[i]=rand()%90+10; //生成随机数
int se=0,s1=0,s2=0;
double so=0; //奇数和
for (int i=1;i<=20;i++)
{
if (a[i]%2==1) s1++,so+=a[i];
else s2++,se+=a[i];
}
so+=0.0; //变成小数运算
cout<<"奇数个数: "<<s1<<"\n偶数个数: "<<s2<<endl;
cout<<"偶数和: "<<se<<"\n奇数平均数: "<<so/s1<<endl;
sort(a+1,a+21); //排序
cout<<"从小到大排序结果: ";
for (int i=1;i<=20;i++)
cout<<a[i]<<" ";
for (int i=1;i<20;i++)
for (int j=i+1;j<=20;j++)
if (a[i]<a[j]) swap(a[i],a[j]); //交换
cout<<"\n从大到小排序结果: ";
for (int i=1;i<=20;i++)
cout<<a[i]<<" ";
return 0;
}
运行结果
奇数个数: 11
偶数个数: 9
偶数和: 394
奇数平均数: 49.9091
从小到大排序结果: 11 13 16 19 20 26 27 28 29 39 40 42 47 56 68 81 91 93 98 99
从大到小排序结果: 99 98 93 91 81 68 56 47 42 40 39 29 28 27 26 20 19 16 13 11
有用点个采纳,谢谢了!