指针综述
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
Sample Output
#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
Sample Output
#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
Sample Output
#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;
}