现有如下定义语句 int*p,s[20],i;   p=s; 表示数组元素s[i]的表达式不正确的是()A.*(s+i)B.*(p+i)C.*(s=s+i)D.*(p=p+i)

现有如下定义语句 int*p,s[20],i;   p=s; 表示数组元素s[i]的表达式不正确的是()

A.*(s+i)

B.*(p+i)

C.*(s=s+i)

D.*(p=p+i)


参考答案和解析
C 解析:当p指向s数组的首地址时,表示数组元素s[i]的表达式应当有:①s[i],②,(s+i),③*(p+i),④p[i]四种形式。选项C)错误的原因是,数组的地址是不可变的,指针的地址是可以变的。

相关考题:

设有如下程序段char s[20]= "Be i jing",*p;p=s;则执行 p=s; 语句后,以下叙述正确的是A) 可以用 *p 表示 s[0]B)s 数组中元素的个数和 p 所指字符串长度相等C)s 和 p 都是指针变量D) 数组 s 中的内容和指针变量 p 中的内容相等

下面程序是指从终端读入的20个字符放入字符数组中,然后利用指针变量输出上述字符串,请填空。#include stdio.hmain (){ int i; char? s[21],*p;for (i=0;i20;i++)s[i]=getchar ();s[i]=【6】;p =【7】while (*p)putchar? (【8】);}

程序中有如下语句for(int i = 0; i5; i++)cout*(p + i)",";能够依次输出 int 型一维数组 DATA 的前 5 个元素。由此可知,变量 p 的定义及初始 化语句是【 7 】 。

有如下程序includevoid main(){char ch[2][5]=={"6937","8254"},*p[2];int i,j,s=0 有如下程序 #include<iostream.h> void main() {char ch[2][5]=={"6937","8254"},*p[2]; int i,j,s=0; for(i=0;i(2;i++)p[i]=ch[i]; for(i=0;i(2;i++) for(j=0;p[i][j]>'\0,j+=2) s=10*s+p[i][j]-'0'; cout<<s;} 该程序的输出结果是( )。A.69825B.63825C.6385D.693825

设有下列程序段: char s[20]="Beijing",*p; p=s; 则执行p=s;语句后,下列叙述正确的是( )。A.可以用*p表示s[0]B.s数组中元素的个数和p所指字符串长度相等C.s和p都是指针变量D.数组s中的内容和指针变量p中的内容相同

( 8 ) 利用表达式 a[i] 可以访问 int 型数组 a 中下标为 i 的元素 。 在执行了语句 int *p=a; 后 , 利用指针 p也可访问该元素,相应的表达式是 【 8 】 。

主程序调用findmax函数求出数组中最大元素在数组中的下标,括号中需填写的内容是 #include<stdio.h> findmax(int*s,int t,int*k) { int p; for(p=0,*k=p;p<t;p++)if(s[p]>s[*k])( );} main() { int a[10],i,k; for(i=0;i<10;i++)scanf("%d",a[i]); findmax(a,10,k); printf("A.k=pB.*k=pC.k=p-sD.*k=p-s

现有如下定义语句int*p,s[20],i;p=s;表示数组元素s[i]的表达式不正确的是A.*(s+i)B.*(p+i)C.*(s=s+i)D.*(p=p+i)

设有如下程序: fun(float*p1,int n,float*p2,int m,float*s) {int i; *s=0.0; for(i=0;i<n;i++)*s+=*p1++; for(i=0;i<m;i++)*s+=*p2++; } main() { float a[]={1.1,2.2},b[]={1.0,2.0,3.0),*s=a; fun(a,2,b,3,s); printf("%f\n",*s); } 上面程序的输出结果是______。A.8.2B.9.3C.3.3D.1.1

程序中有如下语句for(int i=0;i<5;1++)cout<<*(p+i)<<",";能够依次输出int型一维数组DATA的前5个元素。由此可知,变量p的定义及初始化语句是【 】。

请补充main函数,改函数的功能是,把一个二维字符数组每行字符串最大的字符拷贝到字符数组s中。例如,如果str[3]={"efjh","cfimls","owys"},则s;"hsy"。注意:部分源程序给出如下.请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。试题程序:inc lude<stdio, h>main(){int i=0;char *str [3] ={ "efjh", "efknls","owys" };char **p;char s [8];clrscr 0;【 】;for (i=O; i<3; i++){s [i] =*p [i];while (*p [i] ){if (S [i] <*p [i] )s [i] =*p[i];【 】;}}【 】;printf(" new string \n");puts (s);}

有如下程序段: int a[10],*p[3],**pp,i; for(i=0;i<3:i++) p[i]=a[i*4); pp=p; 则正确表示数组a元素的表达式是 ______。A.ppB.a[10]C.p[3]D.*(*(p+2))

如下程序的输出结果是includemain(){chsr ch[2][5]={"6937","8254"},*p[2];int i,j,s= 如下程序的输出结果是 #include<stdio.h> main() { chsr ch[2][5]={"6937","8254"},*p[2]; int i,j,s=0; for(i=0;i<2;i++) p[i]=ch[i]; for(i=0;i<2;i++) for(j=0;p[i][j]>'\0';j+=2) s=10*s+p[i][j]-'0' printf("%d\n",s);}A.69825B.63825C.6385D.693825

有如下程序:includevoid main( ){char ch[2] [5] ={"6937","8254"},* p[2] ;int i, 有如下程序: #include<iostream.h> void main( ) { char ch[2] [5] ={"6937","8254"},* p[2] ; int i,j,s=0; for(i=0;i<2;i++) p[i] =ch[i] ; for(i=0;i<2;i++) for(j=0;p[i] [j] >'\0';j+=2) s=10 * s+p[i] [j] -'0'; cout < < s;} 该程序的输出结果是A.69825B.63825C.6385D.693825

程序中有如下语句for(int i=0;i<5;i++)cout<<*(p+i<<“,”;能够依次输出int型一维数组a的前5个元素。由此可知,变量P的定义及初始化语句是( )。A.int*p=a;B.int p=a;C.*p=a;D.p=a;

若有以下定义和语句: int s[4][5],(*p)[5]; p=s; 则指针对s数组中第三个元素的正确引用形式是( )。A.p[0][3]B.p[1][2]C.p[0][2]D.p[1][3]

有如下程序includevoid main( ){char ch[2][5]={"6937","8254"},*p[2];int i,j,s=0 有如下程序 #include<iostream.h> void main( ) { char ch[2][5]={"6937","8254"},*p[2]; int i,j,s=0; for(i=0;i<2;i++)p[i]=ch[i]; for(i=0;i<2;i++) for(j=0;p[i][j]>'\0';j+=2) s=10*s+p[i][j]-'0';A.69825B.63825C.6385D.693825

若在以下定义和赋值语句,则才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)+jD.(*(p+i))[j]

主程序调用findmax函数求出数组中最大元素在数组中的下标,( )中需填写的内容是。 #include<stdio.h> findmax(int*s,int t,int*k) { int p; for(p=0,*k=p;p<t;p++)if(s[p]>s[*k])( );} main() { int a[10],i,k; for(i=0;i<10;i++)scanf("%d",a[i]); findmax(a,10,k); printf("%d%d\n" ,k,a[k]);}A.k=pB.*k=pC.k=p-sD.*k=p-s

设有如下程序段:则执行P=s;语句后,以下叙述中正确的是( )。A.可以用* P表示s[O]B.S数组中元素的个数和P所指字符串长度相等C.s和P都是指针变量D.数组s中的内容和指针变量P中的内容相等

程序中有语句:for(inti=0;i5;i++)cout*(p+i)",";能够依次输出int型一维数组a的前5个元素。由此可知,变量P的定义及初始化语句是( )。A.int*p=a;B.intp=a;C."p=a;D.p=a;

以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空:includefind 以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空: #include<stdio.h> findmax(int*s,int t,int*k) { int p; for(p=0,*k=p;p<t;p++) if(s[p]>s[*k])________; } main() { int a[10],i,k; for(i=0;i<10;i++)scanf("%d",a[i]); findmax(a,10,k); printf("%d,%d\n",k,a[k]); }A.k=pB.*k=p-sC.k=p-sD.*k=p

若有如下定义和语句: int s[4][5],(*p)[5]; p=S; 则指针对s数组中第三个元素的正确引用形式是( )。A.p[0][3]B.p[1][2]C.p[0][2]D.p[1][3]

有以下程序:struct S{int n;int a[20];};void f(struct S*P){int i,j,t;for(i=0;in-1;i++)fo 有以下程序: struct S{int n;int a[20];}; void f(struct S*P) { int i,j,t; for(i=0;i<P->n-1;i++) for(j=j+1;j<P->n-1;j++) if(p->a[i]>p->a[j]) {t=P->a[i];p->a[i]=P->a[j];p->a[j]=t} } main() {int i;struct S s{10,{2,3,1,6,8,7,5,4,10,9}}; f(&s); for(i=0;i<s.n;i++)printf("%d",s.a[i]);} 程序运行后的输出结果是( )。A.3B.4C.5D.6

有如下程序includevoid main(){charch [2][5]={"6937","8254"},*p[2]; int i,j,s=0 有如下程序 #include<iostream.h> void main() { charch [2][5]={"6937","8254"},*p[2]; int i,j,s=0; for(i=0;i<2;i++)p[i]=ch[i]; for(i=0;<2;i++) for(j=0;p[i][j]>‘\0’;j+=2) s=10*s+p[i][j]-’0’; cout<<s;} 该程序的输出结果是A.69825B.63825C.6385D.693825

主程序调用findmax函数求出数组中最大元素在数组中的下标,括号中需填写的内容是#includestdio.hfindmax(int*s,int t,int *k){ int p;for(p=0, *k=p; pt; p++)if(s[p]s[*k])( ); }main(){ int a[10],i,k;for(i=0; i10;i++)scanf(" %d",a[i]);findmax(a,10,k);printf(" %d%d\n",k,a[k];) }A.k=pB.*k=pC.k=p-sD.*k=p-s

若有以下定义语句: double a[5],*p=a; int i=0; 对a数组元素错误的引用是( )A.a[i]B.a[5]C.p[4]D.p[i]

单选题设有如下程序段:char s[20]= Bejing,*p;p=s:则执行p=s;语句后,以下叙述正确的是(  )。A可以用*p表示s[0]Bs数组中元素的个数和p所指字符串长度相等Cs和p都是指针变量D数组s中的内容和指针变量p中的内容相等