c语言中字符串 0fghjik,C语言指针练习包括答案和详解.pdf

这篇博客详细介绍了C语言中的指针使用,包括指针的声明、赋值、运算以及在数组和字符串操作中的应用。内容涵盖选择题解析,如非法赋值语句的判断,以及指针变量与地址的关系。还涉及到了指针在函数参数传递中的作用,如通过指针传递数组和字符串。博客深入浅出地讲解了指针操作的常见问题和解决方法。
摘要由CSDN通过智能技术生成

253b171540df25e1b84436cbe50dfc72.gifC语言指针练习包括答案和详解.pdf

第七章第七章指针指针 71 选择题 1 若有说明int a2, *p,则以下非法的赋值语句是(D) 。 A pq;B *p*q;C a*q;D qa; a 是整型数, int *p,*q 定义了指针, p,q 是指向整型的指针。 p 取得 a 的地址,而 q 取得 p 的地址 p,q 是指针(也就是一个地址) ,而*p 和*q 是这个指针指向的整型数值(存 放在这个地址的值) 。 A)把 q 的地址赋给 p,则 p 和 q 完全一样了,都指向一个数 2 B)把 q 中数据个 p C)把 q 中数据给 a D)a 中数据是 2,不能够给一个地址。除非*qa 2 若定义int a511, *b的输出结果为D A 无确定值B a 的地址C 512D 511 int a511,*b a 是整形变量 b 是整形指针变量,指向 a printf“dn“,*b;就是输出指针变量 b, 所指变量的值输出结果 511 3已有定义int a2, *p1 下面不能正确执行的赋值语句是 (B) 。 Aa*p1*p2;Bp1a;Cp1p2;Da*p1**p2; 47、已知在程序中定义了如下的语句 int *P1,*P2; int k; p1p2 则下列语句中不能正确执行是( B) A、k*P1*P2;B、p2k;C、P1P2;D、K*P1 * *P2; P1 P2 是指针,K 是整型变量,变量怎么可以赋值给指针呢 A 其实是执行了 KKK(P1 和 P2 都指向 K,所以*P1*P2 其实都是指 K) C 是赋值语句 D 其实执行了 KK*K 4 变量的指针,其含义是指该变量的(B) 。 A 值B 地址C 名D 一个标志 5 若有说明语句int a, b, c, *d B scanf“ddd“, a, b, d; C scanf“ddd“, D scanf“ddd“, a, b,*d; 对于 int c,*d,c 是一整型数据,d 是一指针,它指向变量 c(即 d 也可以用 scanf“d“,d; 6 若已定义 int a5; 下面对(1) 、 (2)两个语句的正确解释是(D) 。 1 int *p2 *pa; A 语句(1)和(2)中的*p 含义相同,都表示给指针变量 p 赋值。 B 1和2语句的执行结果,都是把变量 a 的地址值赋给指针变量 p。 C 1在对 p 进行说明的同时进行初始化,使 p 指向 a; 2变量 a 的值赋给指针变量 p。 D 1在对 p 进行说明的同时进行初始化,使 p 指向 a; 2将变量 a 的值赋予*p。 A1*p,定义 p 为 int 类型指针(2) *p,表示 p 所指向的变量 B(1)把变量 a 的地址赋给指针变量 p(2)把变量 a 的值,赋值给 P 所 指向的变量 C 前半句正确,后半句错误, (2)是把变量 a 的值赋值给 P 所指的变量。 7 若有语句 int *p, a10; p 下面均代表地址的一组选项是(D) 。 A a, p, * 则正 确的赋值语句是() 。 B A px;B p C *px;D *p 9 若有说明int *p, a1, b; 以下正确的程序段是(B) 。 A pB scanf“d“, scanf“d“, *pb; C pD p scanf“d“, *p;*pa; A,B 中 p 是 b 的地址 那么如果要输入 b 应该是 scanf“d“, p; C 中 p 还没定义 给*p 赋值就是给一个没有开辟的地址赋值了 D 是正确的 意思是 p 为 b 的地址,将 p 地址上的数变成 a, 等价于 ba 10有如下语句int m6, n9, *p, *q; p q 如图 1 所示,若要实现 下图所示的存储结构,可选用的赋值语句是(C) 。 A *p*q;B p*q; C pq;D *pq; 11 以下程序中调用 scanf 函数给变量 a 输入数值的方法是错误的,其错误原因 是(B) 。 0.2345 px m p n qp m q n include 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 是一个指针变量 scanf 后面的参数是地址,是接收的值放到这个地址 12 下面程序的功能是从输入的十个字符串中找出最长的那个串。请在 处填空。 include “stdio.h“ include “string.h“ define N 10 main char sN81, * t; int j; for j0; j main int a, b, k4, m6, *p ap b-*p/*q7; printf“adn“, a; printf“bdn“, b; 【1】 A -1B 1C 0D 4 【2】 A 5B 6C 7D 10 32 下面程序的功能是将字符串 s 的所有字符传送到字符串 t 中,要求每传递三 个字符后再存放一个空格, 例如字符串s为“abcdefg“, 则字符串t为“abc def g“,请选择填空。CA include “stdio.h“ include “string.h“ main int j, k0; char s60, t100, *p; ps; getsp; while*p for j1; jsBtsC*ts0 D *ts0 【2 】 A tB sCt D w 35以下程序的功能是删除字符串 s 中的所有空格(包括 TAB 符、回车符) ,请 填空。AC include “stdio.h“ include “string.h“ include “ctype.h“ main chars80; getss; delspaces; putss; delspacechar *t int m, n; char c80; form0, n0; 【1】; m if isspace【2】 /*C 语言提供的库函数,用以判断字符是否为 空格*/ cntm; n; cn0; strcpyt, c; 【1】AtmBtmCtm0 D tm0 【 2 】 A tmB *cmC *tm D *cm 36下面程序的功能是统计字串 sub 在母串 s 中出现的次数。请选择填空。BC include “stdio.h“ include “string.h“ main char s80, sub80; int n; getss; getssub; printf“dn“, counts,sub; int count char *p, char *q int m, n, k, num0; for m0; pm; m for 【1】, k0; qkpn; k, n ifq【2】0 num;break; return num; 【1】 Anm1BnmCn0Dn1 【2】 AkBkCk1Dk 37下列程序的输出结果是(C) 。 include “stdio.h“ main int a1,2,3,4,5,6,7,8,9,0, *p; pa; printf“dn“, *p9; A 0B1C 10 D9 38以下程序的输出结果是(C) 。 include “stdio.h“ char ccharchar ch if chA printf“dn“, strlenb2; A 8B 3C 1D 7 40有以下程序 include “string.h“ include “stdio.h“ main char *p“abcde0fghjik0“; printf“dn“, strlenp; 程序运行后的输出结果是(D) 。 A 12B 15C 6D 5 41有以下程序 void ss char*s, chart while *s if *st *st-aA; s; main charstr100“abcddfefdbd“, cd; ssstr, c; printf“sn“, str1; 程序运行后的输出结果是(B) 。 A ABCDDEFEDBDB abcDDfefDbDC abcAAfefAbA D Abcddfefdbd 42 以下程序调用 findmax 函数返回数组中的最大值。在下面划线处应填入的是 (B) 。 include “stdio.h“ findmax int *a, int n int *p, *s; for pa, sa; p-asB*p*sCapasDp-ap-s 43有以下程序 A include “stdio.h“ include “malloc.h“ main char *q, *p; pchar* malloc sizeofchar *20;/*为指针 p 分配一个地址*/ qp; scanf“ss“, p, q; printf“s sn“, p, q; 若从键盘输入abcdef,则输出结果是 A defdefB abcdefC abcdD dd 44下面程序的运行结果是(D) 。 include “stdio.h“ include “string.h“ fun char *s char t10; st; strcpyt, “example“; main char *s; funs; putss; AexampleBexampleCexampleD不确定 的值 45下列程序段的输出结果是(A) 。 include “stdio.h“ void fun int *x, int *y printf“dd“, *x, *y; *x3; *y4; main int x1, y2; fun printf“d d“, x, y; A 2 1 4 3B 1 2 1 2C 1 2 3 4D2 1 1 2 46下列程序的输出结果是(C) 。 include “stdio.h“ main char a109,8,7,6,5,4,3,2,1,0, *pa5; printf“d“, *p; A 非法B a4的地址C 5D 3 47有以下程序 include “stdio.h“ include “string.h“ mainint argc, char *argv int m, length0; for m1;m1 printf“sc“, *argv, argc1 n ; B main int a, char * b while a1 printf“sn“, *b; C main int argc, char *argv while argc0 printf“sc“, *argv, argc1 n; D mainint argc, char *argv while argc1 printf“s“, *argv;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值