ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:20.82KB ,
资源ID:3990814      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3990814.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C指针函数习题.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C指针函数习题.docx

1、C指针函数习题C+指针函数习题一、选择题1以下程序的运行结果是( )。sub(int x, int y, int *z) *z=y-x; void main() int a,b;sub(10,5,&a);sub(7,a,&b);couta”,”b;A) 5, 2 B) -5,-2 C) -5,-12 D) 5, -22. 函数调用过程中,如果函数funA调用了函数 funB,函数funB又调用了函数funA,则()。A)称为函数的直接递归调用 B)称为函数的间接递归调用C)称为函数的循环调用 D)C语言中不允许这样的递归调用3变量的指针,其含义是指该变量的( )。A)地址 B) 值 C)名 D

2、)一个标志4.已有定义 int k=2; int * ptr1,* ptr2; 且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是( )。A)k=*ptr1 + *ptr2; B)ptr2=k; C)ptr1=ptr2; D)k=*ptr1*(*ptr2);5.(去掉)若有说明语句:double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是 A)*p=&a; scanf(“%lf”,p); B)*p=&a; scanf(“%f”,p); C) p=&a; scanf(“%lf”,*p); D)p=&a; scanf(“%lf”,p); 6.若有语句int *po

3、int,a=4;和point=&a;下面均代表地址的一组选项是( )。A)a,point,*&a B)&*a,&a,*point C)*&point,*point,&a D)&a,&*point,point7.设char *s=ta103bc;则指针变量s指向的字符串所占的字节数是( )。A)9 B)5 C)6 D)78.下面程序段的运行结果是( )。char *s=abcde; s+=2; couts;A)cde B)字符c C)字符c的地址 D)无确定的输出结果9.设有下面的程序段:则下列叙述正确的是( )。char s=china; char * p; p=s;A)s和p完全相同 B)数

4、组s中的内容和指针变量p中的内容相等C) *p与s0相等 D) s数组长度和p所指向的字符串长度相等10.若有定义 int a5, * p=a; 则对a数组元素的正确引用是( )。A)*&a5 B)a+2 C)*(p+5) D)*(a+2)11.若已定义char s10; 则在下面表达式中不表示s1的地址的是( )。A)s+1 B)s+ C)&s0+1 D)&s112.下面程序的运行结果是( )。#include#includeint main() char * s1=AbDeG;char * s2=Abdeg;s1+=2; s2+=2;coutstrcmp(s1,s2);A)负数 B) 正数

5、 C)零 D)不确定的值13.若有定义: int *p4; 则标识符p( )。A)是一个指向整型变量的指针 B)是一个指针数组名C)是一个指针,它指向一个含有四个整型元素的一维数组 D)说明不合法14.若有int a10 , *p=a; 则p+5表示( )。A)元素a5的地址 B)元素a5的值 C)元素a6的地址 D)元素a6的值15.设有以下定义:则正确的叙述是()。char *cc2=1234,5678;A)cc数组的两个元素中各自存放了字符串1234和5678的首地址B)cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址C)cc是指针变量,它指向含有两个数组元素的字符型一维

6、数组D)cc数组元素的值分别是1234和567816.若有以下定义,则能够正确表示数组元素x12的表达式是( )。int x43=1,2,3,4,5,6,7,8,9,10,11,12; int *p=&x00;A)p12 B)(*p+1)+2 C)p+5 D)p517.语句int (*ptr)( );的含义是( )。A)ptr是指向一维数组的指针变量B)ptr是指向int型数据的指针变量C)ptr是指向函数的指针,该函数返回一个int型数据D)ptr是一个函数名,该函数的返回值是指向int型数据的指针18已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是( )。A)

7、p=max; B)*p=max; C)p=max(a,b); D)*p=max(a,b);19.下面程序段的运行结果是( )。char a=language, * p ; p=a;while(*p!=u) cout( *p-32 ); p+; A)LANGUAGE B)language C)LANG D)language20.关于语句 int *ptr( ); 以下说法正确的是( )。A)ptr是一个指针变量 B) *ptr是一个函数名C)这个语句是定义函数的语句 D) ptr是一个函数名,该函数的返回值是指向int型数据的指针21. 以下叙述中正确的是 ()。A)局部变量说明为static存

8、储类,其生存期将得到延长B)全局变量说明为static存储类,其作用域将被扩大C)任何存储类的变量在未赋初值时,其值都是不确定的D)形参可以使用的存储类说明符与局部变量完全相同22. 有以下程序,程序运行后的输出结果是()。 A)64, 28 B)4, 4 C)4, 3 D)64, 64#include # define f(x) (x*x) int main( ) int i1, i2; i1=f(8)/f(4) ; i2=f(4+4)/f(2+2) ; couti1”,”i2; 23.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。 A) 地址传递 B) 单向值传递

9、 C) 由实参传给形参,再由形参传回实参 D) 传递方式由用户指定24.有以下程序 ,#includeint fun(int n) if(n=1) return 1; else return (n+fun(n-1); int main( ) int x; cinx; x=fun(x); coutx; 程序执行时,给变量x输入10,程序的输出结果是 ( )A)55 B) 54 C) 65 D) 4525. 已有定义:char a=xyz, b=x,y,z;,以下叙述中正确的是 ()。A)数组a和b的长度相同 B)a数组长度小于b数组长度C)a数组长度大于b数组长度 D)上述说法都不对26. 以下

10、程序的输出结果是()。#include #includemain() char st20= “hello0t”; coutstrlen(st)”,”sizeof(st); A) 9 9 B) 5 20 C) 13 20 D) 20 2027.当说明一个结构体变量时系统分配给它的内存是( )。A)各成员所需内存量的总和 B)结构中第一个成员所需内存量C)成员中占内存量最大者所需内存 D)结构中最后一个成员所需内存量28.C语言结构体类型变量在程序执行期间( )。A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中C)部分成员驻留在内存中 D)没有成员驻留在内存中29.以下程序的结果是( )

11、。#includestruct WWW int X; int Y; ;void main( ) struct WWW A3=7,8,9,10,12,13; int a; a=A1.X+A2.Y; couta; A) 17 B) 22 C) 16 D) 2130.以下程序的输出结果是( )。struc STU char name10; int num;void f1(struct STU c) struct STU b=“LiSiGuo”,2042; c=b;void f2(struct STU *c) struct STU b=“SunDan”,2044; *c=b;main( ) struc

12、t STU a=“YangSan”,2041, b=“WangYin”,2043; f1(a); f2(&b); couta.num” ,” b.num ;执行后的输出结果是A)2041 2044 B)2041 2043 C)2042 2044 D)2042 2043二、填空题1.若想输出b数组的十个元素,下面存在错误的程序行是 。(每个程序行前面的数字代表行号)1 int main()2 int b10=1,3,5,7,9,2,4,6,8,10,k;3 for(k=0;k10;k+,b+)4 cout*b;5 2.若有定义语句 int x10 , *p=x ; 在程序中引用数据元素xi的四种

13、形是: , , 和xi(假设i已正确说明并赋值)。 3. C+语言中,数组名是一个不可改变的 ,不能对它进行赋值运算;数组在内存中占用一段连续的存储空间,它的首地址由 表示。4.在C+语言中,形参的缺省存储类是 。三、读程序写结果。1. #include int i = 1; test() int i; couti; i = 2; return(i); int main() couti; i = test(); couti/3; 2.下面程序的运行结果是 。#include int main() int x=0,1,2,3,4,5,6,7,8,9;int s,i,*p;s=0;p=&x0;fo

14、r(i=1;i10;i+=2) s+=*(p+i); cout“sum= ”s;return 0;3.下面程序的运行结果是 。#include int main( ) int x4=1,3,5,7;int *p;p=x;Cout(+*p);return 0;四、程序填空。1.以下程序对数组a中的数据进行降序排序,请填空。#define N 10int main() int aN,i,j,k=N; cout“Enter “k” data that will be sortedn”; for(i=0;i*(a+i); for(k=0; ;k+) for(i=0;i N-k;i+) if(*(a+i

15、)*(a+i+1) j=*(a+i); *(a+i)=*( );*( )=j; for(i=0;iN;i+) cout*(a+i); return 0;2.下面程序的功能是将两个字符串s1和s2连接起来,请填空。#include int main() char s180,s280;gets(s1); gets(s2);conj(s1,s2);puts(s1);return 0;void conj(char *p1, char *p2) /此函数实现把字符串p2连接在p1的后面。 while( (*p1) != 0) ; while( (*p2) != 0 ) *p1= ; p1+; p2+;

16、3.下面程序的功能是比较2个字符串的大小,请填空。#include int main() char s180, s280;gets(s1); gets(s2);Cout“Result is: ”comp(s1,s2) ;return 0;/以下函数实现比较2个字符串的大小,若p1比p2大,返回数值1,否则返回数值-1,int comp(char *p1, char *p2) while( (*p1 !=0)&(*p2 !=0) ) if(*p1 != *p2 ) ; p1+; ; if( ) return 1; else return -1;五、编程题。1.编写程序,把一个从键盘输入字符串间隔

17、的输出,请用指针完成。例如:输入字符串:hello,输出:hlo2.编写程序,把一个字符串中的第m个字符开始的全部字符复制生成另一个字符串。要求从键盘输入字符串及m的值并输出生成的字符串。3.请编写一个函数,它的功能是:对一个数组进行从小到大的排序。函数首部为void sort(int a,int n) ,其中a为数组名,n为数组元素的个数。主函数如下,请把子函数补充完整。#include #define N 10int main() int numN,i=0; for(i=0;inumi; /输入数据 sort( num, N); /调用子函数,对数组的元素进行排序。 printf(n排序之

18、后:); for(i=0;iN;i+) coutnumi” ”; /输出数据 return 0;/以下为子函数部分。一 选择题12345678910CBABDDCCCD11121314151617181920BABAADCACD21222324252627282930ACBACBAABA二 填空题第1题3第2题*(x+i)*(p+i)pi第3题地址常量数组名第4题auto三 读程序写结果。1.1,随机数,0,2.Sum=253.2四 程序填空。1.k*p2五 编程题第一题:思路#define N 100int main() char strN; void fun(char *s); /子函数说

19、明 gets(str); /读入字符串 fun(str);/函数调用 return 0;/*以下为子函数,请补充完整 把参数字符串间隔输出要求使用指针,在这里,参数是指针,满足要求在子函数中,使用一个while循环,使得指针每次递增2,输出它所指向的字符即可。也就是说,子函数只需要一个while语句。*/void fun(char *s)。第二题:思路#define N 100int main() char str1N,str2N; int m; void fun(char *s1,char *s2,int n); /函数声明 gets(str1); Cinm; fun(str1,str2,

20、m);/函数调用 puts(str2); return 0;/*以下为子函数部分要求实现把字符串s1中从第n个字符开始的所有数据复制到字符串s2中例如 s1为“students”,n为4,则运算之后,s2应该是“dents”*/void fun(char *s1,char *s2,int n)参考算法,1、找到s1的第n个字符2、开始复制:从当前s1所对应的字符开始,逐个复制到s2里面第三题:思路int n =10; /数组的成员个数int main() int aN; int *p = a; /三个函数,分别是输入,输出,处理数组函数 void scan(int *), print(int

21、*),pro(int *); scan(p); /调用函数,给数组输入数据 coutn原始数据为:n; print(p); /调用函数,输出数组 pro(p); /调用函数,对数组进行处理 coutn交换之后的数据为:n; print(p); /调用函数,输出数组void scan(int *p) /给数组输入数据,数组成员个数为全部变量 n。void print(int *p) /输出数组,数组成员个数为全部变量 n。/*以下为子函数,处理函数,按照要求对数组进行处理,数组的成员个数为全局变量 n*/void pro(int *p) int max=0, min=0; int i, temp; /以下循环求出数组的最大值放在max变量中 for( /以下循环求出数组的最小值放在min变量中 for( /*以下为交换语句 最小的数和第一个数对换 把最大的数和最后一个对换。 */

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1