📄 练习(五).txt
字号:
(A) *&a[5]
(B) a+2
(C) *(p+5)
(D) *(a+2)
62、若有以下定义,则对a数组元素地址的正确引用是( )
int a[5],*p=a;
(A) p+5
(B) *a+1
(C) &a+1
(D) &a[0]
63、若有定义:int a[2][3]; 则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素值的正确引用为( )
(A) *(*(a+i)+j)
(B) (a+i)[j]
(C) *(a+i+j)
(D) *(a+i)+j
64、若有定义:int a[2][3]; 则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的正确引用为( )
(A) *(a[i]+j)
(B) (a+i)
(C) *(a+j)
(D) a[i]+j
65、若有以下定义和语句,则对a数组元素地址的正确引用为( )
int a[2][3],(*p)[3];
p=a;
(A) *(p+2)
(B) p[2]
(C) p[1]+1
(D) (p+1)+2
66、若有以下定义和语句,则对a数组元素的正确引用为( )
int a[2][3],(*p)[3];
p=a;
(A) (p+1)[0]
(B) *(*(p+2)+1)
(C) *(p[1]+1)
(D) p[1]+2
67、若有定义:int a[5]; 则a数组中首元素的地址可以表示为( )
(A) &a
(B) a+1
(C) &a[1]
68、若有定义:int (*p)[4]; 则标识符p( )
(A) 是一个指向整型变量的指针
(B) 是一个指针数组名
(C) 是一个指针,它指向一个含有四个整型元素的一维数组
(D) 定义不合法
69、若有以下定义和赋值语句,则对s数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的合法引用为( )
int s[2][3]={0},(*p)[3];
p=s;
(A) *(*(p+i)+j)
(B) *(p[i]+j)
(C) (p+i)+j
(D) (*(p+i))[j]
70、若有以下定义和赋值语句,则对b数组的第i行第j列(假设i,j已正确说明并赋值)元素的非法引用为( )
int b[2][3]={0},(*p)[3];
p=b;
(A) *(*(p+i)+j)
(B) *(p[i]+j)
(C) *(p+i)+j
(D) (*(p+i))[j]
71、以下与int *q[5]; 等价的定义语句是( )
(A) int q[5];
(B) int *q;
(C) int *(q[5]);
(D) int (*q)[5];
72、设有以下程序段:
char str[4][10]={"first","secone","third","fourh"},*strp[4];
int n;
for(n=0;n<4;n++) strp[n]=str[n];
若k为int型变量且0 ≤ k < 4,则对字符串的不正确引用是( )
(A) strp
(B) str[k]
(C) strp[k]
(D) *strp
73、若有以下定义,则*(p+5)表示( )
int a[10],*p=a;
(A) 元素a[5]的地址
(B) 元素a[5]的值
(C) 元素a[6]的地址
(D) 元素a[6]的值
74、若有定义:int *p[4]; 则标识符p( )
(A) 是一个指向整型变量的指针
(B) 是一个指针数组名
(C) 是一个指针,它指向一个含有四个元素的一维数组
(D) 说明不合法
75、以下正确的说明语句是( )
(A) int *b[]={1,3,5,7,9}
(B) int a[5],*num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};
(C) int a[]={1,3,5,7,9}; int *num[5]={a[0],a[1],a[2],a[3],a[4]};
(D) int a[3][4],(*num)[4]; num[1]=&a[1][3];
76、若有以下定义,且 0 ≤ i < 4,则不正确的赋值语句是( )
int b[4][6],*p,*q[4];
(A) q[i]=b[i];
(B) p=b;
(C) p=b[i];
(D) q[i]=&b[0][0];
77、以下正确的定义语句和赋值语句是( )
(A) int b[3][5],(*p)[3],(*q)[5]; p=b;q=b;
(B) float b[3][5],*p[3]; p[0]=b[0]; p[2]=*b+4;
(C) double b[3][5],s[5][3],*q; q=b; s=q;
(D) int b[10],*q; char *s; q=b; s=b;
78、若有以下定义,则p+5表示( )
int a[10],*p=a;
(A) 元素a[5]的地址
(B) 元素a[5]的值
(C) 元素a[6]的地址
(D) 元素a[6]的值
79、若有以下定义,且 0 ≤ i < 6,则正确的赋值语句是( )
int s[4][6],t[6][4],(*p)[6];
(A) p=t;
(B) p=s;
(C) p=s[i];
(D) p=t[i];
80、若要对a进行一一运算,则a应具有下面说明( )
(A) int p[3];
int *a=p;
(B) int k;
int *a=&k
(C) char *a[3];
(D) int b[10];
int *a=b+1;
81、若有定义:int a[4][6]; 则能正确表示a数组中任一元素a[i][j](此处 0 ≤ i < 4 , 0 ≤ j < 6)地址的表达式是( )
(A) &a[0][0]+6*i+j
(B) &a[0][0]+4*j+i
(C) &a[0][0]+4*i+j
(D) &a[0][0]+6*j+i
82、以下选项中,对指针变量p的不正确操作是( )
(A) int a[5],*p;
p=&a;
(B) int a[5],*p;
p=a;
(C) int a[5];
int *p=a=1000;
(D) int a[5];
int *p1,*p2=a;
*p1=*p2;
83、若有以下定义和语句,则能正确表示a数组元素地址的表达式是( )
double a[5],*p1;
p1=a;
(A) a
(B) p1+5
(C) *p1
(D) &a[5]
84、若有以下定义,且 0 ≤ i < 5,则对a数组元素的非法引用是( )
int a[5],*p=a;
(A) a[i]
(B) *(a+i)
(C) *(p+i)
(D) *(&a+i)
85、若有以下定义,则数值不为3的表达式是( )
int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;
(A) x[3]
(B) p1=x+3,*p1++
(C) p1=x+2,*(p1++)
(D) p1=x+2,*++p1
86、若有定义:int a[]={2,4,6,8,10,12,14,16,18,20,22,24},*q[4],k; 则下面程序段的输出是( )
for(k=0;k<4;k++) q[k]=&a[k*3];
printf("%d\n",q[3][0]);
(A) 8
(B) 16
(C) 20
(D) 输出项不合法,结果不确定
87、若有以下定义,则正确的程序段是( )
int *p,*s,i,j;
char *q,ch;
(A) main()
{
*p=100;
.
.
.
}
(B) main()
{
p=&ch;
s=p;
.
.
.
}
(C) main()
{
p=&i;
q=&ch;
p=q;
.
.
.
}
(D) main()
{
p=&i;
q=&ch;
*p=40; *q=*p;
.
.
.
}
88、若以下main函数经过编译,连接后得到的可执行文件名为echo.exe,若希望在系统的命令状态下输入某一命令行后得到的输出是china tianjin, 则明明行的内容应是( )
void main(int argc,char *argv[])
{
int i;
for(i=1;i<argc;i++)
printf("%s%c",argv[i],(i<argc-1)?' ':'\n');
}
(A) china tianjin
(B) echo china tianjin
(C) echo
china tianjin
(D) echo
china
tianjin
89、设有一个名为file1的C源程序,且已知命令行为:FILE1 CHINA BEIJING SHANGHAI,则可得到以下运行结果的C源程序为( )
CHINA
BEIJING
SHANGHAI
(A) void main(int argc,char *argv[])
{
while(--argc>1)
printf("%s%c",*argv,(argc>1)?'\n':' ');
}
(B) void main(int argc,char *argv[])
{
while(argc-->1)
printf("%s\n",*++argv);
}
(C) void main(int argc,char *argv[])
{
while(++argc>0)
printf("%s%c",*++argv,(argc>1)?' ':'\n');
}
(D) void main(int argc,char *argv[])
{
while(argc>1)
printf("%s",*++argv);
}
90、阅读以下程序:
void main()
{
int a[10]={2,4,6,8,10,12,14,16,18,20},*p;
p=a;
printf("%x\n",p);
printf("%x\n",p+9);
}
若第一个printf语句输出的是ffca,则第二个printf语句的输出是( )
(A) ffdd
(B) ffdc
(C) ffde
(D) ffcd
91、设有以下定义:
char *cc[2]={"1234","5678"};
则正确的叙述是( )
(A) cc数组的两个元素中各自存放了字符串"1234"和"5678"的首地址
(B) cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
(C) cc是指针变量,它指向含有两个数组元素的字符型一维数组
(D) cc数组元素的值分别是"1234"和"5678"
92、若有以下定义
int x[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*p)[3]=x;
则能够正确表示数组元素x[1][2]的表达式是( )
(A) *((*p+1)[2])
(B) (*p+1)+2
(C) *(*(p+5))
(D) *(*(p+1)+2)
93、下面程序的运行结果是( )
void main()
{
int x[5]={2,4,6,8,10},*p,**pp;
p=x;
pp=&p;
printf("%d",*(p++));
printf("%3d\n",**pp);
}
(A) 4 4
(B) 2 4
(C) 2 2
(D) 4 6
94、下面程序的运行结果是( )
#include<stdio.h>
fun(int **a,int p[2][3])
{
**a=p[1][1];
}
void main()
{
int x[2][3]={2,4,6,8,10,12},*p;
p=(int *)malloc(sizeof(int));
fun(&p,x);
printf("%d\n",*p);
}
(A) 10
(B) 12
(C) 6
(D) 8
95、设有一个名为file1的C源程序,且已知命令行为:FILE1 CHINA BEIJING SHANGHAI,则可得到以下运行结果的C源程序为( )
CHINA BEIJING SHANGHAI
(A) void main(int argc,char *argv[])
{
while(--argc>0)
printf("%s%c",*++argv,(argc>1)?' ":'\n');
}
(B) void main(int argc,char *argv[])
{
while(argc-->1)
printf("%s\n",*argv);
}
(C) void main(int argc,char *argv[])
{
while(argc>0)
printf("%s%c\n",*++argv,(argc>1)?' ':'\n');
}
(D) void main(int argc,char *argv[])
{
while(argc>1)
{
++argv;
printf("%s\n",*argv);
--argc;
}
}
96、以下正确的叙述是( )
(A) C语言允许main函数带形参,且形参个数和形参名均可由用户指定
(B) C语言允许main函数带形参,形参名只能是argc和argv
(C) 当main函数带有形参时,传给形参的值只能从命令行中得到
(D) 若有说明:main(int argc,char *argv),则形参argc的值必须大于1
97、main函数的正确说明形式是( )
(A) main(int argc,char *argv)
(B) main(int abc,char **abv)
(C) main(int argc,char argv)
(D) main(int c,char v[])
98、以下程序能找出数组x中的最大值和该值所在的元素下标,数组元素值从键盘输入。请填空。
void main()
{
int x[10],*p1,*p2,k;
for(k=0;k<10;k++) scanf("%d",x+k);
for(p1=x,p2=x;p1-x<10;p1++)
if(*p1>*p2) p2= ① ;
printf("MAX=%d,INDEX=%d\n",*p2, ② );
}
① (A) p1
(B) p2[p1]
(C) x[p2]
(D) x-p1
② (A) p1-x
(B) p1
(C) p2-x
(D) x-p2
99、若有说明:char *language[]={"FORTRAN","BASIC","PASCAL","JAVA","C"}; 则表达式*language[1]>*language[3]比较的是( )
(A) 字符F和字符P
(B) 字符串BASIC和字符串JAVA
(C) 字符B和字符J
(D) 字符串FORTRAN和字符串PASCAL
100、若有说明:char *language[]={"FORTRAN","BASIC","PASCAL","JAVA","C"}; 则language[2]的值是( )
(A) 一个字符
(B) 一个地址
(C) 一个字符串
(D) 一个不定值
101、若有说明:char *language[]={"FORTRAN","BASIC","PASCAL","JAVA","C"}; 则以下不正确的叙述是( )
(A) language+2表示字符串"PASCAL"的首地址
(B) *language[2]的值是字母P
(C) language是一个字符型指针数组,它包含5个元素,每个元素都是一个指向字符串变量的指针
(D) language是一个字符型指针数组,它包含5个元素,其初值分别是:"FORTRAN","BASIC","PASCAL","JAVA","C"
102、语句int(*ptr)(); 的含义是( )
(A) ptr是指向一维数组的指针变量
(B) ptr是指向int型数据的指针变量
(C) ptr是指向函数的指针,该函数返回一个int型数据
(D) ptr是一个函数名,该函数的返回值是指向int型数据的指针
103、若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是( )
(A) (*p)max(a,b);
(B) *pmax(a,b);
(C) (*p)(a,b);
(D) *p(a,b);
104、已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是( )
(A) p=max;
(B) *p=max;
(C) p=max(a,b);
(D) *p=max(a,b);
105、已有定义int(*p)(); 指针p可以( )
(A) 代表函数的返回值
(B) 指向函数的入口地址
(C) 表示函数的类型
(D) 表示函数返回值的类型
106、若有以下说明和语句:
char *language[]=""FORTRAN","BASIC","PASCAL","JAVA","C"};
char **q; q=language+2;
则语句printf("%o\n",*q); ( )
(A) 输出的是language[2]元素的地址
(B) 输出的是字符串PASCAL
(C) 输出的是language[2]元素的值,它是字符串PASCAL的首地址
(D) 格式说明不正确,无法得到确定的输出
107、若要对a进行++运算,则a应具有下面说明( )
(A) int a[3][2];
(B) char *a[]={"12","ab"};
(C) char (*a)[3];
(D) int b[10],*a=b;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -