指针练习

PTA 实验作业

题目1 :6-5 利用指针找最大值

本题题目及裁判测试程序样例

本题要求实现一个简单函数,找出两个数中的最大值。

1. 本题PTA提交列表

2. 本题设计思路

这道函数题要求我们用指针的方式来找出两个数中的最大值.

其中pxpy是题目中定义的用户传入的两个整数的指针。也就是我们要比较的两个数.

函数findmax应找出两个指针所指向的整数中的最大值,存放在pmax指向的位置。

首先当在子函数传入两个数之后,先判断两个指针所指向的数值之差.

如果*px>*py 则令* pmax=*px, 反之亦然.

3.1 源代码子函数截图

3.2 思路流程图截图

4.本题调试过程碰到问题及PTA提交列表情况说明

这道题稍微简单,只要注意一下条件就行.

题目2 :7-1 输出学生成绩

1. 本题PTA提交列表

2. 本题设计思路

这道题本题要求我们编写程序,根据首先输入的学生的成绩,统计并输出学生的平均成绩ave、最高成绩max和最低成绩min.

虽然建议使用动态内存分配来实现,但由于并不是很熟悉动态分配,在多次测试失败之后只好选择普通方法.

首先先定义 max=0,min=100,sum=0,注意使用的是 double 双精度类型定义.

先输入学生人数 n, 然后进入循环输入成绩,循环 n 次结束.

每一次循环输入之后都要与 max 和min 进行比较,若大于 max则将此数赋给 max,若小于 min则将此数赋给 min, 之后将每次的数累加到 sum.

最后输出 min,max 和 sum/n.

3.1 源代码截图

3.2 思路流程图截图

4.本题调试过程碰到问题及PTA提交列表情况说明

在定义数组时候误将 a[n] 定义成a[n-1],导致后面循环和输入次数少一次.

题目2 :7-2 在数组中查找指定元素

1. 本题PTA提交列表

2. 本题设计思路

 本题要求我们输入一个正整数repeat (0<repeat<10),做repeat次运算:

输入一个正整数 n,然后输入n个整数存入数组a[]中.

再输入一个整数x,在数组a中查找x,如果找到则输出相应元素的最小下标,否则输出"Not found"。

本题要求定义并调用函数search(list, n, x),在数组list中查找元素x,若找到则返回相应元素的最小下标,否则返回-1,函数 list 的类型是整型指针,n和x的类型是int,函数的类型是int。

首先输入需要的做运算的次数repeat,然后做 repeat 次循环,依次输入 n 个整数再执行 n 此循环,最后输入需要找到的数 x.开始进入判断过程的子函数.

在子函数中循环 n 次判断x 是否等于 list+i 地址中的数,有的话跳出循环,没有的话输出 i.

3.1 源代码截图

3.2 思路流程图截图

4.本题调试过程碰到问题及PTA提交列表情况说明

这道题在输入list[] 和 x的时候忘记其中对 list[] 要循环输入,不能合起来输入x和 lisrt[].

同学代码结对互评

1.互评同学名称

谢晔晖

题目 7-1

2.我的代码

对方代码

从二者中很容易可以看出对方使用的是指针,而我用的是普通的循环数组.

我的思路是在每次输入学生成绩后直接和 max 和 min 对比,同时累加到最后计算平均值.

对方使用的是子函数和指针的方式进行计算,答题思路和我的一样,只是对与格式略有不同.

本题本来要求使用动态分布进行计算,但对方使用指针和子函数时整个结构更有条例性,但略显稍长.我是使用普通方法固稍微易于理解.

总体来说如果不是题目要求我更喜欢我的方式.

PTA 最终排名

本周学习总结

一.你学会了什么

我学会的知识点:

1.指针是一个单独变量,只是指向了其他变量的地址(相当于汇编中的间接寻址,与地址寄存器类似);

2. sizeof对于指针变量和数组的处理是不一样的。拿上指针p 和数组a[10]来说,对于一个32位地址的系统。p是一个指针变量其内容存储的是4个字节的地址;而数组名a并不是一个变量,它是一个常量的地址,sizeof将其视为整个数组的代表,因此计算的时候会计算整个数组的大小。

3.指针和数组作为参数传递的时候,其实是传递的一个地址。函数指针与所指向的函数,返回值类型和形参列表必须一致.

二.本周的内容,你还不会什么?

在本章中对动态存储空间的使用还不大熟悉,总是忘记对指针进行初始化.还有就是在利用子函数时候对指针的指向性比较模糊.

三.指针结构考试总结

虽然在指针方面没有很精通,不过经过这次考试之后还是需要多练习指针.

原文地址:https://www.cnblogs.com/xiaori520/p/8277887.html

时间: 2024-10-18 09:15:34

指针练习的相关文章

[c/c++] programming之路(17)、高级指针

一.二级指针 二级指针的作用:1.函数改变外部变量指针2.外挂改变一个指针的值 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 void main(){ 5 int a = 10; 6 int b = 20; 7 int *p1 = &a; 8 int *p2 = &b; 9 int **pp = &p1; 10 printf("%d,", **pp); 11 printf("\n%x,

C++学习笔记----2.4 C++引用在本质上是什么,它和指针到底有什么区别

从概念上讲.指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变. 而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量). 在C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数和引用传递参数是有本质上的不同的: 指针传递参数本质上是值传递的方式,它所传递的是一个地址值.值传递过程中,被调

【转】父类子类指针相互转换问题

1.当自己的类指针指向自己类的对象时,无论调用的是虚函数还是实函数,其调用的都是自己的: 2.当指向父类对象的父类指针被强制转换成子类指针时候,子类指针调用函数时,只有非重写函数是自己的,虚函数是父类的: 3.当指向子类对象的子类指针被强制转换成父类指针的时候,也就是父类指针指向子类对象,此时,父类指针调用的虚函数都是子类的,而非虚函数都是自己的. 将上面三句话总结成一句话就是:当父类子类有同名非虚函数的时候,调用的是转换后的指针类型的函数: 当父类子类有同名虚函数的时候呢,调用的是指针转换前指

C++ Primer 学习笔记与思考_7 void和void*指针的使用方法

(一)void的含义 void的字面意思是"无类型",void差点儿仅仅有"凝视"和限制程序的作用,由于从来没有人会定义一个void变量,让我们试着来定义: void a; 这行语句编译时会出错.提示"illegal use of type 'void'".只是.即使void a的编译不会出错.它也没有不论什么实际意义. void真正发挥的作用在于: (1) 对函数返回的限定: (2) 对函数參数的限定. int f(void); equal t

当this指针成为指向之类的基类指针时,也能形成多态

this指针: 1)对象中没有函数,只有成员变量 2)对象调用函数,通过this指针告诉函数是哪个对象自己谁. 1 #include<iostream> 2 using namespace std; 3 class Shape 4 { 5 public: 6 //void cal_display(Shape* this) 7 void cal_display(){ 8 display(); 9 this->display(); 10 } 11 private: 12 virtual vo

指针x(超简单的x)

指针! 1 #include<cstdio> 2 #include<iostream> 3 4 using namespace std; 5 6 /* 7 相加或者相乘 8 */ 9 10 int main() 11 { 12 int a,b,s,t; 13 cin>>a>>b; 14 int *p; 15 p=&a; 16 int *q; 17 q=&b; 18 s=(*p)+(*q); 19 t=(*p)*(*q); 20 printf(

二重指针实现排序

1 //双指针对十个数排序 2 3 #include <stdio.h> 4 #include <stdlib.h> 5 #define N 8 6 //2017.3.5 7 int main() 8 { 9 //初始化数组 赋值N个数 用指针数组指向 10 int num[N]; 11 int *pNum[N]; 12 int **p = NULL; 13 for (int i = 0; i < N; i++) 14 { 15 num[i] = rand() % 100;/

c指针-专题

六---指针 内存和地址怎么理解呢? 机器中有一些位置,每一个位置被称为[字节]/byte,许多现代机器上,每个字节包含8个位.更大内存单位[字],通常包含2个或4个字节组成. 一个字包含4个字节,它的地址是什么? 他仍然只有一个地址,是最左边还是最右边的那个字节的位置,取决于机器. 机器事实-关于整型的起始位置: 在要求边界对齐(boundaryalignment)的机器上,整型存储的起始位置只能是某些特定的字节,通常是2或4的倍数. 变量名和地址关系? 所有高级语言的特性之一,就是通过名字而

智能指针的原理和简单实现

什么是智能指针? 智能指针实质上是一个类,定义一个类来封装资源的分配和释放.这个类的构造函数中传入一个指针,完成资源的分配和初始化.在析构函数中释放传入的该指针,完成资源的释放. 为什么要用智能指针? 智能指针就是智能,自动化的管理指针所指向的动态资源. 例如以下情况:代码中经常会忘记释放动态开辟的内存资源,导致内存泄露. // case1 void Test2() {  int* p1 = new int(2);  bool isEnd = true;  //...  if (isEnd)  

单继承与多继承中的虚函数表和虚函数指针

首先,我们了解一下何为单继承,何为多继承?? 单继承:一个子类只有一个直接父类. 多继承:一个子类有两个或多个直接父类. 单继承中的虚函数表分析: 示例程序: #include <iostream> using namespace std; typedef void(*FUNC)(); class Base { public: virtual void func1() { cout << "Base::func1()" << endl; } virt