pta7-9指针与数组

img

题目代码如下


#include
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;p110;p1++)            //通过指针遍历数组 
      printf("%d ",*p1);
    return 0;    
}

要求用指针做

首先可以用一个循环获取一行整数到数组中;然后使用一个int指针指向数组最后一个元素,然后逐个往数组前面打印各个值即可。代码如下:

参考链接:
C 库函数 – scanf() | 菜鸟教程

#include <stdio.h>

int main(void){
    
    int nums[50];
    int i=0;
    
//    scanf("%d",&nums[i]); // 读取一个整数到数组 
//    while(getchar()!='\n'){ //如果没有遇到换行符,则循环读取整数到数组nums中 
//        i++;  // 指向数组下一个元素位置 
//        scanf("%d",&nums[i]); 
//    }

    
    while(scanf("%d",&nums[i])!=EOF){ //如果没有遇到换行符,则循环读取整数到数组nums中 
        i++;  // 指向数组下一个元素位置 
    
    }
    
    int * j=nums+i-1; // 用一个int指针指向数组最后一个元素位置 
    while(j>=nums){  //如果int指针j的地址值大于等于数组首元素的地址,则循环打印指针j指向的元素值 
        
        if(j==nums){
            printf("%d",*j); //打印指针j指向的值 
        } else{
            printf("%d ",*j); //打印指针j指向的值 
        }
        
        j--;  //指针j指向数组前一个位置元素的地址 
    }
    //printf("end");
    
    return 0;
} 

img