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

关于#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日

悬赏问题

  • ¥50 三种调度算法报错 采用的你的方案
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥15 对于这个问题的解释说明
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败