一、题目描述
一开始未知数组长度,根据要求创建不同类型的指针,并且使用指针创建相应长度的数组,然后再完成不同的要求
若要求创建整数数组,计算数组内所有数据的平均值
若要求创建字符数组,找出数组内的最大字母
若要求创建浮点数数组,找出数组的最小值
要求程序整个过程不能使用数组下标,从数组创建、输入到搜索、比较、计算,到输出都必须使用指针
提示:使用new关键字
二、输入与输出
1.输入
第一行输入t表示有t个测试实例
第二行先输入一个大写字母表示数组类型,I表示整数类型,C表示字符类型,F表示浮点数类型;然后输入n表示数组长度。
第三行输入n个数据
依次输入t个实例
3
C 5
A D E B C
I 6
22 55 77 33 88 55
F 4
3.1 1.9 6.5 4.8
2.输出
每个根据不同的数组类型输出相应的结果
E
55
1.9
三、参考代码
#include<iostream>
#include <iomanip>
using namespace std;
void max(char *a,int num)
{
char max=*a;
for(int i=0;i<num;i++)
{
if(*(a+i)>max) max = *(a+i);
}
cout<<max<<endl;
}
void min(float *a,int num)
{
float min=*a;
for(int i=0;i<num;i++)
{
if(*(a+i)<min) min=*(a+i);
}
cout<<min<<endl;
}
void ave(int *a,int num)
{
int sum=0;
for(int i=0;i<num;i++)
{
sum+=*(a+i);
}
cout<<sum/num<<endl;
}
int main()
{
int t,num;
char ch;
cin>>t;
while(t--)
{
cin>>ch>>num;
if(ch=='C')
{
char *a=new char[num];
for(int i=0;i<num;i++)
{
cin>>a[i];
}
max(a,num);
delete []a;
}
else if(ch=='I')
{
int *a=new int[num];
for(int i=0;i<num;i++)
{
cin>>a[i];
}
ave(a,num);
delete []a;
}
else if(ch=='F')
{
float *a=new float [num];
for(int i=0;i<num;i++)
{
cin>>a[i];
}
min(a,num);
delete []a;
}
}
return 0;
}
四、题解思路
主函数通过不一样的ch来进入不一样的函数,ave(求平均值),min(求最小值),max(求最大值)
这里要用到动态数组
创建:例如char*a=new char【num】; num是我们这里自己输入的,这里表示是char类型的指针名子叫a,有num个(例如num=3,则有a[0],a[1], a[2]都是char类型的指针)
销毁:一定要销毁 delete []a;(用delete加数组字符[],再加名字这里是a)