收藏 分享(赏)

C语言指针练习+答案+讲解.doc

上传人:HR专家 文档编号:6873743 上传时间:2019-04-25 格式:DOC 页数:22 大小:105.50KB
下载 相关 举报
C语言指针练习+答案+讲解.doc_第1页
第1页 / 共22页
C语言指针练习+答案+讲解.doc_第2页
第2页 / 共22页
C语言指针练习+答案+讲解.doc_第3页
第3页 / 共22页
C语言指针练习+答案+讲解.doc_第4页
第4页 / 共22页
C语言指针练习+答案+讲解.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、第七章 指针71 选择题1 若有说明:int a=2, *p=,则以下非法的赋值语句是(D) 。A p=q; B *p=*q; C a=*q; D q=a;a 是整型数,int *p,*q 定义了指针,p,q 是指向整型的指针。p 取得 a 的地址,而 q 取得 p 的地址p,q 是指针(也就是一个地址) ,而*p 和*q 是这个指针指向的整型数值(存放在这个地址的值) 。A) 把 q 的地址赋给 p,则 p 和 q 完全一样了,都指向一个数 2B) 把 q 中数据个 pC) 把 q 中数据给 aD) a 中数据是 2,不能够给一个地址。除非*q=a2 若定义:int a=511, *b=的输

2、出结果为:D A 无确定值 B a 的地址 C 512 D 511int a=511,*b=a 是整形变量b 是整形指针变量,指向 aprintf(“%dn“,*b);就是输出指针变量 b,所指变量的值输出结果 5113 已有定义 int a=2, *p1= 下面不能正确执行的赋值语句是(B) 。A a=*p1+*p2; B p1=a; C p1=p2; D a=*p1*(*p2);47、已知在程序中定义了如下的语句:int *P1,*P2;int k;p1=p2=则下列语句中不能正确执行是( B )A、k=*P1+*P2; B、p2=k; C、P1=P2; D、K=*P1 * (*P2);P

3、1 P2 是指针,K 是整型变量,变量怎么可以赋值给指针呢?A 其实是执行了 K=K+K(P1 和 P2 都指向 K,所以*P1 *P2 其实都是指 K)C 是赋值语句D 其实执行了 K=K*K4 变量的指针,其含义是指该变量的(B) 。A 值 B 地址 C 名 D 一个标志5 若有说明语句:int a, b, c, *d= B scanf(“%d%d%d“, a, b, d);C scanf(“%d%d%d“, D scanf(“%d%d%d“, a, b,*d);对于 int c,*d=,c 是一整型数据,d 是一指针,它指向变量 c(即 d= 也可以用scanf(“%d“,d);6 若已

4、定义 int a=5; 下面对(1) 、 (2)两个语句的正确解释是(D) 。(1) int *p= (2) *p=a;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。A:(1):*p,定义 p 为 int 类型指针(2):*p,表示 p 所指向的变量B(1)把变量 a 的地址赋给指针变量 p(2)把变

5、量 a 的值,赋值给 P所指向的变量C 前半句正确,后半句错误, (2)是把变量 a 的值赋值给 P 所指的变量。7 若有语句 int *p, a=10; p= 下面均代表地址的一组选项是(D) 。A a, p, * 则正确的赋值语句是() 。BA p=x; B p= C *p=x; D *p=9 若有说明:int *p, a=1, b; 以下正确的程序段是(B) 。A p= B scanf(“%d“, scanf(“%d“, *p=b;C p= D p=scanf(“%d“, *p); *p=a;A,B 中 p 是 b 的地址 那么如果要输入 b 应该是 scanf(“%d“, p);C 中

6、 p 还没定义 给*p 赋值就是给一个没有开辟的地址赋值了D 是正确的 意思是 p 为 b 的地址,将 p 地址上的数变成 a, 等价于 b=a10有如下语句:int m=6, n=9, *p, *q; p= q= 如图 1 所示,若要实现下图所示的存储结构,可选用的赋值语句是(C) 。A *p=*q; B p=*q;0.2345p xmpnqpmqnC p=q; D *p=q;11以下程序中调用 scanf 函数给变量 a 输入数值的方法是错误的,其错误原因是(B) 。#include main() int *p, *q, a, b;p=printf(“input a:“);scanf(“%

7、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 10main() char sN81, * t;int j;for (j=0; jmain() int a, b, k=4, m=6, *p=a=p=b=(-*p)/(*q)+7;printf(

8、“a=%dn“, a);printf(“b=%dn“, b);【1】 A -1 B 1 C 0 D 4【2】 A 5 B 6 C 7 D 1032下面程序的功能是将字符串 s 的所有字符传送到字符串 t 中,要求每传递三个字符后再存放一个空格,例如字符串 s 为“abcdefg“,则字符串 t 为“abc def g“,请选择填空。C A#include “stdio.h“#include “string.h“main() int j, k=0;char s60, t100, *p;p=s;gets(p);while(*p) for (j=1; js B t=s C *ts0 D *t=s0【

9、2】A t+ B s- C t- D w-35以下程序的功能是删除字符串 s 中的所有空格(包括 TAB 符、回车符) ,请填空。AC#include “stdio.h“#include “string.h“#include “ctype.h“main() char s80;gets(s);delspace(s);puts(s);delspace(char *t) int m, n;char c80;for(m=0, n=0; 【1】; m+)if (!isspace(【2】) /*C 语言提供的库函数,用以判断字符是否为空格*/cn=tm;n+;cn=0;strcpy(t, c);【1】A

10、tm B !tm C tm=0 D tm=0【2】A t+m B *cm C *(t+m) D *(c+m)36下面程序的功能是统计字串 sub 在母串 s 中出现的次数。请选择填空。BC#include “stdio.h“#include “string.h“main() char s80, sub80;int n;gets(s);gets(sub);printf(“%dn“, count(s,sub);int count( char *p, char *q) int m, n, k, num=0;for (m=0; pm; m+)for (【1】, k=0; qk=pn; k+, n+)i

11、f(q【2】=0) num+; break;return (num);【1】A n=m+1 B n=m C n=0 D n=1【2】A k B k+ C k+1 D +k37下列程序的输出结果是(C) 。#include “stdio.h“main() int a=1,2,3,4,5,6,7,8,9,0, *p;p=a;printf(“%dn“, *p+9);A 0 B 1 C 10 D 938以下程序的输出结果是(C) 。#include “stdio.h“char cchar(char ch)if (ch=A printf(“%dn“, strlen(b2);A 8 B 3 C 1 D 7

12、40有以下程序#include “string.h“#include “stdio.h“main() char *p=“abcde0fghjik0“;printf(“%dn“, strlen(p);程序运行后的输出结果是(D) 。 A 12 B 15 C 6 D 541有以下程序void ss( char *s, char t) while (*s) if (*s=t) *s=t-a+A;s+;main() char str100=“abcddfefdbd“, c=d;ss(str, c);printf(“%sn“, str1);程序运行后的输出结果是(B) 。AABCDDEFEDBD B a

13、bcDDfefDbD C abcAAfefAbA D Abcddfefdbd42以下程序调用 findmax 函数返回数组中的最大值。在下面划线处应填入的是(B) 。#include “stdio.h“findmax( int *a, int n) int *p, *s;for (p=a, s=a; p-as B *p*s C apas D p-ap-s43有以下程序 A#include “stdio.h“#include “malloc.h“main()char *q, *p;p=(char*) malloc (sizeof(char) *20); /*为指针 p 分配一个地址*/q=p;s

14、canf(“%s%s“, p, q);printf(“%s %sn“, p, q);若从键盘输入:abc def,则输出结果是:A def def B abc def C abc d D d d44下面程序的运行结果是(D) 。#include “stdio.h“#include “string.h“fun( char *s) char t10;s=t;strcpy(t, “example“);main() char *s;fun(s);puts(s);Aexample Bexample Cexample D不确定的值45下列程序段的输出结果是(A) 。#include “stdio.h“vo

15、id fun( int *x, int *y) printf(“%d%d“, *x, *y);*x=3;*y=4;main() int x=1, y=2;fun(printf(“%d %d“, x, y);A 2 1 4 3 B 1 2 1 2 C 1 2 3 4 D 2 1 1 246下列程序的输出结果是(C) 。#include “stdio.h“main()char a10=9,8,7,6,5,4,3,2,1,0, *p=a+5;printf(“%d“, *-p);A 非法 B a4的地址 C 5 D 347有以下程序#include “stdio.h“#include “string.h“main(int argc, char *argv) int m, length=0;for (m=1;m1)printf(“%s%c“, *argv, (argc1)? n: );B main( int a, char * b) while (a1)printf(“%sn“, *+b);C main( int argc, char *argv) while (+argc0)printf(“%s%c“, *+argv, (argc1) ? :n);D main(int argc, char *argv) while (argc1)printf(“%s“, *+argv);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报