c语言习题 pdf,C语言指针习题.pdf

C语言指针习题.pdf

C 语言培训练习题白伟 1 一、一、选择题选择题 1. 1. 1. 1. 变量的指针,其含义是指该变量的_. a值b地址 c名d一个标志 2 2 2 2若有语句 int *point,a4;和 point下面均代表地址的一组选项是_. aa,point,*int *p,m5,n;以下正确的程序段的是. apbp scanf“d“,scanf“d“,*p; cscanf“d“,dp *pn;*pm; 4. 4. 4. 4. 以下程序中调用 scanf 函数给变量 a 输入数值的方法是错误的,其错误原因是. main int *p,*q,a,b; p printf“ a”; scanf“d”,*p; a*p 表示的是指针变量 p 的地址 b*p 表示的是变量 a 的值,而不是变量 a 的地址 c*p 表示的是指针变量 p 的值 d*p 只能用来说明 p 是一个指针变量 5. 5. 5. 5. 已有变量定义和函数调用语句int a25; print_value 下面函数的正确输出结果是 . void print_valueint *x printf“dn”,*x; a23b24c25d26 6 6 6 6. . . .若有说明long *p,a;则不能通过 scanf 语句正确给输入项读入数据的程序段是 A *p rp;pq;qr; printf“d,d,d,dn“,m,n,*p,*q; C 语言培训练习题白伟 2 程序运行后的输出结果是 A)1,2,1,2B)1,2,2,1 C)2,1,2,1D)2,1,1,2 8 8 8 8. . . . 有以下程序 main inta1, b3, c5; int*p1 *p *p1**p2; printf“dn“,c; 执行后的输出结果是 A)1B)2C)3D)4 9 9 9 9. . . . 有以下程序 main int a,k4,m4,*p1 ap1 printf“dn“,a; 程序运行后的输出结果是() A)4B)1C)0D)运行时出错,无定值 1 1 1 10 0 0 0. . . . 在 16 位编译系统上,若有定义 inta10,20,30, *p,当执行 p;后,下列说法错 误的是() A)p 向高地址移了一个字节B)p 向高地址移了一个存储单元 C)p 向高地址移了两个字节D)p 与 a1 等价 11111111. . . .有以下程序段 int a101,2,3,4,5,6,7,8,9,10,*p bp5; b 中的值是() A5B6C8D9 12.12.12.12.若有以下定义,则对 a 数组元素的正确引用是_. int a5,*pa; a* a元素 a5的地址b元素 a5的值 c元素 a6的地址d元素 a6的值 14141414. . . .设已有定义 int a1015,12,7,31,47,20,16,28,13,19,*p; 下列语句中正确的是() A forpa;a int main int x 10, 20, 30; int *px x; printf“d,“, *px;printf“d,“, *px; px x; printf“d,“, *px;printf“d,“, *px; px x; printf“d,“, *px;printf“d,“, *px; px x; printf“d,“, *px;printf“dn“, *px; return 0; 程序运行后的输出结果是 A)11,11,11,12,12,20,20,20B)20,10,11,10,11,10,11,10 C)11,11,11,12,12,13,20,20D)20,10,11,20,11,12,20,20 16161616. . . .设有如下定义 int arr6,7,8,9,10; int *ptr; ptrarr; *ptr22; printf “d,dn“,*ptr,*ptr2; 则程序段的输出结果为 A8,10B6,8C7,9D6,10 17.17.17.17.若有定义int a2,4,6,8,10,12,*pa;则*p1的值是. *a5的值是_. 1 1 1 18 8 8 8. . . .若有以下说明和语句,int c45,*p5;pc;能正确引用 c 数组元素的是. A p1B *p3C *p13D *p02 19191919若有定义int a23,则对 a 数组的第 i 行 j 列元素地址的正确引用为. a*aijbaic*ajdaij 20202020若有以下定义int a232,4,6,8,10,12;则 a10的值是_. **a10的值是 . 2 2 2 21. 1. 1. 1.有以下定义 char a10,*ba; 不能给数组 a 输入字符串的语句是() AgetsaBgetsa0CgetsDgetsb; 2 2 2 22. 2. 2. 2.下面程序段的运行结果是_. char *s“abcde“; s2;printf“d“,s; acdeb字符cc字符c的地址d无确定的输出结果 2 2 2 23. 3. 3. 3.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是() C 语言培训练习题白伟 4 A char s10“abcdefg“; B char t“abcdefg“,*st; C char s10;s“abcdefg“; D char s10;strcpys,“abcdefg“; 2 2 2 24. 4. 4. 4.设已有定义 char *st“how are you“; 下列程序段中正确的是() A chara11, *p;strcpypa1, B chara11;strcpya, st; C chara11;strcpya, st; D chara, *p;strcpyp 2 2 2 25. 5. 5. 5.有以下程序 main char a“programming“,b“language“; char *p1,*p2; int i; p1a;p2b; fori0;i include main char *s1“AbDeG“; char *s2“AbdEg“; C 语言培训练习题白伟 5 s12;s22; printf“dn“,strcmps1,s2; a正数b负数c零d不确定的值 30303030. . . .有以下程序 void fint *x,int *y int t; t*x;*x*y;*yt; main int a81,2,3,4,5,6,7,8,i,*p,*q; pa;q while*p*qfp,q;p;q; fori0;i2i3-j; sbij; return s; main int a441,2,3,4,0,2,4,5,3,6,9,12,3,2,1,0; printf“dn“,fa ; 执行后的输出结果是 A 12B 11C 18D 16 33333333. . . .若有以下函数首部 intfundoublex10, int*n 则下面针对此函数的函数声明语句中正确的是 A)intfundouble x, int *n;B)intfundouble, int ; C 语言培训练习题白伟 6 C)intfundouble *x, int n;D)intfundouble *,int *; 3 3 3 34 4 4 4. . . .有以下程序 void sumint *a a0a1; main int aa101,2,3,4,5,6,7,8,9,10,i; fori2;i0;i sum printf“dn“,aa0; 执行后的输出结果是() A4B3C2D1 35.下段代码的运行结果是 int main char a; char *str strcpystr,“hello“; printfstr; return 0; AhelloBnullChD发生异常 36.下段程序的运行结果是 void main char *p,*q; char str“Hello,Worldn“; q p str; p; printq; printp; void printchar *s printf“s”,s; AHe BHello,Worldello,World CHello,WorldHello,World Dello,Worldell,World 37.有以下程序 void funchar *c,int d *c*c1; dd1; printf“c,c,“,*c,d; voidmain C 语言培训练习题白伟 7 char aA,ba 程序运行后的输出结果是。 A B,a,B,aB a,B,a,BCA,b,A,bD b,B,A,b 38、下面选项属于函数指针的是 A、int*pint, intB、int *pint, intC、两者都是 D、两者都不是 39、若有函数 maxa,b,并且已使函数指针变量 p 指向函数 max,当调用该函数时,正确的调 用方法是_. A*pmaxa,b;B*pmaxa,b; C *pa,b;D *pa,b; 40、下面几个选项中的代码能通过编译的是 Aint* fun int s31,3,4 return s; int main int * result; result fun; forint i 0;i3;i printf“dn“,resulti; return0; Bint; return s; int main int * result; result fun; forint i 0;i3;i printf“dn“,resulti; return0; Cint* fun int s31,3,4 return C 语言培训练习题白伟 8 int main int * result; result fun; forint i 0;i3;i printf“dn“,resulti; return0; Dint; return int main int * result; result fun; forint i 0;i3;i printf“dn“,resulti; return0; 41、下列选项中声明了一个指针数组的是 Aint *p2;Bint *p2; Ctypedef int* intPtr; intPtr p2; DA 和 B EA 和 C FB 和 C 42、下面代码能通过编译的是 Aint main int a31,2,3; int *b3 int p b; return0; Bint main int a31,2,3; int *b3a1,a2,a3; int p b; return0; Cint main int a31,2,3; C 语言培训练习题白伟 9 int *b3 int *p b; return0; Dint main int a31,2,3; int *b3 int *p return0; 43、对于语句 int *pa5;下列描述中正确的是_. A pa 是一个指向数组的指针,所指向的数组是 5 个 int 型元素 B pa 是一个指向某数组中第 5 个元素的指针,该元素是 int 型变量 C pa 5表示某个元素的第 5 个元素的值 D pa 是一个具有 5 个元素的指针数组,每个元素是一个 int 型指针 44、若有以下定义,且 0i4,则不正确的赋值语句是_. int b46, *p, *q4; A qi bi;B p b;C p biD qi 45、若要对 a 进行运算,则 a 应具有下面说明_. A int a32;B char *a “12”,”ab”;C char *a3;D int b10, *a b; 46、若有以下说明语句 char *language “FORTRAN”,”BASIC”,PASCAL”,JAVA”,”C”; char q; q language 2; 则语句 printf“on”, *q 输出的是_. A language2元素的地址; B)字符串 PASCAL C language2元素的值,它是字符串 PASCAL 的首地址 D)格式说明不正确,无法得到确定的输出 47、若有以下程序 void main char *a3 “I“,“love“,“China“; char ptr a; printf“cs“ , **a11, *ptr1 ; 这段程序的输出是() A Il B oo Colove D Ilove C 语言培训练习题白伟 10 题号题号答案答案 1. 1. 1. 1.B 2. 2. 2. 2.D 3. 3. 3. 3.D 4. 4. 4. 4.B 5. 5. 5. 5.D 6. 6. 6. 6.A 7. 7. 7. 7.B 8. 8. 8. 8.C 9. 9. 9. 9.C 10.10.10.10.A 11.11.11.11.D 12.12.12.12.D 13.13.13.13.A 14.14.14.14.B 15.15.15.15.A 16.16.16.16.D 17.17.17.17.4,12 18.18.18.18.D 19.19.19.19.D 20.20.20.20.8,8 21.21.21.21.B 22.22.22.22.C 23.23.23.23.C 24.24.24.24.A 25.25.25.25.D 26.26.26.26.B 27.27.27.27.C 28.28.28.28.D 29.29.29.29.B 30.30.30.30.C 31.31.31.31.C 32.32.32.32.D 33.33.33.33.D 34.34.34.34.A 35.35.35.35. D 36.36.36.36. B 37.37.37.37. D 38.38.38.38.D 39.39.39.39.C 40.40.40.40. A 41.41.41.41.E 42.42.42.42.A 43.43.43.43.D 44.44.44.44.B 45.45.45.45.D 46.46.46.46.C 47.47.47.47.C

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值