计算机.docx
- 文档编号:24705177
- 上传时间:2023-05-31
- 格式:DOCX
- 页数:81
- 大小:58.87KB
计算机.docx
《计算机.docx》由会员分享,可在线阅读,更多相关《计算机.docx(81页珍藏版)》请在冰豆网上搜索。
计算机
第10章 指针
同步练习一
一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。
)
10.1 若有下面的程序段:
char s[]="china";char *p; p=s;
则下列叙述正确的是
A)s和p完全相同落千丈 B)数组s中的内容和指针变量p中的内容相等
C)s数组长度和p所指向的字符串长度相等 D)*p与s[0]相等
10.2 若有语句int *point,a=4;和 point=&a;下面均代表地址的一组选项是
A)a,point,*&a B)&*a,&a,*point C)*&point,*point,&a D)&a,&*point,point
10.3 下列程序执行后的输出结果是
void func(int *a,int b[])
{ b[0]=*a+6; }
main()
{ int a,b[5];
a=0; b[0]=3;
func(&a,b); printf("%d\n",b[0]);
}
A)6 B)7 C)8 D)9
10.4 已定义以下函数
fun(char *p2, char *p1)
{ while((*p2=*p1)!
=’\0’){p1++;p2++;}
}
函数的功能是
A)将p1所指字符串复制到p2所指内存空间 B)将p1所指字符串的地址赋给指针p2
C)对p1和p2两个指针所指字符串进行比较 D)检查p1和p2两个指针所指字符串中是否有’\0’
10.5 有以下程序
void ss(char *s,char t)
{ while(*s)
{ if(*s= =t)*s=t-’a’+’A’;
s++;
}
}
main()
{ char str1[100]="abcddfefdbd",c=’d’;
ss(str1,c);
printf("%s\n",str1);
}
程序运行后的输出结果是
A)ABCDDEFEDBD B)abcDDfefDbD C)abcAAfefAbA D)Abcddfefdbd
10.6 下面说明不正确的是
A)char a[10]="china"; B)char a[10],*p=a;p="china"
C)char *a;a="china"; D)char a[10],*p;p=a="china"
DDAAB考生答案:
正确答案:
D
10.7 设有定义:
int n=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是
A)p=1; B)*q=2; C)q=p; D)*p=5;
考生答案:
正确答案:
D
10.8 执行以下程序后,a,b的值分别为
main()
{ int a,b,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;
b=(*p1)/(*p2)+7;
printf("a=%d\n",a);
printf("b=%d\n",b);
}
A)-1,5 B)1,6 C)0,7 D)4,10
考生答案:
正确答案:
C
10.9 假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入:
PROG ABCDEFGH IJKL<回车>,则输出结果为
main( int argc, char *argv[])
{ while(--argc>0)
printf("%s",argv[argc]);
printf("\n");
}
A)ABCDEFG B)IJHL C)ABCDEFGHIJKL D)IJKLABCDEFGH
考生答案:
正确答案:
D
10.10 以下程序有错,错误原因是
main()
{ int *p,i;char *q,ch;
p=&i;
q=&ch;
*p=40;
*p=*q;
......
}
A)p和q的类型不一致,不能执行*p=*q;语句B)*p中存放的是地址值,因此不能执行*p=40;语句
C)q没有指向具体的存储单元,所以*q没有实际意义
D)q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果考生答案:
正确答案:
D
10.11 下面程序段的运行结果是
char a[]="lanuage",*p;
p=a;
while(*p!
=′u′){printf("%c",*p-32);p++;}
A)LANGUAGE B)language C)LAN D)langUAGE
考生答案:
正确答案:
C
10.12 有以下语句,则对a数组元素的引用不正确的是(0≤i≤9)
int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
A)a[p-a] B)*(&a[i]) C)p[i] D)*(*(a+i))
考生答案:
正确答案:
D
10.13 函数fun的返回值是
fun(char *a,char *b)
{ int num=0,n=0;
while(*(a+num)!
=′\0′) num++;
while(b[n]) { *(a+num)=b[n]; num++;n++; }
return num;
}
A)字符串a的长度 B)字符串b的长度C)字符串a和b的长度之差 D)字符串a 和b的长度之和考生答案:
正确答案:
D
10.14 下列程序的输出结果是
main()
{ int a[5]={2,4,6,8,10},*p,**k;
p=a;
k=&p;
printf("%d",*(p++));
printf("%d\n",**k);
}
A)4 B)22 C)24 D)46
考生答案:
正确答案:
C
10.15 下面判断正确的是
A)char *a="china";等价于 char *a;*a="china";B)char str[5]={"china"};等价于char str[]={"china"};
C)char *s="china";等价于 char *s;s="china";
D)char c[4]="abc",d[4]="abc";等价于char c[4]=d[4]="abc";
考生答案:
正确答案:
C
10.16 以下定义中,标识符prt int(*prt)[3]
A)定义不含法B)是一个指针数组名,每个元素都是一个指向整数变量的指针
C)是一个指针,它指向一个具有三个元素的一维数组D)是一个指向整型变量的指针
考生答案:
正确答案:
D
10.17 有如下说明
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是
A)*p+9 B)*(p+8) C)*p+=9 D)p+8
考生答案:
正确答案:
B
10.18 若有定义:
char *st= "how are you "; 下列程序段中正确的是
A)char a[11], *p; strcpy(p=a+1,&st[4]);B)char a[11]; strcpy(++a, st);
C)char a[11]; strcpy(a, st);D)char a[], *p; strcpy(p=&a[1],st+2);
考生答案:
正确答案:
A
10.19 下列程序的运行结果是
void fun(int *a, int *b)
{ int *k;
k=a; a=b; b=k;
}
main()
{ int a=3, b=6, *x=&a, *y=&b;
fun(x,y);
printf("%d %d", a, b);
}
A)6 3 B)3 6 C)编译出错 D)0 0
考生答案:
正确答案:
B
10.20 若有说明语句
char a[]="It is mine";
char *p="It is mine";
则以下不正确的叙述是
A)a+1表示的是字符t的地址B)p指向另外的字符串时,字符串的长度不受限制
C)p变量中存放的地址值可以改变D)a中只能存放10个字符
考生答案:
正确答案:
D
10.21 以下程序的运行结果是
sub(int x,int y,int *z)
{ *z=y-x; }
main()
{ int a,b,c;
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf("M,M,M\n",a,b,c);
}
A)5,2,3 B)-5,-12,-7 C)-5,-12,-17 D)5,-2,-7
考生答案:
正确答案:
B
10.22 若有下面的程序片段:
int[12]={0},*p[3],**pp,i;
for(i=0;i<3;i)
p[i]=&a[i*4];
pp=p;
则对数组元素的错误引用是
A)pp[0][1] B)a[10] C)p[3][1] D)*(*(p+2)+2)
考生答案:
正确答案:
C
10.23 下面程序的输出结果是
#include
#include
main()
{ char *p1="abc",*p2="ABC",str[50]= "xyz";
strcpy(str+2,strcat(p1,p2));
printf("%s\n",str);
}
A)xyzabcABC B)zabcABC C)xyabcABC D)yzabcABC
考生答案:
正确答案:
C
10.24 有如下程序
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);
}
该程序的输出结果是
A)69825 B)63825 C)6385 D)693825
考生答案:
正确答案:
C
10.25 阅读下面程序,则执行后的结果为
#include "stdio.h"
#include "string.h"
#define N 10
#define M 10
char *find(char (*a)[M],int n)
{ char *q; int i;
q=a[0];
for(i=0;i
if(strcmp(a[i],q)<0)
q=a[i];
return q;
}
main()
{ char s[N][M]={"tomeetme","you","and","he","china"};
char *p;
int n=5,i;
p=find(s,n);
puts(p);
}
A)he B)and C)you D)tomeetme
考生答案:
正确答案:
B
二、填空题(请将每一个空的正确答案写在答题卡相应序号后。
)
10.26 函数 void fun(float *sn, int n)的功能是:
根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。
请填空。
void fun( float *sn, int n)
{ float s=0.0, w, f=-1.0;
int i=0;
for(i=0; i<=n; i++)
{ f=【1】* f;
w=f/(2*i+1);
s+=w;
}
【2】=s;
}
考生答案:
正确答案:
-1 正确答案:
*sn
10.27 该程序运行的结果是【3】。
#include
#include
#define M 100
void fun(int m, int *a, int *n)
{ int i,j=0;
for(i=1;i<=m;i++)
if(i%7==0||i_==0)
a[j++]=i;
*n=j;
}
main()
{ int aa[M],n,k;
clrscr();
fun(10,aa,&n);
for(k=0;k
if((k+1)==0)
printf("\n");
else printf("M",aa[k]);
printf("\n");
}
考生答案:
正确答案:
7
10.28 下列程序的功能是:
求出ss所指字符串中指定字符的个数,并返回此值。
例如,若输入字符串123412132,输入字符1,则输出3,请填空。
#include
#include
#define M 81
int fun(char *ss, char c)
{ int i=0;
for(; 【4】;ss++)
if(*ss==c) i++;
return i;
}
main()
{ char a[M], ch;
clrscr();
printf("\nPlease enter a string:
"); gets(a);
printf("\nPlease enter a char:
"); ch=getchar();
printf("\nThe number of the char is:
%d\n", fun(a,ch));
}
考生答案:
正确答案:
*ss!
= ’\0’
10.29 若给fun函数的形参s传送字符串:
“]]6354abcc” (其中]表示空格字符),则函数的返回值是【5】。
#include
long fun(char s[])
{ long n;int sign;
for(;isspace(*s);s++);
sign=(*s==′-′)?
-1:
1;
if(*s==′+′||*s==′-′) s++;
for(n=0;isdigit(*s);s++) n=10*n+(*s-′0′);
return sign*n;
}
考生答案:
正确答案:
6354
10.30 下面程序是指从终端读入的20个字符放入字符数组中,然后利用指针变量输出上述字符串,请填空。
#include
main ()
{ int i; char s[21],*p;
for (i=0;i<20;i++)
s[i]=getchar ();
s[i]=【6】;
p =【7】
while (*p) putchar (【8】);
}
正确答案:
’\0’ 正确答案:
s 正确答案:
*p++
10.31 以下函数的功能是求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15。
请按题意,完成填空。
试题程序:
#include
#include
void fun (int x, int pp[], int *n)
{ int i,j=0;
【9】
if(x%i==0) pp[j++]=i;
【10】;
}
main ()
{ int x,aa[1000], n, i ;
clrscr();
printf("\nPlease enter an integer number :
\n ");
scanf ("%d ", &x);
fun (x, aa, &n);
for (i=0 ; i printf ("%d ", aa [i]); printf ("\n "); } 正确答案: for(i=1;i 10.32 mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。 请填空。 int mystrlen(char *str) { int i; for(i=0;【11】! = ′\0′;i++); return(i); } 考生答案: 正确答案: *(str+i) 或 str[i] 10.33 下面函数的功能是: 找出一维数组元素中最大的值和它所在的下标,最大值的和它所在的下标通过形参传回。 数组元素中的值已在主函数中赋予。 主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。 请填空。 #include #include void fun(int a[],int n, int *max, int *d) { int i; *max=a[0]; *d=0; for(i=0;【12】;i++) if(*max<【13】) { *max=a[i];*d=i; } } main() { int i, x[20], max, index, n=10; randomize(); for(i=0;i { x[i]=rand()P; printf("M",x[i]); } printf("\n"); fun(x,n,&max,&index); printf("Max=],Index=M\n",max,index); } 考生答案: 正确答案: i &NBSP;A[I] 10.34 阅读以下程序,使程序输出结果为30,4.000 000,请填空。 #include "stdio.h" main() { int a=30,b=40,c; double 【14】 ,s; s=fun(&a,&b,&c); printf("%d,%lf\n",c,s);} double fun(int *a,int *b, 【15】 ) { *c=*a%*b; return(4.0); } 正确答案: fun(int *,int *,int *) 正确答案: int 第10章 指针 同步练习二 一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。 ) 10.1b 下列关于指针变量赋空值的说法错误的是 A)当赋空值的时候,变量指向地址为0的存储单元 B)赋值语句可以表达为变量名=′\0′; C)赋值语句可以表达为变量名=0; D)一个指针变量可以被赋空值 考生答案: 正确答案: A 10.2b 下面函数的功能是 char *fun(char *str1,char*str2) { while((*str1)&&(*str2++=*str1++)); return str2; } A)求字符串的长度 B)比较两个字符串的大小 C)将字符串str1复制到字符串str2中 D)将字符串str1接续到字符串str2中 考生答案: 正确答案: C 10.3b 下面程序段中,输出*的个数是 char *s="\ta\018bc"; for(;*s! =′\0′;s++)printf("*"); A)9 B)5 C)6 D)7 考生答案: 正确答案: C 10.4b 下列程序是用来判断数组中特定元素的位置所在。 如果输入如下整数: 876 675 896 101 301 401 980 431 451 777 #include #include int fun(int *s, int t, int *k) { int i; *k=0; for(i=0;i if(s[*k] return s[*k]; } main() { int a[10]={ 876,675,896,101,301,401,980,431,451,777},k; clrscr(); fun(a, 10, &k); printf("%d, %d\n ", k, a[k]); } 则输出结果为 A)7,431 B)6 C)980 D)6,980 正确答案: D 10.5b 有以下程序 #include main() { char *p,*q; p=(char *)malloc(sizeof(char)*20); q=p; scanf("%s %s",p,q); printf("%s %s\n",p,q); } 若从键盘输入: abc def<回车>,则输出结果是 A)def def B)abc def C)abc d D)d d 考生答案: 正确答案: A 10.6b 有以下程序 #include main() { char *p="abcde\0fghjik\0 "; printf("%d\n ",strlen(p)); } 程序运行后的输出结果是 A)12 B)15 C)6 D)5 考生答案: 正确答案: D 10.7b 已知char **t;则变量t是 A)指向char变量的指针 B)指向指针的char变量C)指向指针的指针 D)以上说法都不对 考生答案: 正确答案: C 10.8b 阅读下面程序,执行后的结果为 #include "stdio.h" void fun(int *a,int *b) { int k; k=5; *a=k; *b=*a+k;} main() { int *a,*b,x=10,y=15; a=&x; b=&y; fun(a,b); printf("%d,%d\n",*a,*b); } A)10,15 B)5,15 C)5,10 D)15,10 考生答案: 正确答案: C 10.9b 阅读下面程序,在程序执行后的结果为 #include "stdio.h" int *fun(int *a,int *b) { int m; m=*a; m+=*b-3; return(&m); } main() { int x=21,y=35,*a=&x,*b=&y; int *k; k=fun(a,b); printf("%d\n",*k); } A)53B)21 C)35 D)14 考生答案: 正确答案: A 10.10b 阅读下列程序,则执行后的结果为 #include "stdio.h" main() { int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56}; printf("%x,%x\n",c[2][2],*(*(c+1)+1)); } A)3e,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机