PTA 指针与数组

题目:

请分析以下代码,理解指针与数组的关系、指针运算。

#include<stdio.h>
int main(){
    int a[10]={0,1,2,3,4,5,6,7,8,9};
    int i,*p1,*p2,*p3;
    p1=a,p2=a+5,p3=a+7;               //相当于 p1=&a[0],p2=&a[5],p3=&a[7]; 
    printf("%ld,%ld,%ld\n",p1,p2,p3); //输出指针的值(数组元素地址值) 
    printf("%d,%d,%d\n",*p1,*p2,*p3); //输出指针指向变量的值 
    printf("%d,%d\n",p1-p2,p2-p1);    //指针减法 
    printf("%d,%d\n",p1>p2,p1==a);    //指针与指针的关系 
    for(p1=a;p1<a+10;p1++)            //通过指针遍历数组 
      printf("%d ",*p1);
    return 0;    
}

编程读入若干整数(不超过50个)到数组中,然后倒序输出,遍历数组时用指针实现。

输入样例:

1 5 25 18 -299

输出样例:

-299 18 25 5 1

 

代码:

#include <iostream>
#include <cstdio>
using namespace std;

int main(){
    int a[50];
    int z=1;
    //这样子来判断输入是否结束.用这个句子之前要先有个cin>>.
    cin >> a[0];
    while (cin.get()!=EOF){
        cin >> a[z];
        z++;
    }
    int *p = &a[z-1];
    for(int i=0;i<z;i++){
        if(i!=z-1){
            cout << *p << " ";
        }else{
            cout << *p;
        }
        p = p-1;
    }
}

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 可以使用以下代码实现: ```c++ #include <iostream> using namespace std; int main() { int n, arr[50]; int *p = arr; // 定义指向数组指针 cout << "输入整数个数(不超过50个):"; cin >> n; cout << "输入" << n << "个整数:" << endl; for (int i = ; i < n; i++) { cin >> *(p + i); // 通过指针输入数组元素 } cout << "倒序输出数组元素:" << endl; for (int i = n - 1; i >= ; i--) { cout << *(p + i) << " "; // 通过指针输出数组元素 } return ; } ``` 首先定义一个整型数组 `arr` 和一个指向数组指针 `p`,然后通过指针输入数组元素,遍历数组时也使用指针实现倒序输出数组元素。 ### 回答2: 题意简述 这道题目要求我们编写一个程序,读入若干整数(不超过50个),将它们存储到数组中,并倒序输出数组中的元素。同时,我们需要使用指针来遍历数组。 解题思路 首先,我们需要定义一个数组来存储读入整数。根据题目要求,数组的长度不超过50个,因此我们可以定义一个长度为50数组。但是,由于读入整数数量不确定,可能会小于50个,因此我们需要在定义数组时将其长度设置为一个较大的值,然后在读入整数时动态调整数组的大小。 定义数组后,我们需要通过循环和指针读入整数。在读入整数时,我们还需要记录读入数字的个数,以便在输出数组时倒序输出。 最后,我们遍历数组的时候需要使用指针来实现。我们可以定义一个指针,然后将其指向数组的末尾,然后从末尾开始向前遍历数组中的元素,直到遍历到第一个元素为止。在遍历数组时,我们需要注意指针变量的改变,以确保指针指向正确的数组元素。 代码实现 下面是使用C语言实现的代码: #include <stdio.h> #define MAX_SIZE 50 // 数组最大长度 int main() { int nums[MAX_SIZE]; // 定义数组 int n = 0; // 读入数字的个数 int *p = NULL; // 定义指针 // 循环读入整数 for (int i = 0; i < MAX_SIZE; i++) { int x; scanf("%d", &x); if (x == -1) { break; // 输入-1表示结束 } nums[i] = x; n++; } // 遍历数组并倒序输出 p = &nums[n - 1]; // 指向数组末尾 while (p >= nums) { printf("%d ", *p--); // 输出当前元素并移动指针 } printf("\n"); return 0; } 该程序通过循环读入整数,并使用指针实现数组遍历和倒序输出。同时,程序还使用了一个常量MAX_SIZE来限制数组的长度,以避免数组越界的问题。 ### 回答3: 编程读入若干整数数组中,实际上就是使用循环语句读取输入的整数,并将它们赋值给数组中的元素。同时,我们也可以使用指针来实现遍历数组的过程。 下面是具体的代码实现: ```c #include <stdio.h> int main() { int n; // 数组元素个数 int a[50]; // 数组 int *p = a; // 指针指向数组首元素 printf("输入数组元素个数:\n"); scanf("%d", &n); // 循环读入数组元素 for (int i = 0; i < n; i++) { printf("输入第 %d 个数:\n", i+1); scanf("%d", p+i); } // 输出数组元素 printf("倒序输出数组元素:\n"); for (int i = n-1; i >= 0; i--) { printf("%d ", *(p+i)); // 使用指针访问数组元素 } return 0; } ``` 在上述代码中,我们首先通过 `scanf` 读入数组元素个数 `n`,然后使用循环读取输入的整数,并将它们赋值给数组中的元素。这里需要注意,由于数组名同时也是数组的首地址,因此我们可以用 `int *p = a` 来将指针 `p` 指向数组首元素。在循环遍历数组时,我们可以使用指针访问数组中的元素,即 `*(p+i)`。最后,按倒序输出数组中的元素。 需要注意的是,在输入数组元素时一定要确保输入的个数不超过数组的最大长度,即50。另外,在实际开发中,我们应该尽可能考虑代码的健壮性和可扩展性,增加适当的错误处理机制等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值