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

关于#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 09: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;
    }
    
    
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    语言-逆行者 2023-04-23 09:22

    是不是输入的10个数可以不同类型?

    回复
    2301_77516481 回复 语言-逆行者 2023-06-09 05:32

    直接这样就行了吗

    回复
查看更多回答(5条)
编辑
预览

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月26日
  • 已采纳回答 4月23日
  • 创建了问题 4月23日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部