第九章 指针
一、 选择题
1、 指针是一种____
A、 标识符
B、 变量
C、 内存地址
D、 运算符
2、 显示指针变量P中的值,可以使用命令_____
A、 Printf(“%d”,p);
B、 Printf(“%d”,*p);
C、 Printf(“%d”,*p);
D、 Printf(“%d”,p);
3、 为指针变量P输入整型变量i的地址,可以使用命令____
A、 Scanf(“%p”,&p);
B、 *p=i;
C、 P=&I;
D、 *p=&I;
4、 若有定义void *p;int *q;float *r,下面操作不对的是____
A、 p=q;
B、 q=r;
C、 p=r;
D、 r=p;
5、 若有说明#define m 20 int n=10;下面定义不正确的是______
A、 Float s[m];
B、 Float s[m*10];
C、 Float s[m+n];
D、 Float s[m+10];
6、 若有定义int a[]={1,2,0};请问a[a[a[0]]]=______
A、 0 B、1 C、2 D、3
7、 若有char s[10],*p=s;则下面表达式正确的是_____
A、 s=p+s;
B、 p=s+10;
C、 s[2]=p[4];
D、 p=s[0];
8、 定义整型指针变量p和q,下面操作不正确的是_______
A、 Int *p,q=null;
B、 Int *p,q=null,null;
C、 Int *p,*q=null,null;
D、 Int *p,*q=null;
9、 若有定义int a[]={1,2,3},b[3]={1,2,3};,请问a==b_______
A、 不能比较
B、 结果为真
C、 结果为假
D、 结果不确定
二 、填空题
1、 二级指针是存放一级指针的__________
2、 指针变量虽然都是存放指针,但____不同
3、 空指针名称是_______,表示没有指针的一种状态
4、 函数名和_______名可以作为指针常量
5、 不同类型的指针变量的赋值必须________
一、 编程
1、 输入3个整数,按由小到大的顺序输出。
2、 写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。
3、 写一个函数,将一个3*3的矩阵转置。
4、 将n个数按输入顺序的逆序排列,用函数实现。
参考答案
一、 选择题
1、C 2、D 3、C 4、B 5、C 6、A 7、C 8、D 9、D
二、填空题
1、 单元地址
2、 基类型
3、 Null
4、 数组
5、 显式类型变换
二、 编程题
1、 Main()
{int n1,n2,n3;
Int *p1,*p2,*p3;
Printf(“input three integers n1,n2,n3:”);
Scanf(“%d,%d,%d”,&n1,&n2,&n3);
p1=&n1;
p2=&n2;
p3=&n3;
if(n1>n2) swap(p1,p2);
if(n1>n3) swap(p1,p3);
if(n1>n3) swap(p2,p3);
printf(“now,the order is:%d,%d,%d\n”,n1,n2,n3);
}
Swap(int *p1,int *p2)
{int p;
p=*p1;*p1=*p2;*p2=p;
}
1、 main()
{int len;
Char *str[20];
Printf(“input string:”);
Scanf(“%s”,str);
Len=length(str);
Printf(“The length of string is %d.”,len);
}
Length(char *p)
{int n;
N=0;
While(*p!=’\0’)
{n++;
P++;
}
Return(n);
}
2、 main()
{int a[3][3],*p,i;
Printf(“input matrix:\n”);
For(i=0;i<3;i++)
Scanf(“%d %d %d”,&a[i][0],&a[i][1],&a[i][2]);
p=&a[0][0];
move(p);
printf(“now,matrix:\n”);
for(i=0;i<3;i++)
printf(“%d %d %d\n”,a[i][0],a[i][1],a[i][2]);
}
Move(int *pointer)
{int i,j;
For(i=0;i<3;i++)
For(j=i;j<3;j++)
{t=*(pointer+3*i+j);
*(pointer+3*i+j)=*(pointer+3*j+i);
*(pointer+3*j+i)=t;
}
}
3、 main()
{int i,n;
Char *p,num[20];
Printf(“input n:”);
Scanf(“%d”,&n);
Printf(“please input these numbers:\n”);
For(i=0;i
Scanf(“%d”,&num[i]);
P=&num[0];
Sort(p,n);
Printf(“now,the sequence is:\n”);
For(i=0;i
Printf(“%d”,num[i]);
}
Sort(char p,int m)
{int i;
Char temp,*p1,*p2;
For(i=0;i
{p1=p+i;
p2=p+(m-1-i);
temp=*p1;
*p1=*p2;
*p2=temp;
}
}