




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上习题解答一、单项选择题1. 若定义了int n=2, *p=&n, *q=p;则下面【 】的赋值是非法的。A. p=qB. *p=*qC. n=*qD. p=n【答案】D2. 若定义了double *p, a;则能通过scanf函数给输入项读入数据的程序段是【 】。A. p=&a; scanf(“%1e”,p);B. *p=&a; scanf(“%1f”,p);C. p=&a; scanf(“%f”,p);D. p=&a; scanf(“%1f”,a);【答案】C3. 若定义了int a10, i=3, *p; p=&a
2、5;下面不能表示为a数组元素的是【】。A. p-5B. ai+5C. *p+D. ai-5【答案】D4. 若有如下定义:int n5=1,2,3,4,5,*p=n;则值为的表达式是【】。A. *+5B. *(p+5)C. *p+=4D. p+4【答案】C5. 设变量b的地址已赋给指针变量ps,下面为“真”的表达式是【】。A. b=&psB. b=psC. b=*psD. &b=&ps【答案】C6. 设有以下定义和语句:int a32=1,2,3,4,5,6,*p3;p0=a1;则*(p0+1)所代表的数组元素是【】。A. a01B. a10C. a11D. a12【答案
3、】C7. 若定义了char *str=”Hello!”;下面程序段中正确的是【】。A. char c , *p=c; strcpy(p,str);B. char c5, *p; strcpy(p=&c1,&str3);C. char c5; strcpy(c,str);D. char c5; strcpy(p=c+2,str+3);【答案】B8. 若有下面的程序段,则不正确的fxy函数的首部是【】。main() int a20, n; fxy(n, &a10); A. void fxy(int i, int j)B. void fxy(int x, int *y)C.
4、void fxy(int m, int n)D. void fxy(int p, int q10)【答案】A9. 不合法的带参数main函数的首部形式是【】。A. main(int argc, char *argv)B. main(int i, char *j)C. main(int a, char *b)D. main(int argc, char *argv10)【答案】A10. 设有如下定义int (*pt)( );则以下叙述中正确的是【】。A. pt是指向一维数组的指针变量B. pt是指向整型数据的指针变量C. pt是一个函数名,该函数的返回值是指向整型数据的指针D. pt是指向函数的
5、指针变量,该函数的返回值是整型数据【答案】D二、填空题1. 请指出在int *p3;定义中p是【】。在int (*q)();定义中q是【】。【答案】【1】整型指针数组;【2】指向返回值是整型的函数指针2. 若有如下定义,则使指针p指向值为20的数组元素的表达式是p+=。int a6=1,5,10,15,20,25,*p=a;【答案】43. 执行以下程序段后,x的值为。int a32=1,2,10,20,15,30;int x, *p;p=&a00;x=(*p)*(*(p+3)*(*(p+5);【答案】6004. 请填空将函数补充完整,使得add函数具有求两个数之和的功能。void ad
6、d(int a, int b, 【1】c)【】=a+b;【答案】【1】int *;【2】*c5. 下面程序的功能是输出数组中的最大值,由s指针指向该元素,请将该程序补充完整。main() int a8=6,7,2,9,1,10,5,8,*p,*s; for (p=a,s=a;p-a<8;p+)if () s=p; printf(“max:%dn”,*s);【答案】*p>*s6. 下面程序的功能是通过调用aver函数,计算数组中各元素的平均值。请将该程序补充完整。float aver(int *a, int n) int i; float x=0.0; for (i=0;i<n
7、;i+)x+=【1】; x=【】; return x;main() int m=2,1,7,4,5,9,6; float avg; avg=aver(m,7); printf(“average=%fn”,avg);【答案】【1】ai或*(a+i);【2】x/n7. 下面函数的功能是计算指针p所指向的字符串中的字符个数。请将该程序补充完整。unsigned int MStrlen(char *p)unsigned int len;len=0;for (; *p!= 【1】; p+)len 【2】;return 【3】;【答案】【1】0;【2】+;【3】lenunsigned int MStrle
8、n(char s)char *p=s;while(*p!= 【1】)p+;return 【2】;【答案】【1】0;【2】p-s8. 下面函数的功能是对两个字符串进行比较,返回两个字符串中第一个不同字符的ASCII值之差。例如,字符串“abcd”和“abm”,输出-10。请将该程序补充完整。int cmp(char *p, char *q) while (*p=*q && *p!= 【1】) p+; q+; return(【】);【答案】【1】0;【2】*p-*q9. 下面程序的功能是输出命令行的参数,若程序生成的可执行文件为file.exe,则执行该程序时键入命令:file N
9、EW BEIJING程序输出结果为:NEW BEIJING请将该程序补充完整。main(int argc, char *argv) while(-argc【1】)argv+;printf(“%s”, 【】);【答案】【1】>0;【2】*argv三、阅读程序,写结果1. #include <stdio.h>void fact(int m, int n, int *p1, int *p2)*p1=2*m+n;*p2=m-n/2;main()int a,b,c,d;a=4; b=7;fact(a,b,&c,&d);printf(“%d%dn”,c,d);【答案】15
10、 12. #include <stdio.h>main()char str=”abcxyz”,*p;for (p=str;*p;p+=2)printf(“%s”,p);printf(“n”);【答案】abcxyzcxyxyz3. #include <stdio.h>main()static int x=1,2,3;int s,i,*p=NULL;s=1;p=x;for(i=0;i<3;i+)s*=*(p+i);printf(“%dn”,s);【答案】64. #include <stdio.h>main()int a=1,2,3,4,5;int *p=N
11、ULL;p=a;printf(“%d, ”,*p);printf(“%d, ”,*(+p);printf(“%d, ”,*+p);printf(“%d, ”,*(p-);printf(“%d, ”,*p+);printf(“%d, ”,*p);printf(“%d, ”,+(*p);printf(“%d, ”,*p);【答案】1, 2, 3, 3, 2, 3, 4, 4, 5. #include <stdio.h>char b=”program”;char *a=”PROGRAM”;main()int i=0;printf(“%c%sn”,*a,b+1);while(putchar
12、(*(a+i)i+;printf(“i=%dn”,i);while(-i)putchar(*(b+i);printf(“n%sn”,&b3);【答案】ProgramPROGRAM i=7margorgram四、编程题1. 编写函数,对传送过来的三个数选出最大和最小值,并通过形参传回调用函数。【参考程序】#include <stdio.h>void find_maxmin(int a,int b,int c,int *max,int *min)*max=*min=a;if (*max<b) *max=b;if (*min>b) *min=b;if (*max<
13、;c) *max=c;if (*min>c) *min=c;return;void main()int a, b, c;int max, min;printf("Please input 3 numbers:");scanf("%d%d%d",&a,&b,&c);find_maxmin(a,b,c,&max,&min);printf("n the max is %d, the min is %dn",max,min);2. 求一个3×3二维数组主对角线元素之和。【参考程序】#in
14、clude <stdio.h>void main()int a33,i,j;int sum;/输入3×3二维数组printf("Please input 3*3 numbers:");for (i=0;i<3;i+)for (j=0;j<3;j+)scanf("%d",&aij);sum=0;/求主对角线元素之和for (i=0;i<3;i+)sum+=aii;printf("n the main diagonal sum is %dn",sum);3. 有n个整数,使前面各数顺序向后移
15、动m个位置,最后m个数变成最前面m个数,见图?。写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。 n-m m图 6-22 题3示意【参考程序】#include <stdio.h>#define N 5void move_num(int *a, int m)int i,bN;/将a数组复制到b数组for (i=0;i<N;i+)bi=ai;/将b数组的元素移动m位复制到a数组for (i=0;i<N;i+)a(i+m)%N=bi;void main()int aN,m,i;printf("Please input %d numbers:&quo
16、t;,N);for (i=0;i<N;i+)scanf("%d",&ai);printf("nPlease input move number:");scanf("%d",&m);move_num(a,m);printf("nafter move:");for (i=0;i<N;i+)printf("%d ",ai);4. 用指针参数编写一个字符串连接的函数 radd(char *s,char *t,int f),其中f为标志变量,当f=0时,将s指向的字符串连接到t
17、指向的字符串的后面;当f=1时,将t指向的字符串连接到s指向的字符串的后面。并写出调用该函数的完整程序。【参考程序】#include <stdio.h>#include <string.h>void radd(char *s,char *t,int f)char *tmp;int i=0;if (f=0) /标志变量为0,交换s和t的指向tmp=t;t=s;s=tmp;while (*s!='0') s+;/将s移动到字符串末尾while (*(t+i)!='0') /将t字符串复制到s中*(s+i)=*(t+i);i+; *(s+i)=
18、0;/加上字符串结束标志void main()char s40, t40;int f;printf("Please input 2 strings:");gets(s);gets(t);printf("Please select string add direction:");scanf("%d",&f);radd(s,t,f); printf("nafter string add:");puts(s);puts(t);5. 编写程序,利用指向函数的指针实现求1到n的和与阶乘。【参考程序】#include <stdio.h>long n_sum(int n) /求1到n的和long s=0;int i=0;for (i=1;i<=n;i+)s=s+i;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天津市五所重点学校2022-2023学年高一下学期期中联考数学试题 无答案
- 安全员年审培训课件
- 安全出行课件小班
- 公民对行政行为的法律救济试题及答案
- 护理工作的基本原则与试题及答案
- 探索执业护士考试的试题及答案
- 团队合作护理试题及答案技巧
- 自考行政管理专科项目管理内容及试题及答案
- 2025年自考行政管理快速复习试题及答案
- 球体体积公式推导课件
- 商业地产运营管理作业指导书
- 个人信息安全保密协议
- 六年级数学竞赛试题及答案(六套)
- DBJ50T-476-2024 市政管网监测技术标准
- 2024-2030年中国智能音箱行业消费态势及投资潜力预测报告
- 反比例函数函数K的几何意义市公开课一等奖省赛课获奖课件
- 2024-2030年中国回收聚对苯二甲酸乙二酯(PET)行业市场发展趋势与前景展望战略分析报告
- 会议保障实施方案
- JGJ196-2010建筑施工塔式起重机安装、使用、拆卸安全技术规程
- 监狱餐厅承包协议
- (正式版)SH∕T 3541-2024 石油化工泵组施工及验收规范
评论
0/150
提交评论