weixin_74408150 2023-04-23 16:39 采纳率: 75%
浏览 191
已结题

关于#c++#的问题:两种方法编写程序,创建包含10个数的数组,使用循环语句为数组赋值,输出其中最大值及对应的元素下标。考虑整型、小数、字符等不同类型数组的情况。

两种方法编写程序,创建包含10个数的数组,使用循环语句为数组赋值,输出其中最大值及对应的元素下标。考虑整型、小数、字符等不同类型数组的情况。
方法1函数原型:

int getMaxIndex(int a[], int size=10);
int getMaxIndex(double a[], int size=10); 
int getMaxIndex(char a[], int size=10);

方法2函数模板原型:

template<typename T>
 int getMaxIndex (T a[], int size=10);

img

  • 写回答

6条回答 默认 最新

  • 语言-逆行者 2023-04-23 17:09
    关注

    基于new Bing加以修改过后的编写:
    【法一】

    #include <iostream>
    using namespace std;
    
    int getMaxIndex(int a[], int size=10);
    int getMaxIndex(double a[], int size=10);
    int getMaxIndex(char a[], int size=10);
    
    int main() {
        int choice;
        cout << "请选择输入数据的类型:" << endl;
        cout << "1. 整数" << endl;
        cout << "2. 小数" << endl;
        cout << "3. 字符" << endl;
        cin >> choice;
    
        if(choice == 1) {
            int intArray[10];
            cout << "请输入10个整数:" << endl;
            for(int i = 0; i < 10; i++) {
                cin >> intArray[i];
            }
            int max_idx = getMaxIndex(intArray);
            cout << "整数数组的最大值为:" << intArray[max_idx] << ", index=" << max_idx << endl;
        } else if(choice == 2) {
            double doubleArray[10];
            cout << "请输入10个小数:" << endl;
            for(int i = 0; i < 10; i++) {
                cin >> doubleArray[i];
            }
            int max_idx = getMaxIndex(doubleArray);
            cout << "小数数组的最大值为:" << doubleArray[max_idx] << ", index=" << max_idx << endl;
        } else if(choice == 3) {
            char charArray[10];
            cout << "请输入10个字符:" << endl;
            for(int i = 0; i < 10; i++) {
                cin >> charArray[i];
            }
            int max_idx = getMaxIndex(charArray);
            cout << "字符数组的最大值为:" << charArray[max_idx] << ", index=" << max_idx << endl;
        } else {
            cout << "输入有误,请重新运行程序!" << endl;
        }
    
        return 0;
    }
    
    int getMaxIndex(int a[], int size) {
        int max_idx = 0;
        for(int i = 1; i < size; ++i) {
            if(a[i] > a[max_idx]) {
                max_idx = i;
            }
        }
        return max_idx;
    }
    
    int getMaxIndex(double a[], int size) {
        int max_idx = 0;
        for(int i = 1; i < size; ++i) {
            if(a[i] > a[max_idx]) {
                max_idx = i;
            }
        }
        return max_idx;
    }
    
    int getMaxIndex(char a[], int size) {
        int max_idx = 0;
        for(int i = 1; i < size; ++i) {
            if(a[i] > a[max_idx]) {
                max_idx = i;
            }
        }
        return max_idx;
    }
    

    【法二】重构实现

    #include <iostream>
    using namespace std;
    
    template<typename T>
    int getMaxIndex(T a[], int size=10);
    
    int main() {
        int choice;
        cout << "请选择输入数据的类型:" << endl;
        cout << "1. 整数" << endl;
        cout << "2. 小数" << endl;
        cout << "3. 字符" << endl;
        cin >> choice;
    
        if(choice == 1) {
            int intArray[10];
            cout << "请输入10个整数:" << endl;
            for(int i = 0; i < 10; i++) {
                cin >> intArray[i];
            }
            int max_idx = getMaxIndex(intArray);
            cout << "整数数组的最大值为:" << intArray[max_idx] << ", index=" << max_idx << endl;
        } else if(choice == 2) {
            double doubleArray[10];
            cout << "请输入10个小数:" << endl;
            for(int i = 0; i < 10; i++) {
                cin >> doubleArray[i];
            }
            int max_idx = getMaxIndex(doubleArray);
            cout << "小数数组的最大值为:" << doubleArray[max_idx] << ", index=" << max_idx << endl;
        } else if(choice == 3) {
            char charArray[10];
            cout << "请输入10个字符:" << endl;
            for(int i = 0; i < 10; i++) {
                cin >> charArray[i];
            }
            int max_idx = getMaxIndex(charArray);
            cout << "字符数组的最大值为:" << charArray[max_idx] << ", index=" << max_idx << endl;
        } else {
            cout << "输入有误,请重新运行程序!" << endl;
        }
    
        return 0;
    }
    
    template<typename T>
    int getMaxIndex(T a[], int size) {
        int max_idx = 0;
        for(int i = 1; i < size; ++i) {
            if(a[i] > a[max_idx]) {
                max_idx = i;
            }
        }
        return max_idx;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月26日
  • 已采纳回答 4月23日
  • 创建了问题 4月23日

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c