C语言程序设计指针练习题

合集下载

C语言指针习题(共21张)

C语言指针习题(共21张)
char *p1=a,*p2=b; int k;
for(k=0;k<=7;k++) if(*(p1+k)= =*(p2+k))
printf(“%c”,*(p1+k));} A)gae B)ga C)language D)有语法错误
第17页0.,7共21页。
C程序设计
1.若有说明语句 : int a[10],*p=a; 则对数组元素的正确引用 是: A)a[10] B)p[a] C)*(p+2) D)p+2
B.*(*(a+i)) D.*(&a[i])
答案:B 分析:指针就变量p取得数组a的首地址,由指针与数组关系知,p[i]表示数组元素第i+1元素值, p[i]=a[i]正确,故A不能选。*(a+i)表示一维数组a第i+1元素值,*(*(a+i)表示对第i+1元 素值再取值是错误操作,所以选B。a[p-a]=a[0]正确,故不能选择C。*(&a[i])也正确, 也不能选D。
printf(“sum=%d”,s);}
第19页0.,9共21页。
C程序设计
3.下面程序的运行(yùnxíng)结果是: main( ) {int x[ ]={0,1,2,3,4,5,6,7,8,9}; int s,i,*p; s=0;p=&x[0];
for(i=1;i<10;i+=2) s+=*(p+i); printf(“sum=%d”,s);}
答案:25(1+3+5+7+9=25)
第1100页.1,0共21页。
C程序设计
4.下面程序的功能(gōngnéng)是删除字符串中的数字字符并输出,填空完成 序。 #include”stdio.h” void deln(char *s) {int i,j; for(i=0,j=0;s[i]!=‘\0’;i++) if(s[i]<‘0’ (1) s[i]>’9’) {s[j]=s[i];j++;}

C语言指针-练习

C语言指针-练习

复习题(二)一、基础题1、设有:int k[]={2,4,6,8,10,12}, *p=k+2; 表达式*(p+2)*p[2] 的值:100 。

2、设有:int a[10], *p1, *p2; 则执行语句:p1=a; p2=&a[5]; 则p2-p1的值:5。

3、设有:int x[]={4,3,2,1},q,*p=&x[1];则执行语句:q=(*--p)++ ; 后;变量q的值为4。

4、设有:int *p, a=10, b=1; 则执行以下语句:p=&a; a=*p+b; 后;a的值为:11。

5、下列程序段的输出结果是2,1 。

int k=1, j=2, *p=&k, *q=p;p=&j;printf("%d, %d",*p, *q);6、设x为整型变量,p为指向整型的指针变量,则让p指向x变量的赋值表达式是P=&x。

7、设有变量定义:float d[]={1.0,2.0,3.0,4.0,5.0}, *p=d+3;请写出printf("\n %f %f", *p, d[0]); 的输出结果为:4.0和 1.0。

8、设有变量定义如下:char s[]="Hello!", *p=s; int i;执行完for(i=0; *(p+i); i++); 后,变量i的值是_6_;*(p+i)的值是‟\0‟_。

9、函数void f(char s[ ], char t[ ]){ int k=0;while (s[k]=t[k]) k++;}等价于void f(char *s, char *t)1、{ while (*s++=*t++); }二、选择题1、下面的程序段用来定义指针并赋值,请选出语法正确的程序段( C )。

A)int *p; scanf(“%d”,p); B)int *s,k; *s=100;C) int *s,k; D) int *s,kchar *p,*c; char *p,*c;s=&k; p=&c; s=&k; p=&c;*p=‟a‟; s=p; *s=1;2、程序段:int *p,a,b=1; p=&a; *p=10; a=*p+b; 执行后,a的值(B)。

第7章指针习题(C语言程序设计)

第7章指针习题(C语言程序设计)
page 2
p &a p1 p2 &b &a *p1 &b &a b 5 *p1 *p2 程序填空. 四 程序填空 程序填空. 以下函数返回a所指数组中最小值下标 四 程序填空 2.以下函数返回 所指数组中最小值下标 以下函数返回 a[0] a[1] a[2] a[3] a[4] fun(int *a, int n) { int i, j=0 ,p; p=j; p=0; 5 20 10 4 15 35 p p i p i i i for( i= j 1 ; i<n; i++ ) if(a[i]<a[p]) p=i; return p; } main() { int s[]={20,10,4,15,35}; int k; k=fun(s,5); printf(“%d\n”,s[k]);} 调用函数由大 调用函数由 到小排序三个整数(指针法) 五 编程 1.调用函数 由大到小排序三个整数(指针法) 2调用函数由大到小排序一维数组(数组名) 调用 函数由大到小排序一维数组(数组名) 调用函数由大到小排序一维数组 a[0]a[1]a[2]a[3]a[4] void sort( int *a, int n) void sort ( int a[], int n) { int i; /* i为 轮数,共n-1轮*/ int k; /* k为最大值下标*/ int j; /* 数组下标*/ int temp; 5 2 ki 9 6 4 i=0 k 9 2 ki 5 6 4 i=1 k for(i=0;i<n-1;i++) { k=i;/* k初值在数组开头*/ for(j=i+1;j<n;j++) if(a[k]<a[j]) k=j; temp=a[i];a[i]=a[k];a[k]=temp; 9 6 5 2 4 i=2 ki 9 6 5 2 4 i=n-2 ki k }}

C语言程序设计指针练习题

C语言程序设计指针练习题
A
• • • • • • • • • • •
11.下列程序的输出结果是 int b=2; int func(int *a) {b+=*a;return(b);} main() {int a=2,res=2; res+=func(&a); printf("%d\n",res); } A) 4 B) 6 C) 8 D) 10
C
• 9.执行语句"char a[10]={"abcd"},*p=a;" 后,*(p+4)的值是 • A) "abcd" B) 'd' • C) '\0' D) 不能确定
C
• • • • • • • • •
10.下列程序执行后的输出结果是 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
B
• 3. 下面程序运行时,如果从键盘上输入3,5<回车>, 程序输出的 • 结果是________。 • main( ) • { int a,b,*pa,*pb; • pa=&a; pb=&b; • scanf("%d,%d",pa,pb); • *pa=a+b; • *pb=a+b; • printf("a=%d,b=%d\n",a,b); • } • A) a=13,b=13 B) a=8,b=8 • C) a=8,b=13 D) 出错

c语言指针题目及答案

c语言指针题目及答案

c语言指针题目及答案一选择题(7分,每小题0.5分)1.C语言源程序的基本单位是( )。

A 过程B 函数C 子程序D 标识符2.下列程序的输出结果是( )。

main( ){ int a=7,b=5;printf("%d",b=b/a);}A 5B 1C 0 D不确认值3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是( )。

A 7B 8C 9D 24.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。

a=125.534; a=(int)125.521%4; a=5<<2;A 125,31,1B 125,1,20C 125,31,20D 125.534,2,205.建有如下程序段,下面叙述中恰当的就是 ( )。

int k=10; while(k=0) k=k-1;A 循环继续执行一次 B循环就是无穷循环 C循环体语句一次也不继续执行 D循环体语句继续执行一次6.以下程序的输出结果为( )。

int i;void prt( ){ for(i=5;i<8;i++) printf("%c",'*');printf(" ");}main( ){ for(i=5;i<=8;i++) prt( );}A ***B *** *** *** ***C *** ***D * * *7.在C语言程序中,以下说法正确的是( )。

A函数的定义可以嵌套,但函数的调用不可以嵌套B函数的定义不可以嵌套,但函数的调用可以嵌套C函数的定义和函数的调用都不可以嵌套D函数的定义和函数的调用都可以嵌套8.以下函数调用语句中所含( )个实参。

func((e1,e2),(e3,e4,e5));A 2B 3C 5D 语法错误9.以下程序的输出结果为( )。

#define ADD(x) x*xmain( ){ int a=4,b=6,c=7,d=ADD(a+b)*c;printf("d=%d",d);}A d=70B d=80C d=140D d=70010.未知职工记录叙述如下,在Turbo C中,系统为变量w分配( )字节的空间。

C语言程序设计:指针一单元测试与答案

C语言程序设计:指针一单元测试与答案

一、单选题1、如有下面的语句说明, 则表达式 *(p+3) 的值是 ( )。

int a[]={2,3,4,5,6,7};int *p=a;A.5B.6C.4D.3正确答案:A2、如有下面的语句说明, 则正确的赋值语句是 ( )。

char a[10], *p=a;A.a=”VC++”;B.p=”VC++”;C.a[10]=”VC++”;D.*p=”VC++”;正确答案:B3、若有以下语句,则&a[2]-p的值是()。

int a[3],*p=a;A.3B.1C.2D.不确定正确答案:C4、若有程序段int b[4],*p,*q;p=&b[1]; q=&b[3];则q-p表示的意义是()。

A.p与q之间的字节数B.p占据的字节数C.p与q之间数据个数D.表达式错误正确答案:C5、若有定义: float *p,m; , 则以下正确的表达式是()。

A.*p=&mB.p=&mC. p=mD.*p=*m正确答案:B二、判断题1、地址运算符”&”可作用于变量和数组元素,分别获得变量和数组元素的地址。

正确答案:√2、只可以通过求地址运算”&”获得地址值。

正确答案:×3、空指针p是指向地址为0的存贮单元的指针。

正确答案:×4、如有变量的定义char s[]=”abc”; 语句char *p=s; 是合法的。

正确答案:√5、如有变量的定义int *r; double x; 则语句 r=&x; 是合法的。

正确答案:×三、填空题1、若有定义:char ch;使指针p指向变量ch的定义语句是_______。

正确答案:char *p=&ch;2、若有定义:char ch,*p=&ch;通过指针p给变量ch赋字符'a'的语句是______。

正确答案:*p='a';3、若有定义:char ch,*p=&ch;通过指针p用格式输出函数输出ch中字符的语句是______。

C语言程序设计作业五(指针,文件)

C语言程序设计作业五(指针,文件)

C语言程序设计作业五1.对于类型相同的指针变量,不能进行哪种运算?(单选)A. +B. -C. =D. = =2. 若有以下说明和语句,且0<=i<10, 则下面哪个是对数组元素的错误引用?(单选)int a[]={1,2,3,4,5,6,7,8,9,0}, *p, i;p=a;A. *(a+i)B. a[p-a]C. p+iD. *(&a[i])3. 若有以下说明和语句,且0<=i<10,则下面哪个是对数组元素地址的正确表示?(单选)int a[]={1,2,3,4,5,6,7,8,9,0}, *p,i;p=a;A. &(a+1)B. a++C. &pD. &p[i]4. 以下程序的输出结果是___。

#include <stdio.h>main(){int a[]={1,2,3,4,5,6},*p;p=a;*(p+3)+=2;printf("%d,%d\n",*p,*(p+3));}A. 0,5B. 1,5C. 0,6D. 1,65. 以下程序的输出结果是哪一项?(单选)#include <stdio.h>main(){int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}, *p[4],i;for(i=0;i<4;i++)p[i]=&a[i*3];printf("%d\n",p[3][2]);}A. 输出项不合法B. 6C. 8D. 126. 如果有以下的定义:(多选)struct person{char name[20];int age;char sex;};struct person a={"xiao min",20,'m'},*p=&a;则对字符串"li ning"的引用方式可以是下面哪些?A. (*p).nameB. C. D. p->name7. 下面哪些定义的结构在内存分配是等价的。

C语言指针习题及答案

C语言指针习题及答案

C语言指针习题及答案指针习题及答案一?选择题1.变量的指针,其含义是指该变量的 BA )值B )地址C )名D )一个标志 2.已有定义int k=2;int *ptr1,*ptr2; 且ptr1和ptr2 均已指向变量k ,下面不能正确执行的赋值语句是 B。

A ) k=*ptr1+*ptr2B ) ptr2=kC ) ptr1=ptr2D ) k=*ptr1*(*ptr2)3.若有说明:int *p,m=5,n; 以下程序段正确的是 D 。

A ) p=&n ;B ) p = &n ;scanf( %d ",&p);scanf( %d ",*p);C ) scanf( %d",&n);D ) p = &n ;*p=n ;*p = m ;4.已有变量定义和函数调用语句: int a=25;print_value(&a);下面函数的输出结果是 ______D _____ 。

A) c=*p1+*p2B ) p2=cC ) p 仁p2D ) c=*p1*(*p2) 12.设有程序段:char s[ ]= "china ";char *p ; p=s ;则下面叙述正确的是 DA) s 和p 完全相同void prin t_value(i nt *x) { printf( %d\n ",++*x); }A ) 23B ) 245. 若有说明:int *p1, *p2,m=5,n; A ) p 仁&m p2=&p1 ;C ) p 仁&m p2=p1 ;6. 若有语句:A ) a,p,*&a 7. 下面判断正确的是 C)25 D ) 26 以下均是正确赋值语句的选项是CB ) p 仁&m p2=&n *p1 =* p2 ;D) p 仁&m *p 仁*p2 ; int *p,a=4; 和p=&a ;下面均代表地址的一组选项是B ) &*a,&a,*pC ) *&p,*p,&aC D ) &a,&*p,pA )B )C )D )char *a= "ch in a "; 等价于char *a; *a= "ch in a "; char str[10]={ “hina"};等价于char str[10]; str[ ]={ “hina";} char *s= "ch in a "; 等价于 char *s; s= "ch in a "; char c[4]= "abc ",d[4]= "abc ";等价于 8. 下面程序段中,for 循环的执行次数是char *s= "\ta\018bc "; for ( ; *s!= '\0'; s++)printf( *");A ) 9B ) 79. 下面能正确进行字符串赋值操作的是 A ) char s[5]={ ABCDE ”}; C ) char *s ; s= "ABCDE "; 10. 下面程序段的运行结果是char *s= "abcde"; s+=2 ; printf( %d",s); A ) cdeB )字符}'11. 设pl 和p2是指向同一个字符串的指针变量,值语句是—Bchar c[4]=d[4]= "abc ” ;CC ) 6 CB ) D )C )char s[5]={ A ', 'B ','C','D','E'}; char *s; scanf( %s",s);字符’c'的地址 D )不确定c 为字符变量,则以下不能正确执行的赋B) 数组s中的内容和指针变量p中的内容相等C) s数组长度和p所指向的字符串长度相等D) *p与s[0]相等13. 以下与库函数strcpy(char *p1,char *p2) 功能不相等的程序段是 D __________A) strcpy1(char *p1,char *p2){ while ((*p1++=*p2++)!= ''); }B) strcpy2(char *p1,char *p2){ while ((*p1=*p2)!= '){ p1++; p2++ } }C) strcpy3(char *p1,char *p2){ while (*p1++=*p2++); }D) strcpy4(char *p1,char *p2){ while (*p2) *p1++=*p2++ ; }14. 下面程序段的运行结果是__C ___________ 。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
B
• 3. 下面程序运行时,如果从键盘上输入3,5<回车>, 程序输出的 • 结果是________。 • main( ) • { int a,b,*pa,*pb; • pa=&a; pb=&b; • scanf("%d,%d",pa,pb); • *pa=a+b; • *pb=a+b; • printf("a=%d,b=%d\n",a,b); • } • A) a=13,b=13 B) a=8,b=8 • C) a=8,b=13 D) 出错
1. 若已定义: int a[]={0,1,2,3,4,5,6,7,8,9}, *p=a, i; 其中0≤i≤9,则对a数组元素不正确的引用是 • A) a[p-a] B) *(&a[i]) • C) p的指向如下图所示,则执行语句 *--p;后*p的值是 • a[0] a[1] a[2] a[3] a[4] • ┌──┬──┬──┬──┬──┐ • │ 10 | 20 | 30 │ 40 | 50 | • └──┴──┴──┴──┴──┘ • p↑ • A) 30 B) 20 • C) 19 D) 29
D
C
• 7.若有说明语句"int i,j =7,*p=&i;",则 与i=j等价的语句是 • A) i=*p; B) *p=*&j; • C) i=&j; D) i=**p ;
B
• 8.若有说明语句"int a[10],*p=a;",对数 组元素的正确引用是 • A) a[p] B) p[a] • C) *(p+2) D) p+2;
B
• • • • • • • • • •
12. 下列程序的输出结果是: void fun(int *x,int *y) {printf("%d%d",*x,*y);*x=3;*y=4;} main() {int x=1,y=2; fun(&y,&x); printf("%d%d",x,y); } A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2
C
• 4. 下列程序执行后的输出结果是________。 • main() • { int a[3][3],i,*pmul; • pmul=&a[0][0]; • for(i=0;i<9;i++) pmul[i]=i+1; • printf("%d\n",a[1][2]); • } • A) 3 B) 6 • C) 9 D) 随机数
A
• • • • • • • • • • •
11.下列程序的输出结果是 int b=2; int func(int *a) {b+=*a;return(b);} main() {int a=2,res=2; res+=func(&a); printf("%d\n",res); } A) 4 B) 6 C) 8 D) 10
B
• 5. 有如下程序段 • int *p,a=10,b=1; • p=&a; a=*p+b; • 执行该程序段后,a的值为________。 • A) 12 B) 11 • C) 10 D) 编译出错
B
• 6.下面程序的输出结果是 • main() • { int a[]={1,2,3,4,5,6,7,8,9,0},*p; • p=a; • printf("%d\n",*p+9); • } • A) 0 B) 1 • C) 10 D) 9
C
• 9.执行语句"char a[10]={"abcd"},*p=a;" 后,*(p+4)的值是 • A) "abcd" B) 'd' • C) '\0' D) 不能确定
C
• • • • • • • • •
10.下列程序执行后的输出结果是 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
A
• • • • • • • • • •
13.下列程序的输出结果是 #include <stdio.h> main( ) {int a[ ]={1,2,3,4,5,6},*p; p=a; *(p+3)+=2; printf("%d,%d\n",*p,*(p+3)); } A) 0,5 B) 1,5 C) 0,6 D) 1,6
相关文档
最新文档