指针综述

Description

键盘输入6个整数存到二维数组a[2][3]中,要输出它们,请填空:

int main()

{

    int a[2][3], i, j;

    _____________;    //定义一个指向变量的指针变量p1并赋初值

    _____________;    //定义一个指向一维数组的指针变量p2并赋初值

    for(i=0;i<=1;i++)

         for(j=0;j<=2;j++)

                      scanf("%d", &a[i][j]);

   for(i=0;i<=1;i++)

        for(j=0;j<=2;j++)

               _____________________;    //利用p1输出每个整数

    printf("\n");

   for(i=0;i<=1;i++)

        for(j=0;j<=2;j++)

               _____________________; //利用p2输出每个整数

   printf("\n");

   for(i=0;i<=1;i++)

       for(j=0;j<=2;j++)

               _____________________; //利用数组名a输出每个整数,用指针法,不要用下标法

    printf("\n");

    return 0;

}

 

Input

输入6个整数

Output

按要求输出数据,每个数据占3位

Sample Input

2 3 5 1 6 4

Sample Output

2 3 5 1 6 4 2 3 5 1 6 4 2 3 5 1 6 4 
 

#include <stdio.h>
#include <stdlib.h>

int main()

 

{

 

int a[2][3], i, j;

 

int *p1=a[0]; //定义一个指向变量的指针变量p1并赋初值

 

int (*p2)[3]=a; //定义一个指向一维数组的指针变量p2并赋初值

 

for(i=0;i<=1;i++)

 

for(j=0;j<=2;j++)

 

scanf("%d", &a[i][j]);

 

for(i=0;i<=1;i++)

 

for(j=0;j<=2;j++)

 

printf("%3d",*(p1+3*i+j)); //利用p1输出每个整数

 

printf("\n");

 

for(i=0;i<=1;i++)

 

for(j=0;j<=2;j++)

 

printf("%3d",*(*p2+3*i+j)); //利用p2输出每个整数

 

printf("\n");

 

for(i=0;i<=1;i++)

 

for(j=0;j<=2;j++)

 

printf("%3d",a[i][j]); //利用数组名a输出每个整数,用指针法,不要用下标法

 

printf("\n");

 

return 0;

 

}

 

Description

设有如下主函数:

int main()

{   int a[2][3];

    __________;  //定义指针变量并赋初值

    __________ ; //输入a[0][0]的值,利用数组名表示a[0][0]    (用下标法)

     __________ ; //输入a[0][1]的值,利用数组名表示a[0][1]    (用指针法)

     __________ ; //输入a[0][2]的值,利用指针变量表示a[0][2]   (用下标法),  此处的指针变量是指向变量的

     __________ ; //输入a[1][0]的值,利用指针变量表示a[1][0]   (用指针法), 此处的指针变量是指向变量的

     __________ ; //输入a[1][1]的值,利用指针变量表示a[1][1]     (用下标法), 此处的指针变量指向一维数组

     __________ ; //输入a[1][2]的值,利用指针变量表示a[1][2]    (用指针法), 此处的指针变量指向一维数组

     __________; //调用sub函数,使每个数据翻番

    for( ___________)     //输出所有数据,要求用最快的方法

                  ____________________;

    return  0;

}

请完善主函数,并写出sub函数的定义。

 

Input

共输入6个整数

Output

输出经过被调函数处理后的数据

Sample Input

1 2 3 4 5 6

Sample Output

2 4 6 8 10 12

 

 

#include <stdio.h>
#include <stdlib.h>

 

void sub(int *p)
{
int i;
for(i=0;i<6;i++)
{
*p=*p*2;
p++;
}
}

 

int main()

 

 

 

{ int a[2][3];

 

 

 

int *p=a[0]; //定义指针变量并赋初值



int i;

 

 

 

scanf("%d",&a[0][0]); //输入a[0][0]的值,利用数组名表示a[0][0] (用下标法)

 

 

 

scanf("%d",&a[0][1]) ; //输入a[0][1]的值,利用数组名表示a[0][1] (用指针法)

 

 

 

scanf("%d",&a[0][2]); //输入a[0][2]的值,利用指针变量表示a[0][2] (用下标法), 此处的指针变量是指向变量的

 

 

 

scanf("%d",&a[1][0]); //输入a[1][0]的值,利用指针变量表示a[1][0] (用指针法), 此处的指针变量是指向变量的

 

 

 

scanf("%d",&a[1][1]); //输入a[1][1]的值,利用指针变量表示a[1][1] (用下标法), 此处的指针变量指向一维数组

 

 

 

scanf("%d",&a[1][2]); //输入a[1][2]的值,利用指针变量表示a[1][2] (用指针法), 此处的指针变量指向一维数组

 

 

 

sub(*a); //调用sub函数,使每个数据翻番

 

 

 

for( i=0;i<6;i++) //输出所有数据,要求用最快的方法

 

 

 

printf("%d ",*(p+i));

 

 

 

return 0;

 

 

 

}

 

Description

主函数代码如下:

int main()  
{
    int i,s[2][3];
    for(i=0;i<=5;i++)
         scanf("%d",*s+i);
    sub(s);
    for(i=0;i<=5;i++)
         printf("%d ",*(*s+i));
    return 0;  
}

其中sub()函数的功能是将数组s中的所有数据都变为2倍,主函数已在后台,请编写sub函数。系统会自动将主函数代码添加到你提交的代码之后。

Input

输入6个整数

Output

输出最终的数据

Sample Input

1 2 3 4 5 6

Sample Output

2 4 6 8 10 12 
 

#include <stdio.h>
#include <stdlib.h>

void sub(int (*p)[3])
{
int i;
int j;
for(i=0;i<6;i++)
{
*(*p+i)=*(*p+i)*2;
}
}

int main()

{

int i,s[2][3];

for(i=0;i<=5;i++)

scanf("%d",*s+i);

sub(s);

for(i=0;i<=5;i++)

printf("%d ",*(*s+i));

return 0;

}

 

 

 

 

 

 

 
posted @ 2019-05-15 16:59  鹿汐  阅读(941)  评论(0编辑  收藏  举报