C语言第八章 指针
更新时间:2024-01-30 04:54:01 阅读量: 教育文库 文档下载
- c语言第八章思维导图推荐度:
- 相关推荐
第八章 指针
一、选择题
1.变量的指针,其含义是指该变量的 B 。(0级)
A)值 B)地址 C)名 D)一个标志 2.设有说明 int (﹡ptr)[M];其中ptr是 C 。(0级)
A) M个指向整型变量的指针
B) 指向M个整型变量的函数指针
C) 一个指向具有M 个整型元素的一维数组的指针
D) 具有 M个指针元素的一维指针数组,每个元素都只能指向整型量 3.选择出 i的正确结果 B 。(1级)
int i; char ﹡s=〞a\\045+045\\ˊb〞; for ( i=0;s++;i++); A)5 B)8 C)11 D)12 4.如下程序的执行结果是 C 。(1级) # include
main( ) {int i; char ﹡s=〞a\\\\\\\\\\n 〞; for( i=0; s[i]!=?\\0?;i++) printf(〞%c 〞,﹡(s+i)); }
A)a B)a\\ C)a\\\\ D)a\\\\\\\\ 5.如下程序的执行结果是 B 。(2级) # include
main() { static int a[ ]={1,2,3,4,5,6}; int ﹡p; p=a;
﹡(p+3)+=2; printf(〞%d,%d\\n 〞,﹡p,﹡(p+3)); }
A)1,3 B)1,6 C)3,6 D)1,4 6.如下程序的执行结果是 C 。(2级) # include
main( ) { static int a[ ][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int (﹡p)[4], i=1,j=2; p=a;
printf(〞%d \\n 〞, ﹡(﹡(p+i)+j)); }
A)9 B)11 C)13 D)17
7.若有以下定义,则对a数组元素的正确引用是 D 。(1级) int a[5], ﹡p=a;
A)﹡&a[5] B)a+2 C)﹡(p+5) D)﹡(a+2)
8.若有以下定义,则对a数组元素地址的正确引用是 D 。(1级)
int a[5], ﹡p=a;
A)p+5 B)﹡a+1 C)&a+1 D)&a[0]
9.若有定义: int a[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素值的正确引用为 A 。(1级)
A)﹡(﹡(a +i) +j ) B)(a+i) [j] C)﹡(a+i+j) D)﹡(a +i)+j
10.若有定义: int a[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的正确引用为 D 。(1级)
A)﹡(a [i] +j ) B)(a+i) C)﹡(a+j) D)a[i]+j 11.设有下面的程序段: char s[ ]= 〞china 〞; char ﹡p; p=s;
则下列叙述正确的是 D 。(0级)
A)s和p完全相同 B)数组s中的内容和指针变量p中的内容相等 C)s数组长度和p所指向的字符串长度相等 D)﹡p与s[0]相等
12.若有语句:char s1[ ]= 〞string 〞, s2[8],﹡s3,﹡s4= 〞string2 〞;则对库函数strcpy的错误调用是 C 。(1级)
A)strcpy(s1, 〞string2 〞); B)strcpy(s4, 〞string1 〞); C)strcpy(s3, 〞string1 〞); D)strcpy(s1, s2);
13.若有定义:int a[5];则a数组中首元素的地址可以表示为 C 。(1级)
A)&a B)a+1 C)a D)&a[1] 14.以下与int ﹡q[5];等价的定义语句是 C 。(1级)
A)int q[5] B)int ﹡q C)int ﹡(q[5]); D)int (﹡q)[5];
15.若有以下定义,则﹡(p+5)表示 B 。(1级)
A)元素a[5]的地址 B)元素a[5]的值 C)元素a[6]的地址 D)元素a[6]的值
16.若有定义:int ﹡p[4];则标识符p B 。(0级)
A)是一个指向整型变量的指针 B)是一个指针数组名
C)是一个指针,它指向一个含有四个整型元素的一维数组 D)说明不合法
17.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是 D 。(1级)
A)a,point,*&a B) &*a,&a,*point C)*&point,*point,&a D) &a,&*point,point 18.若有说明:int *p,m=5,n;以下正确的程序段是 D 。(1级)
A)p=&n; scanf(“%d”,&p); B) p=&n; scanf(“%d”,*p); C) scanf(“%d”,&n); *p=n; D) p=&n; *p=m; 19.下面程序段的运行结果是 B 。(1级)
char str[ ]=“ABC”,*p=str; printf(“%s\\n”,*(p+1));
A) 66 B) BC C)字符?B?的地址 D)字符?B?20.已有定义int k=2,
*ptr1,*ptr2;且ptr1和ptr2均已指向同一个变量k,下面不正确执行的赋值语句是: B 。(1级)
A) k=*ptr1+*ptr2 ; B) ptr2=k; C) ptr1=ptr2; D)k=*ptr1*(*ptr2); 21.有以下程序 main()
{ char a,b,c,*d; a='\\'; b='\\xbc';
c='\\0xab'; d=\
printf(\}
编译时出现错误,以下叙述中正确的是 D 。(1级) A)程序中只有a='\\';语句不正确。 B)b='\\xbc';语句不正确。
C)d=\语句不正确。
D)a='\\';和 c='\\0xab';语句都不正确。 22.若有一些定义和语句 #include
p=&a; q=&b; w=q; q=NULL;
则以下选项中错误的语句是 C 。(1级) A) *q=0; B) w=p; C) *p=&a; D) *p=*w; 23.有以下程序
int *f(int *x,int *y) { if(*x<*y) return x; else return y; }
main()
{ int a=7,b=8,*p,*q,*r; p=&a; q=&b; r=f(p,q);
printf(\}
执行后输出结果是 B 。(2级)
A) 7,8,8 B) 7,8,7 C) 8,7,7 D) 8,7,8 24.有以下程序 main()
{ char *s[]={\p=s[1];
printf(\}
执行后输出结果是 C 。(1级)
A) n,two B) t,one C) w,one D) o,two 25.有以下程序 main()
{ int x[8]={8,7,6,5,0,0},*s; s=x+3;
printf(\}
执行后输出结果是 B 。(1级)
A) 随机值 B) 0 C) 5 D) 6 26.有以下程序 main()
{ char str[]=\while(*ps) ps++;
for(ps--;ps-str>=0;ps--) puts(ps);}
执行后输出结果是 C 。(1级)
A) yz<回车>xyz B) z<回车>yz
C) z<回车>yz<回车>xyz D) x<回车>xy<回车>xyz 27.有以下程序 main()
{int a[][3]={{1,2,3},{4,5,0}},(*pa)[3],i; pa=a;
for(i=0;i<3;i++)
if(i<2) pa[1][i]=pa[1][i]-1; else pa[1][i]=1;
printf(\}
执行后输出结果是 A 。(2级)
A) 7 B) 6 C) 8 D) 无确定值 28.有以下程序
void fun(int *a,int i,int j) { int t; if (i
{ t=a[i];a[i]=a[j];a[j]=t; fun(a,++i,--j); } }
main()
{ int a[]={1,2,3,4,5,6},i; fun(a,0,5);
for(i=0;i<6;i++) printf(\}
执行后输出结果是 A 。(2级)
A) 6 5 4 3 2 1 B) 4 3 2 1 5 6 C) 4 5 6 1 2 3 D) 1 2 3 4 5 6 29.有以下程序
main(int argc,char *argv[]) { int n,i=0;
while(argv[1][i]!='\\0') { n=fun(); i++;}
printf(\}
int fun()
{ static int s=0; s+=1; return s; }
假设程序编译、连接后生成可执行文件exam.exe,若键入以下命令
exam 123〈回车〉
则运行结果为 A 。(2级)
A) 6 B) 8 C) 3 D) 4 30.有如下程序段 int *p,a=10,b=1 p=&a; a=*p+b;
执行该程序段后,a的值为 B 。(1级)
A) 12 B) 11 C) 10 D) 编译出错
31.对于基类型相同的两个指针变量之间,不能进行的运算是 C 。(0级)
A)< B) = C) + D) –
32.以下函数返回a所指数组中最小的值所在的下标值。
fun(int *a, int n) { int i,j=0,p; p=j;
for(i=j;i
A) i=p B) a[p]=a[i] C) p=j 33.有如下说明
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式是 B 。(1级)
A) *p+9 B) *(p+8) C) *p+=9 34.有如下程序 main()
{ char s[]=”ABCD”, *P;
for(p=s+l;p;p++) printf(“%s\\n”,*p); } 该程序的输出结果是 D 。(2级)
A) ABCD B) A C) B D) BCD BCD B C CD CD C D D D D 35.有如下程序 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?; printf(“%d\\n”,s); }
该程序的输出结果是 C 。(2级)
A) 69825 B) 63825 C) 6385 36.执行以下程序后,a的值为 C 。(1级)
D) p=i
D) p+8 D) 693825
int *p, a = 10, b=1; p = &a; a = *p*b;
A) 12 B) 编译出错 C) 10 D) 1
37.以下各语句或语句组中,正确的操作是 C 。(1级)
A) char s[5]=\B) char *s; gets(s);
C) char *s; s=\ D) char s[5]; scanf(\
38.若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,则不能表示a[1]地址的表达式是 C 。(1级)
A) p+1 B) a+1 C) a++ D) ++p
39.下列语句行中,哪些语句能正确进行字符串赋值操作 B 。(1级)
A) char st[4][5]
B) char s[5]={?A?, ?B?, ?C?, ?D?, ?E?} C) char *s; s = “ABCDE”; D) char *s; scanf(“%s”,s);
40.以下程序的输出结果是 D 。(1级) #include
{ char a[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, *p = a+5;
printf(“%d”, *--p);
}
A) 非法 B) a[4]的地址 C) 3 D) 5
41.以下程序的运行结果是 C 。(2级)
#include
{int a[4][3]={ 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12}; int *p[4], j;
for (j=0; j<4; j++) p[j]=a[j];
printf(\
}
A) 4, 4, 9, 8 B) 程序出错 C) 4, 2,12,11 D) 1, 1, 7, 5
42.若有下列说明和语句:int a[4][5], (*p)[5]; p = a; 则对a数组元素的正确引用是 B 。(1级)
A) p+1 B) *(p+3) C) *(p+1)+3 D) *(*p+2)
43.若有以下定义和语句,则输出结果是 D 。(2级)
int **pp,*p,a=10,b=20;
pp=&p;p=&a;p=&b;printf(\
A)10,20 B)10,10 C)20,10 D)20,20 44.若有以下定义和语句,则输出结果为 A 。(1级)
char *sp=”\\t\\b\\\\\\0English\\n”; printf(“%d”,strlen(sp));
A)12 B)3 C)17 D)13
45.以下程序输出的结果是 C 。(2级)
void main()
{ int a=5,*p1,**p2; p1=&a,p2=&p1; (*p1)++;
printf(“%d\\n”,**p2); }
A) 5 B) 4 C) 6 D) 不确定
46.设void f1(int * m,long n);int a;long b;则以下调用合法的是 B 。(2级) A)f1(a,b); B)f1(&a,b); C)f1(a,&b); D)f1(&a,&b);
47.设int x;,则经过 B 后,语句*px=0;可将x值置为0。(1级) A) int * px; B)int * px=&x; C) float * px; D)float * px=&x;
48.若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是 B 。
(1级)
A) i=*p; B) *p=*&j; C) i=&j; D) i=**p;
49.以下定义语句中,错误的是 D 。(1级)
A) int a[]={1,2}; B) char *a[3]; C) char s[10]=\ D) int n=5,a[n]; 50.阅读以下函数 fun(char *sl,char *s2) { int i=0;
while(sl[i]==s2[i]&&s2[i]!='\\0') i++; return(sl[i]=='\\0'&&s2[i]=='\\0'); }
此函数的功能是 C 。(2级) A) 将s2所指字符串赋给s1
B) 比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0
C) 比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0 D) 比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0
51. 若有以下定义:
int a[10],*p=a; 则*(p+3)表示的是 B 。(01~02第二学期试题)
A)元素a[3]的地址 B)元素a[3]的值 C)元素a[4]的地址 D)元素a[4]的值 52. 若有如下语句: int *p1,*p2;则其中int所指的是 D 。(01~02第二学期试题)
A)p1的类型 B)*p1和*p2的类型
C)p2的类型 D)p1和p2所能指向变量的类型 53. 有如下语句:
int a=5,b=8,*p1,*p2; p1=&a; p2=&b;
若有如下表达式: p1=p2; 则能正确表示该语句执行后变量在内存中的存储结构的图示为 D 。(01~02第二学期试题)
A) B) p1 5 a p1 5 a p2 8 b p2 8 b
C) D) p1 5 a p1 5 a
p2 8 b p2 8 b
54. 有如下语句 int a=10,b=20,*p1,*p2; p1=&a; p2=&b; 如图1所示;若实现如图2所示的存储结构,可选用的赋值语句是: B 。(往届试题)
p1 p2 p1 p2
a b a b 10 20 10 20 图1 图2
A)*p1=*p2 B)p1=p2 C)p1=*p2 D)*p1=p2
55. 若有说明:int i, j , *p=&i ;则下面语句中与i =j;等价的语句是: A 。(往届试题)
A)*p=*&j ; B)i = *p C)i=&j ; D)i=**p 56. 以下程序的输出结果是 。(2级) main()
{char *s=\int k=0,a=0,b=0; do {k++;
if (k%2==0) {a=a+s[k]-'0';continue;} b=b+s[k]-'0; a=a+s[k]-'0'; }while(s[k+1]);
printf(\}
A)k=3 a=2 b=3 B)k=3 a=3 b=2 C)k=2 a=3 b=2 D)k=2 a=2 b=3 57. 设有以下定义:
int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int(*ptr)[3]=a,*p=a[0];
则下列能正确表示数组元素a[1][2]的表达式是 。(1级) A)*((*ptr+1)[2]) B)*(*(p+5))
C)(*ptr+1)+2 D)*(*(a+1)+2) 58. 执行以下程序后,y的值是 。(1级) main()
{ int a[]={2,4,6,8,10}; int y=1,x,*p; p=&a[1];
for(x=0;x<3;x++)
y+=*(p+x); printf(\ }
A) 17 B) 18 C) 19 D) 20
59. 阅读程序
#include
{ int a[10]={1,2,3,4,5,6,7,8,9,0},*p; p=a;
printf(\ printf(\ }
该程序有两个printf语句,假设第一个printf语句输出的是194,则第二个printf语句输出结果是 。(1级)
A)203 B) 204 C) 1a4 D) 1a6 60.下列程序的输出结果是 。(2级) main()
{static int num[5]={2,4,6,8,10};
int *n,**m; n=num; m=&n;
printf(\ printf(\ }
A) 4 4 B) 2 2 C) 2 4 D) 4 6 61.以下程序的输出结果是 。(2级) #include
{int a[2][3]={1,3,5,7,9,11},*p; p=(int *)malloc(sizeof(int)); fut(&p,a);
printf(\ }
A) 1 B) 7 C) 9 D) 11
62. int a[10],*p;下列表达式正确的是 。(1级)
A) p=a; B) p=a[0]; C) *p=&a[0]; D) p=&a;
63. 执行以下程序段后y的值为 。(1级) static int a[]={1,3,5,7,9}; int y,x,*ptr; y=1;
ptr=&a[1];
for(x=0;x<3;x++) y*=*(ptr+x);
A) 105 B) 15 C) 945 D) 无确定值 64.执行以下程序段后,m的值是 。(1级) static int a[]={7,4,6,3,10};
int m,k,*ptr; m=10; ptr=&a[0];
for(k=0;k<5;k++)
m=(*(ptr+k)
A) 10 B) 7 C) 4 D)3 65.执行以下程序段后,m的值为 。(1级) static int a[2][3]={1,2,3,4,5,6}; int m,*ptr; ptr=&a[0][0];
m=(*ptr)*(*(ptr+2))*(*(ptr+4));
A) 15 B)48 C) 24 D) 无定值
66.若有以下定义和语句 int w[2][3],(*pw)[3];pw=w; 则对w数组元素的非法引用是 。(1级)
A) *(w[0]+2) B) *(pw+1)[2] C) pw[0][0] D) *(pw[1]+2)
67.以下程序的输出结果是 。(1级) Static int a[2][3]={1,2,3,4,5,6},(*p)[2],I; p=a;
for (I=0;I<3;I++)
printf(\
A) 输出不确定 B) 3 4 5 C) 2 3 4 D) 4 5 6
68.若有以下定义
int a[]={1,2,3,4,5,6,7,8,9,10},*p=a; 则值为3的表达式是 。(1级)
A) p+=2,*(p++) B) p+=2,*++p C) p+=3,*p++ D)p+=2,++*p
69.若有以下定义和语句
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则不能表示a数组元素的表达式是 。(1级)
A) *p B) a[10] C) *a D) a[p-a] 70.设char ﹡﹡s;以下正确的表达式是 。(2级)
A)s=〞computer 〞; B)﹡s=〞computer 〞; C)﹡﹡s=〞computer 〞; D)﹡s=?c?;
二、填空题
1.若有定义:int a[2][3]={2,4,6,8,10,12};则﹡(&a[0][0]+2﹡2+1)的值是 ,﹡(a[1] +2)的值是 。(1级) 2.完成以下有关数组描述的填空。(0级)
(1) C语言中,数组名是一个不可改变的 ,不能对它进行赋值运算。 (2) 数组在内存中占用一段连续的存储空间,它的首地址由 表示。 3.定义语句int ﹡f ( );和int (﹡f) ( );的含义分别为 和 。 4.在C程序中,指针变量能够赋 值或 值。(0级)
5.若定义char *p=“abcd”;则 printf(“%d”,*(p+4));的结果为 。(1级)6.以下函
数用来求出两整数之和,并通过形参将结果传回,请填空。 (1级) void func(int x,int y, ) { *z=x+y; }
7.若有以下定义,则通过指针p引用值为98的数组元素的表达式是 。(1级) int w[10]={23,54,10,33,47,98,72,80,61}, *p=w;
8.int a[10];则a[i]的地址可表示为 或 ,a[i]可表示为 。(0级) 9.在C语言中,对于二维数组a[i][j]的地址可表示为 或 。其中,对于a[i]来说,它代表 ,它是一个 。(0级) 10.一个指针变量P和数组变量a的说明如下: int a[10],*p;
则p=&a[1]+2的涵义是指针p指向数组a的第 个元素。(0级) 11.一个数组,其元素均为指针类型数据,这样得数组叫 。(0级) 12. 16.int *p[4]表示一个 ,int(*p)[4]表示 。(0级) 13.若有以下定义和语句
int w[10]={23,54,10,33,47,98,72,80,61},*p; p=w;
则通过指针p引用值为98的数组元素的表达式是 。(1级) 三、程序填空题
1.以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。请填空。 (1级)
# include
{ int ﹡a, ﹡b, ﹡c, mun, x, y, z;
a=&x; b=&y; c=&z;
printf (〞输入3个整数: 〞); scanf (〞%d%d%d 〞, a, b, c);
printf (〞%d, %d, %d\\n 〞, ﹡a, ﹡b, ﹡c); num=﹡a;
if(﹡a>﹡b) (1) ; if(num>﹡c) (2) ;
printf (〞输出最小整数:%d\\n 〞, num); }
2.下面程序是把从终端读入的一行字符作为字符串放在字符数组中,然后输出。请填空。
(1级)
int i; char s[80], ﹡p;
for ( i=0; i<79; i++ ) { s[i]=getchar( ); if ( s[i]= =ˊ\\nˊ) break; } s[i]= (1) ; p= (2) ; while ( ﹡p ) putchar ( ﹡p++); 3.下面程序是判断输入的字符串是否是“回文”,(顺读和倒读都一样的字符串称“回文”,如level)。请填空。(2级) # include
{ char s[81], ﹡p1, ﹡p2; int n;
gets ( s ); n=strlen ( s ); p1=s; p2= (1) ;
while ( (2) ) { if ( ﹡p1!= ﹡p2 ) break;
else { p1++; (3) ; } }
if (p1
4.以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。(2级)
Strcen(char a[], char b[]) { int num=0,n=0;
while(*(a+num)!= (1) ) num++;
while(b[n]){*(a+num)=b[n]; num++; (2) } ;} return(num); }
5.设函数findbig已定义为求3个数中的最大值。以下程序将利用函数指针调用findbig
函数。请填空。(1级) main()
{ int findbig(int,int,int); int (*f)(),x,y,z,big;
f= (1) ;
scanf(\big=(*f)(x,y,z);
printf(\}
6.以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。(1级)
void exchange(int *x, int *y) { int t; t=*y;
*y = (1) ; *x = (2) ; }
7.定义compare(char *s1, char *s2)函数,以实现比较两个字符串大小的功能。 (2级)
#include
void compare(char *s1, char *s2)
{ while(*s1&&*s2&& (1) ) { s1++;
(2) ; }
return (3) ;
}
void main(void)
{printf(\}
8.以下程序求a数组中的所有素数的和,函数isprime用来判断自变量是否为素数。素数是只能被1和本身整除且大于1的自然数。(2级) #include
{int i,a[10],*p=a,sum=0; printf(\
for (i=0;i<10;i + + ) scanf(\for (i=0;i<10;i + + )
if (isprime(*(p+ (1) )) == 1) { printf(\ sum += *(a+i); }
printf(\ }
int isprime(int x) { int i;
for (i=2;i<=x/2;i + + ) if (x%i = = 0) return (0); (2) ; }
9.以下函数的功能是删除字符串s中的所有数字字符。请填空。(2级)
viod dele(char *s) { int n=0,i;
for(i=0;s[i];i++) if( (1) ) s[n++]=s[i];
s[n]= (2) ; }
10. 下面函数的功能是求出形式参数array所指的数组中的最大值和最小值,并把最
大值和最小值分别存入max和min所对应的实参中,请把下面的程序填写完整。(1级)
void find (array,n,max.min) int *array,n,*max.*min { int *p,*data_end; data_end=array+n; *max=*min=*array;
for(p=array+1;p
{if( (1) ) *max= (2) else if ( (3) ) *min= (4) } return;
} 四、读程序写结果题
1.以下程序的执行结果是 。(1级) # include
{ int i, j; int ﹡p,﹡q; i=2; j=10; p=&i; q=&j; ﹡p=10; ﹡q=2; printf(〞i=%d, j=%d\\n 〞, i, j); } 2.以下程序的执行结果是 。(2级) # include
{ int ﹡﹡p,﹡q; i=10; q=&i; p=&q; printf(〞%d\\n 〞, ﹡﹡p); } 3.以下程序的执行结果是 。(1级) # include
{ int ﹡p; p=&i; ﹡p=2; p++; ﹡p=5; printf(〞%d,〞, ﹡p); p﹣﹣; printf(〞%d\\n 〞, ﹡p); } }
4.以下程序的执行结果是 。(1级) # include
{ int ﹡p, i; i=5; p=&i; i=﹡p+10; printf(〞i=%d\\n〞, i); } 5.以下程序的执行结果是 。(1级) # include
{ char s[ ]=”abcdefg”; char ﹡p; p=s; printf(〞ch=%c\\n〞,
﹡(p+5)); }
6.以下程序的执行结果是 。(1级) # include
main ( )
{ int a[ ]={2,3,4}; int s, i,﹡p; s=1; p=a;
for (i=0; i<3; i++) s﹡=﹡(p+i); printf(〞s=%d\\n〞, s); } 7.以下程序的执行结果是 。 (1级) # include
main ( )
{ int a[ ]={1,2,3,4,5,6},﹡p; for (p=&a[5];p>=a;p﹣﹣)
printf(〞%d〞, ﹡p); printf(〞\\n〞); } 8.以下程序的执行结果是 。(2级) # include
{ char ch[2][5]={”6934”,”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?&& p[i][j]<=?9?; j+=2)
s=10﹡s+p[i][j]-?0?; printf(〞%d\\n〞, s); }
9.以下程序的执行结果是 。(2级)
# include
main ( )
{ char ﹡p1,﹡p2, str[20]=”xyz”; p1=”abcd”; p2=”ABCD”; strcpy (str+1, strcat (p1+1,p2+1)); printf(〞%s〞, str); }
10.以下程序的执行结果是 。(2级)
#include
void main(void)
{char *s, *s1 = “here is”, *s2 = “key”;
s = s1;
while (*s1!=?\\0?) s1++; while (*s1++=*s2++); s2 = s;
while (*s2!=?\\0?) s2++; printf(“%d\\n”, s2-s);
}
11.以下程序的执行结果是 。(2级)
#include
{static int a[] = {1, 3, 5, 7}; int *p[3] = {a+2, a+1, a}; int **q = p;
printf(“%d\\n”, *(p[0]+1) + **(q+2));
}
12.以下程序的执行结果是 。(2级) #include
fut(int **s, int p[2][3]) { **s=p[1][1]; }
void main(void)
{ int a[2][3] = {1,3,5,7,9,11}, *p; p = (int *) malloc(sizeof(int)); fut(&p,a);
printf(\}
13.以下程序的执行结果是 。(1级)
#include
{ static char a[]=\char *p1,*p2; int k;
p1=a; p2=b;
for(k=0;k<=7;k++)
if (*(p1+k)==*(p2+k)) printf(\ printf(\
}
14.以下程序的执行结果是 。(2级)
#include
int fun(int x,int y,int *cp,int *dp) { *cp=x+y; *dp=x-y; }
void main(void) { int a, b, c, d; a=30; b=50; fun(a,b,&c,&d);
printf(\}
15.下列程序的输出结果 。(1级)
#include
{char b[]=\char *chp=&b[7]; while(--chp>&b[0]) putchar(*chp); putchar('\\n'); }
16. 阅读程序
main()
{char str1[]=\,str2[10]; char *p1=str1,*p2=str2; scanf(\printf(\printf(\}
运行上面的程序,输入字符串PEOPLE AND COMPUTER,程序的输出结果是 。(2级)
17. 下列程序的运行结果是 。(2级) main() { int i,*p;
static int a[4]={1,2,3,4}; p=a;
for(i=0;i<3;i++)
printf(\ }
18.以下程序的运行结果是 。(2级) main() { int i,*p;
static int a[4]={1,2,3,4}; p=a;
for(i=0;i<3;i++)
printf(\ }
19. 分析程序
#define FORMAT \ main()
{static int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12} printf(FORMAT,a,*a);
printf(FORMAT,a[0],*(a+0); printf(FORMAT,&a[0],&a[0][0]); printf(FORMAT,a[1],a+1);
printf(FORMAT,&a[1][0],*(a+1)+0); printf(FORMAT,a[2],*(a+2)); printf(FORMAT,&a[2],a+2);
printf(FORMAT,a[1][0],*(*(a+1)+0)); }
如果数组a的首地址为404,则程序的运行结果为 。(2级)
五、编程题
1.编写一个程序计算一个字符串的长度。(1级)
2.编写一个程序,用12个月份的英文名称初始化一个字符指针数组,当键盘输入整数为1到12时,显示相应的月份名,键入其它整数时显示错误信息。(1级) 3.编一程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串。请用指针完成。(2级)
4.编一程序,将字符串中的第m个字符开始的全部字符复制成另一个字符串。要求在主函数中输入字符串及m的值并输出复制结果,在被调函数中完成复制。 (2级)
5.设有一数列,包含10个数,已按升序排好。现要求编一程序,它能够把从指定位置开始的n个数按逆序重新排列并输出新的完整数列。进行逆序处理时要求使用指针方法。试编程。(例如:原数列为2,4,6,8,10,12,14,16,18,20,若要求把从第4个数开始的5个数按逆序重新排列,则得到新数列为2,4,6,16,14,12,10,8,18,20。)(2级)
6.通过指针数组p和一维数组a构成一个3×2 的二维数组,并为a数组赋初值2、4、6、8、?。要求先按行的顺序输出此“二维数组”,然后再按列的顺序输出它。试编程。(2级)
7.编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数) (2级)
8.编写一程序,从键盘输入10个数存入数组data[10]中,同时设置一个指针变量 p指向数data,然后通过指针变量p对数组按照从小到大的顺序排序,最后输 出其排序结果。(2级)
9. 编一程序,从一个3行4列的二维数组中找出最大数所在的行和列,并将最大 值及所在行列值打印出来。要求将查找和打印的功能编一个函数,二维数组的 输入在主函数中进行,并将二维数组通过指针参数传递的方式由主函数传递到 子函数中。(2级)
10. 编一程序,首先将一个包含10个数的数组按照升序排列,然后将从一指定位 置m开始的n个数按照逆序重新排列,并将新生成的相互组输出。要求使用指
针控制方法实现上述功能。(2级)
11.遍一程序,在主函数中输入10个数并保存到数组,同时编写一被调用函数 funct,函数funct有两个形式参数(其中一个用于接收数组,另一个表示该数 组的元素个数),funct功能是找出该数组中的最大值的位置并将该最大值的地 址作为函数funct的返回值到主函数中。在主函数中打印出该数组的最大值。(2级) 12.编一程序,设置一个排序函数sort,该函数将数组按照从小到大的顺序进行排序,其中有两个形式参数,一个为指向数组的指针p,另一个为数组的元素个数n。在主函数main()中要求从键盘输入10个数存入数组data[10]中,同时要求调用函数sort对data进行排序,并在main()中输出最终的排序结果。(2级)
正在阅读:
C语言第八章 指针01-30
实验二 单级放大电路09.10.2711-11
压型钢板组合楼板施工方案(完成)12-08
《幼儿园组织与管理》练习题库参考答案08-18
无锡市房屋建筑面积计算规则05-12
工程机械装配与调试工岗位实习周记原创范文10-18
2018年八年级科学下册期末复习第3章空气与生命专题化学计算方法03-21
城市规划原理第四版考试要点总结10-02
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 指针
- 语言
- 08年河南对口升学计算机基础+专业课考试题
- 《全面内战的爆发》说课详稿
- 硕士研究生专业评估报告
- 数据挖掘考试题库
- 磁控电抗器性能优化研究tjj - 图文
- 现代生物技术研究进展
- 9A Unit1—2知识点复习教学案
- cisco第三学期finalexam
- 2011二级建造师考试建设工程法规及知识权威冲刺试卷4
- 黄厚江老师《记叙文写作课堂实录》(胡春燕整理)
- 结晶器钢水液位现场总线控制系统
- 16春东财《证券投资学》在线作业一
- 山东省企事业政工人员专业职务申报资格考试学习试题判断题
- 团温教200614号
- 2012年杨浦区中考二模数学试卷
- 诺曼底号遇难记的教学实录
- crc8校验查表法实现方法
- 2015军队院校招收普通中学高中毕业生普通高等学校招收国防生政治考核表
- 水分析化学练习题及答案
- 中国财政史