PTA 7-1 利用指针返回多个函数值 (30分)(部分正确)

本文介绍两种使用C语言求解数组中最大值和最小值的方法。方法一采用冒泡排序法,通过数组排序后获取首尾元素实现;方法二则直接遍历数组,逐个比较每个元素,更新最大值和最小值变量,效率更高。

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

读入n个整数,调用max_min()函数求这n个数中的最大值和最小值。
输入格式:
输入有两行:
第一行是n值;
第二行是n个数。
输出格式:
输出最大值和最小值。
输入样例:
在这里给出一组输入。例如:
5
8 9 12 0 3

输出样例:
在这里给出相应的输出。例如:
max = 12
min = 0
方法一:

#include <stdio.h>
void max_min(int *a,int *y);
int main(){
    int n,i
    int a[80];  
    scanf("%d",&n);
        for(i=0;i<n;i++){
                scanf("%d",&a[i]);    } 
max_min(a,n); 
return 0;}
void max_min(int *a,int *y){
    int i,j,t;   
   for(i=0;i<y;i++){     
   for(j=0;j<y;j++){
     if(*(a+j)<*(a+j+1)){ 
            t=*(a+j);     
            *(a+j)=*(a+j+1);     
            *(a+j+1)=t;}
     } 
  }  
 printf("max = %d\nmin = %d",*(a),*(a+j-1));
 }

思路:利用冒泡排序将数组排列,最后输出首末位即最值;
总结:代码部分错未解决;
在这里插入图片描述

方法二:
代码:

#include <stdio.h>
void max_min(int a[],int n,int *pmax,int *pmin);
int main(){
    int n,i;
    int a[80]; 
    int *pmax,*pmin;    
    scanf("%d",&n);    
    for(i=0;i<n;i++){        
    scanf("%d",&a[i]);    }    
    max_min(a,n,&pmax,&pmin);    
    return 0;}
void max_min(int a[],int n,int *pmax,int *pmin){
    int i,j,t;
    *pmax=a[0];
    *pmin=a[0];
    for(i=0;i<n;i++){
          if(*pmax<a[i]) *pmax=a[i];
          if(*pmin>a[i]) *pmin=a[i];    
}    
printf("max = %d\nmin = %d",*pmax,*pmin);
}

思路:逐个比较得出最值;
提交结果:
在这里插入图片描述

在 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]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值