




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 课后习题 1 答案 一、选择题 1、 A 2、 D 3、 C 二、编程题 1. # *n); * *n); *n); ; 2. # *n); *n); *n); *n); ; 2 课后习题 2 答案 一、选择题 1 16、 B 二、填空题 1、 54, 146, 255 2、字母,数字,下划线 3、(换行字符)换行,(退格字符)移动到当前行的前一个位置,(反斜杠字符)产生反斜杠字符 4、 后习题 3 答案 一、选择题 1 16、填空题 1、 、 12, 4 3、 m/100, m/10%10, m%10 4、(注:表示空格) 12# 12 # 3 # 5、 55, A, B 三、编程题 1. #I # r,s,l; %f,&r); /*输入圆的半径 */ s= PI*r*r; /*计算圆的面积 */ l=2*PI*r; /*计算圆的周长 */ r=%s=%l=%n,r,s,l); ; 运行结果: 3 r= 3.0,s=28.3,l= # x,y,z,s,v; %f%f%f,&x,&y,&z); /*输入长方体的长、宽和高 */ s=2*(x*y+x*z+y*z); /*计算长方体的表面积 */ v=x*y*z; /*计算长方体的体积 */ n,s,v); 4 ; 运行结果: 3 4 5 # x1,y1,x2,y2,x3,y3,a,b,c,p,s; /*输入 3个顶点的坐标 */ %f%f%f%f%f%f,& /*求第一条边的长度 */ a=(; /*求第二条边的长度 */ b=(; /*求第三条边的长度 */ c=(; p=(a+b+c)/2; /*求三角形的面积 */ s=p*(; fn,s); ; 运行结果: 5 6 3 8 0 23 课后习题 4 答案 一、选择题 1 6 、填空题 1、 0 2、 y%2或 y%2=1 3、 (| (& & & & a+cb & b+ca a=b & b=c a=b | a=c | b=c 9、 0、 x a,b,%d,%d,&a,&b); if(a*a+b*b100) a*a+b*b)/100; a+b; %d, ; 运行结果: ( 1)测试数据一: 3 4 7 ( 2)测试数据二: 9 5 1 2. # x; y; %d,&x); if(x %d,& /*输入百分制成绩 */ 0) 0: : A; : B; : C; 8 : D; E; %cn, ; 运行结果: 96 A 4. # i; i=1;i n,i,j; 请输入行数: ); %d,&n); /*外层循环控制输出的行数 */ i=1;i # n; x,an,10 x:); %&x); ; ; n=1; (-x*x)/(n+1)*(n+2); n+=2; = %n,x, ; 课后习题 5 答案 一、选择题 1 、填空题 1、 j=2 j=0 2、 he 3、 j+=2 aiaj 4、 #&*&% 三、编程题 1. 11 # 30 ,i,j,; ; i=0;i # 5 # 4 12 N=1,2,3,4,5,6,7,8,9,10,11,12, 13,14,15,16,0,0,0,0; i,j; j=0;j # 5 # 4 aMN; i,j,请输入 %d*%: n,M,N ); i=0;i # 40 ,i,j=0,=(,m,a,x,); 输入一个字符串: ); 14 ; /*假设字符串的第一个字符最大 */ ; /*字符串中最大字符的下标置为 0*/ i=1; i;/*字符串中最大的字符存放到 ; /*字符串中最大的字符的下标存放到 */ /*字符串最大的字符后的字符依次往后移动 5个字符 */ i=ii+5=i; /*字符串最大的字符后插入字符串“ ( */ i=;i # 40 # 20 15 ,i=0,j=0; 请输入字符串 a: ); 请输入字符串 b: ); /*找到 (i!=0) i+; if( 6 /*学生的学号数组 */ 9=99077101,99077102,99077103,99077104, 99077105,99077106,; /*学生的姓名数组 */ 8=张红 ,王建 ,王连 ,李立 ,刘虹 , 丁平 ,; /*学生的四门课程数组 */ 17 4=85,90,92,88,90,95,95,90,76,78,80,70, 56,36,66,97,78,79,87,89,89,79,70,87,i,j,k; , /*学生平均分数组 */ /*求每个学生 4门课程成绩的总分 平均分 i=0;j+1) /*交换平均成绩 */ j; j=j+1; j+1=*交换学号 */ j); j,j+1); j+1, 18 /*交换姓名 */ j); j,j+1); j+1, /*交换成绩 */ k=0;k ( a; a ); %d,&a); F(a)=0) 不是水仙花数。 n); 是水仙花数。 n); ; (a) b,c,d; 20 b=a/100; /*百位 */ c=a%100/10; /*十位 */ d=a%10; /*个位 */ a=b*b*b+c*c*c+d*d*d) ; ; 2 #,) i,f=0,n=0,j=0; i=0;i=0&i s,a,b, if(a=b) if(sa) a); a+b)/2; 22 if( s,b,; if(s ( 2)非递归程序 #s,a,b, ; ; 1; 课后习题 7 答案 23 一、选择题 1 1、填空题 1、 30 2、 12,10,10,12 3、 *(p+a) 4、 *p 、 4 6、 9876876 7、 *(p+4*i+j) 8、 pij 或 *(*(p+i)+j) 或 (*(p+i)j 9、 p *q /*函数功能:将字符串 函数参数:字符串指针 符串指针 数返回值: 24 /*获取 ( p1=p2=*将 ( *; /*0; 0; 0; %s, 逆序后的字符串为: %sn, ; 运行结果: 序后的字符串为: . 25 方法一: #*函数功能:将书名按照由大到小的顺序排序 函数参数:书名的二维数组 的本书 n 函数返回值: 8,n) ; i,j; i=1; ; j); j, /*函数功能:输出各字符串 函数参数:书名的二维数组 的本书 n 函数返回值: 8,n) i; i=0;i #*函数功能:将书名按照由大到小的顺序排序 函数参数:指针数组 组元素个数 n 函数返回值: ,n) i,j; i=1; 27 j; j= /*函数功能:输出各字符串 函数参数:指针数组 组元素个数 n 函数返回值: ,n) i; i=0;、 、 2 3 4、 2002、 6、 7、 z; 8、 13431 9、 () ; (); h); 或 h; 10、 三、编程题 1. 难度系数 : 解题思路 :用 组存放非闰年和闰年各月份的天数。对于年 断其是否为闰年的条件为: =0&00!=0|00=0); 用一个结构体类型 程序如下 : 29 #*数组 213=0,31,28,31,30,31,30,31,31,30,31,30,31, 0,31,29,31,30,31,30,31,31,30,31,30,31; /*日期 构体 */ *函数功能:求指定日期是该年的第几天 函数参数:年 数返回值:整数第几天 i,*是闰年 ,非闰年 */ =0&00!=0|00=0); i=1;i;i+) i; *i; * k,) /*用户选择:起到菜单的作用 */ 1:日期天数 ,天数日期 出 n 请选择: n); %d,&k); if(k=1) 输入日期(年 月 日): n); %d%d%d,& %n,; if(k=2) 输入年份 天数: n); %d%d,& 31 对应日期是 %n, ; 运行结果 : 2. 难度系数 : 算法设计 : 定义学生链表节点。 参照教材中的程序 8义创建链表函数 示链表节点数据信息函数 放链表所有节点内存函数 中创建链表函数序 8本题中新创建节点是插入到链表的头部。 32 数中依次调用 数实现链表的创建, 数实现链表元素的显示, 程序如下: #*学生链表节点 */ /*学号 */ 0; /*姓名 */ /*年龄 */ *指针域 ; /*函数功能:创建 1个链表,当输入的学号为 0时,建立链表结束 函数参数:无 函数返回值:创建链表的头指针 */ /*p; 0; 请输入学生的学号: ); %d,& ; 请输入学生的姓名: ); 请输入学生的年龄: ); 33 %d,& 0)/*当输入的学号为 0 时,建立链表结束 */ /*为新添加的节点申请内存 */ p=(); if(p=*若申请内存失败,打印错误信息,退出程序 */ 开辟内存失败 ); ); p-*为新添加节点的学号域赋值 */ p-*为新添加节点的姓名域赋值 */ p-*为新添加节点的年龄域赋值 */ p-*将新添加节点置为链表尾 */ if(*若原链表为空表,则将新添加节点设为首节点 */ p; /*若原链表为非空,则将新节点添加到链表头 */ p-*新节点添加到链表头 */ p;/*头指针指向新添加节点 */ 请输入学生的学号: ); %d,& ; 请输入学生的姓 名: ); 请输入学生的年龄: ); 34 %d,& *返回链表的头指针 */ /*函数功能:显示所有已经建立好的节点中数据项的内容 函数参数:链表的头指针 函数返回值:无 */ p=链表的所有节点数据为: n); p!=*若不是表尾,则循环打印 */ %8d%10s%8dn,p-p-p- p=p-*p 指向下一个节点 */ /*函数功能:释放 函数参数:链表的头指针 函数返回值:无 */ p=p!=*若不是表尾,则释放节点占用的内存 */ p; p=p-*让 (*释放 ;/*创建链表 */ *显示链表中节点信息 */ *释放链表节点信息 */ ; 运行结果: 3. 难度系数 : 算法设计: 定义链表节点。 参照教材中的程序 8义创建链表函数 放链表所有节点内存函数 创建查找链表中数据域的值为 节点函数 环遍历链表中的每一个节点,如果找到,函数返回 1;如果未找到,函数返回 0。 36 数实现查找,打印输出查找结果, 程序如下: #*链表节点 */ /*数据域 */ *指针域 */ ; /*数功能:查找链表中数据域的值为 节点 函数参数:链表头指针 查找的值 数返回值:若找到,返回 1,若未找到,返回 0 p=p!=*若不是表尾,则循环查找 */ if(p-*找到了链表中的数据域的值为 ; 如果未找到,让 ; 37 /*数功能:创建一个链表,当输入的数为 0 时,建立链表结束。 函数的参数:无 函数的返回值:创建链表的头指针 /*p; x; 请输入一个整数,输入 0时,建立链表结束: ); %d,&x); /*输入节点数据 */ x!=0) /*当输入的数为 0时,建立链表结束 */ /*为新添加的节点申请内存 */ p=(); if(p= /*若申请内存失败,打印错误信息,退出程序 */ 开辟内存失败 n); ); p-x; /*为新添加节点的数据域赋值 */ p- /*将新添加节点置为表尾 */ /*若原链表为空表,则将新添加节点设为首节点 */ if(= p; /*若原链表为非空,则将新建节点添加到表尾 */ 38 p; /*将新添加节点置为表尾 */ p; /*尾指针指向新添加节点 */ 请输入一个整数,输入 0 时,建立链表结束: ); %d,&x); /*返回链表的头指针 */ /*数功能:释放 向的链表中所有节点占用的内存。 函数的参数:链表的头指针 函数的返回值:无 p=p!= /*若不是表尾,则释放节点占用的内存 */ p; /*保存当前节点指针 */ p=p- /*让 ( /*释放 39 ; /*创建链表 */ 请输入待查找的值: ); %d,& /*查找链表中数据域的值为 数返回值放到 */ if(1) 找到了待查找的值: %dn, if(0) 未找到! n); /*释放链表节点信息 */ ; 运行结果: ( 1)未找到的测试数据。 ( 2)找到了的测试数据。 4. 40 难度系数 : 算法设计: 定义链表节点。 参照教材中的程序 8义创建链表函数 示链表节点数据信息函数 放链表所有节点内存函数 中创建链表函数程序 8 数不同之处在于:程序 8创建节点插入到链表的尾部,而本题中是从数组 建新节点,插入到链表的头部。 数实现链表节点数据域信息的输出, 程序如下: # 6 /*链表节点 */ /*数据域 */ *指针域 */ ; /*数功能:数组 xn中存放的数据,逆序创建链表 H。 函数的参数:数组 x 数组元素 n 函数的返回值:创建链表的头指针 x,n) /*p; 41 i; i=0;xi; /*为新添加节点的数据域赋值 */ p- /*将新添加节点置为表尾 */ /*若原链表为空表,则将新添加节点设为首节点 */ if(= p; /*若原链表为非空,则将新建节点添加到表头 */ p- /*将新添加节点置为表头 */ p; /*头指针指向新添加节点 */ /*返回链表的头指针 */ /*数功能:显示所有已经建立好的节点中数据项的内容。 函数的参数:链表的头指针 42 函数的返回值:无 p=链表的所有节点数据为: n); p!= /*若不是表尾,则循环打印 */ %5d,p- /*打印节点的数据 */ p=p- /*让 p 指向下一个节点 */ n); /*数功能:释放 向的链表中所有节点占用的内存。 函数的参数:链表的头指针 函数的返回值:无 p=p!= /*若不是表尾,则释放节点占用的内存 */ p; /*保存当前节点指针 */ p=p- /*让 ( /*释放 43 =1,2,3,4,5,6; ); /*创建链表 */ /*显示链表中的节点数据域信息 */ /*释放链表节点信息 */ ; 运行结果: 5. 难度系数 : 算法设计: 定义链表节点。 参照教材中的程序 8义创建链表函数 示链表节点数据信息函数 放链表所有节点内存函数 创建 数合并两个链表,使得新链表节点元素按照递增顺序排列。 数中依次调用 数实现链表 A 和 B 的创建, 数实现链表 的合并, 程序如下: #*链表节点 */ 44 /*数据域 */ *指针域 */ ; /*数功能:将两个元素已按升序排序的链表合并为一个新链表。 函数的参数:链表头指针 表头指针 数的返回值:合并后的新链表头指针 pA, r,*p,*q; /*为合并后的新链表节点申请内存 */ ); if( /*若申请内存失败,打印错误信息,退出程序 */ 开辟内存失败 n); ); *节点的指针域置为 r=*保存 ;/* ;/*(p&q)/*p 不为 继续循环 */ /*如果 链表节点小,则将 (p- r-p;/*新链表节点的指针域存放 ;/*新链表节点指针存放 *A 链表节点指针指向下一个节点 */ /*如果 链表节点大,则将 r-q;/*新链表节点的指针域存放 ;/*新链表节点指针存放 *B 链表节点指针指向下一个节点 */ if(q)/*q; if(p)/*p; *返回合并后的新 链表指针 */ /*数功能:创建一个链表,当输入的数为 0 时,建立链表结束。 函数的参数:无 函数的返回值:创建链表的头指针 /*p; x; 46 请输入一个整数,输入 0时建立链表结束: ); %d,&x); /*输入节点数据 */ x!=0) /*当输入的数为 0时,建立链表结束 */ /*为新添加的节点申请内存 */ p=(); if(p= /*若申请内存失败,打印错误信息,退出程序 */ 开辟内存失败 n); ); p-x; /*为新添加节点的数据域赋值 */ p- /*将新添加节点置为表尾 */ /*若原链表为空表,则将新添加节点设为首节点 */ if(= p; /*若原链表为非空
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论