PTA 7-491 3名同学5门课程成绩,输出最好成绩及所在的行和列(要求指针作为函数的参数)

本文介绍如何使用C++编程,通过指针传递二维数组,实现查找并输出3名同学5门课程成绩中最高分所在的行和列。程序包括输入、查找和打印功能,遵循给定的输入和输出格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PTA 7-491 3名同学5门课程成绩,输出最好成绩及所在的行和列(要求指针作为函数的参数)

分数 10
作者 jibaoyu
单位 江西理工大学

编程:数组存储3名同学5门课程成绩
输出最好成绩及所在的行和列
要求:将输入、查找和打印的功能编写成函数
并将二维数组通过指针参数传递的方式由主函数传递到子函数中

输入格式:
每行输入一个同学的5门课的成绩,每个成绩之间空一格,见输入样例

输出格式:
输出共3行:
第一行输出,如:最高分是:97
第二行输出最高分所在的行数,如:行数是:2
第二行输出最高分所在的列数,如:列数是:3

输入样例:
在这里给出一组输入。例如:

87 67 76 78 85
92 78 79 86 88
79 85 87 97 89
输出样例:
在这里给出相应的输出。例如:

最高分是:97
行数是:2
列数是:3

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

#include <stdio.h>

void PutsData(int *p){
    
    int Numb = -1;    //记录最大的数
    int m = 0, n = 0;    //记录行列
    
    for(int i = 0; i < 3; i++){    //输入数据
        for(int j = 0; j < 5; j++){
            scanf("%d ", &*p);
            if(*p > Numb){    //寻找最大的数
                Numb = *p;
                m = i;    //标记行
                n = j;    //标记列
            }
            p++;
        }
    }
    
    printf("最高分是:%d\n行数是:%d\n列数是:%d", Numb, m, n);    //按照题目要求输出
}

int main(){

    int Transcript[3][5] = {0};    //定义二维数组
    int *Arr = &Transcript;    //定义指针并指向数组的首地址
    
    PutsData(Arr);
    
    return 0;
}

解题思路:
step1:定义数组和指针,并且指向该数组的首地址。
step2:将指针作为函数的参数并将数据储存数组中
step3:找到最大的数并记录位置
step4:按照题目要求输出

归属知识点:
数组
指针
函数
循环结构

在 C++ 中,可以通过指针访问对象数组的数据。以下是详细的说明以及实现方法。 ### 如何通过指针访问对象数组 当创建一个对象数组时,可以使用指向该类型的指针来遍历并操作这些对象。假设有一个类 `MyClass` 其对应的对象数组: #### 定义类对象数组 ```cpp class MyClass { public: int value; void display() const { std::cout << "Value: " << value << std::endl; } }; int main() { const int size = 5; // 数组大小 MyClass objArray[size]; // 创建对象数组 // 初始化对象数组中的数据 for (int i = 0; i < size; ++i) { objArray[i].value = i * 10; } // 使用指针访问对象数组 MyClass* ptr = objArray; // 将指针初始化为数组首地址 for (int i = 0; i < size; ++i, ++ptr) { // 遍历数组 (*ptr).display(); // 或者写成 ptr->display(); } return 0; } ``` 上述代码展示了如何利用指针访问对象数组的内容,并调用成员函数显示每个对象的状态。注意,在这里我们既可以使用解引用运算符 `(*ptr)` 来访问成员变量或函数,也可以更简洁地使用箭头运算符 `ptr->`[^1]。 ### 结合PTA7-3题目背景的应用扩展 如果按照 PTA 的风格设计一道类似的题目,则可能涉及如下需求:给定一组自定义类型的数据结构存储于动态配的对象数组中,请编写程序完成特定查询功能。下面给出基于此思路的一个例子——统计满足条件的目标数量并打印它们的信息。 #### 示例代码片段 ```cpp #include <iostream> using namespace std; // 假设这是我们要处理的简单学生记录模型 struct Student { string name; double score; bool passed() const {return score >= 60;} }; void processStudents(Student students[], int count){ cout<<"Passed Students:"<<endl; Student *pStudent = students; while(pStudent - students < count ){ if( pStudent ->passed()){ cout<<pStudent->name<<"\t"<<pStudent->score<<endl; } ++pStudent ; } } int main(){ int numStu; cin>>numStu; Student stuList[numStu]; for(auto &stu : stuList){ cin>>stu.name>>stu.score; } processStudents(stuList,numStu); return 0; } ``` 这段代码实现了对学生表的操作,其中包含了通过指针迭代整个数组的过程[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值