高级程序设计第8章习题参考答案
更新时间:2024-01-14 17:12:01 阅读量: 教育文库 文档下载
第8章习题 一、选择题
1 C 11 B
2 C 12 D 3 C 13 A 4 C 14 C 5 C 15 C 6 A 7 C 8 D 9 C 10 A 二 填空题
1. 2
2. 6 7 200C 3.p[5]
4. 定义p1为指向整型数据的指针变量
定义p2为指针数组,其数组元素均为指针
定义p3为指向一维数组的指针,其数组元素均为整型数 5. 5,3 6. 20 7. r+b[k] *x
8. SecondLiFirstWang 9. 25
10. 12 12
三 程序分析题
1. 2
2. 1 5 3 3 9 7 3. 2 4
4. abcDDfefDbD 5. 53
四、编程题
1.输入2个字符串,每个字符串的长度均不超过80字符,用自己实现的cmpstr()函数完成这两个字符串的大小比较,cmpstr()函数的功能和字符串比较函数strcmp()的功能相同。
#include
int cmpstr(char *s1, char *s2) { char *p, *q;
p=s1; q=s2; while(*p!='\\0' && *q!='\\0') { if(*p==*q) { p++; q++; } else break; } return *p-*q; }
void main() { char str1[81], str2[81]; int c; printf(\请输入第1个字符串:\ gets(str1); printf(\请输入第2个字符串:\ gets(str2); c=cmpstr(str1,str2); if(c>0) printf(\字符串%s 大于 字符串%s\\n\ else if(c<0) printf(\字符串%s 小于 字符串%s\\n\ else printf(\字符串%s 等于 字符串%s\\n\}
2.定义一个函数float reverse(int p[], int n),该函数有两个参数,第一个参数p为形参数组名,第二个参数n为该数组中的元素个数,要求使用reverse()函数将该数组中的所有元素逆序排列,并返回该数组中所有元素的平均值。
#include
float reverse(int p[],int n) { int i,t; float ave=0; for(i=0;i { t=*(p+i); *(p+i)=*(p+n-i-1); *(p+n-i-1)=t; } return ave; } void main() { int a[10]={1,2,3,4,5,6,7,8,9,10}; int i; float ave; ave=reverse(a, 10); printf(\ for(i=0;i<10;i++) printf(\ printf(\ } 3.定义一个函数delSubstr(),删除字符串中第k个字符开始的m个字符,例如删除字符串abcde第2个字符开始的3个字符,则删除后结果为ae;又如删除字符串abcde第4个字符开始的5个字符,则删除后结果为abc。 #include int delSubstr(char *str, int k, int m) { char *p, *q; if(k<=0||m<=0) return -1; else if(k>strlen(str)) return -2; else if(k+m>strlen(str)) { str[k-1]='\\0'; return 1; } else { p=str+k-1; q=str+k+m-1; while(*q!='\\0') *p++=*q++; *p='\\0'; return 1; } } void main() { char str[81]; int k, m, state; printf(\请输入字符串:\\n\ gets(str); printf(\请输入要删除的子串起始字符的序号和子串长度:\\n\ scanf(\ state = delSubstr(str, k, m); if(state<0) printf(\要删除子串起始字符的序号或子串长度输入错误!\\n\ else printf(\删除指定子串后的字符串为:%s\\n\} 4.定义一个函数delSpechar(),使用字符指针删除字符串中的所有指定字符(如把字符串“I love you!”中的o字符删除,得到“I lve yu!”)。 #include void delSpechar(char *str, char ch) { char *p, *q; p=str; while(*p!='\\0') { if(*p==ch) { q=p; while(*q!='\\0') { *q=*(q+1); q++; } } else p++; } } void main() { char str[81], ch; printf(\请输入一个字符串:\ gets(str); printf(\请输入要从字符串中删除的字符:\ ch = getchar(); delSpechar(str, ch); printf(\删除所有指定字符后的字符串为:%s\\n\} 5.求整型二维数组a[M][N]中的最大元素值及最大元素的位置(用指针法引用数组元素)。 #include void max(int (*pa)[N], int *pRow, int *pCol) { int i, j; for(i=0; i void main() { int a[M][N]={{4,2,7,9},{1,3,13,0},{-5,6,-11,10}}; int row=0, col=0; max(a, &row, &col); printf(\二维数组中的最大元素值为a[%d][%d]=%d\\n\row, col, a[row][col]); } 6.已知字符串str[80],编写函数lstrchar(),实现在数组str中查找字符ch首次出现的位置,如果字符串中找不到该字符,则返回-1。 #include int lstrchar(char *str1, char ch1) { char *p,i=1; p=str1; while(*p!='\\0') { if(*p==ch1) break; else { p++; i++; } } if(*p=='\\0') return -1; else return i; } void main() { char ch,str[80]; int poi; printf(\请输入字符串:\ gets(str); printf(\请输入待查找的字符:\ scanf(\ poi=lstrchar(str,ch); if(poi==-1) printf(\字符串中不存在指定字符!\\n\ else printf(\该字符在字符串中出现的第一个位置为%d\\n\} 7.定义一个整型二维数组并初始化,编程求该数组所有元素的和。 要求:分别用数组下标法、一级指针法、二级指针法实现。 /*数组下标法*/ #include int sum(int b[M][N]) { int i, j, s=0; for(i=0; i void main() { int a[M][N]={{4,2,7,9},{1,3,13,0},{-5,6,-11,10}}; printf(\二维数组中的所有元素之和为%d\\n\} /*一级指针法*/ #include void main() { int a[M][N]={{4,2,7,9},{1,3,13,0},{-5,6,-11,10}}; printf(\二维数组中的所有元素之和为%d\\n\} /*二级指针法*/ #include int sum(int (*pa)[N]) { int i,j,s=0; for(i=0;i void main() { int a[M][N]={{4,2,7,9},{1,3,13,0},{-5,6,-11,10}}; printf(\二维数组中的所有元素之和为%d\\n\} 8.输入一行数字字符存入字符数组str[80]中,用num[10]中的数组元素作为计数器来统计每个数字字符的个数。用下标为0的元素统计字符“0”的个数,用下标为1的元素统计字符“1”出现的次数,……。输出每个奇数字符出现的次数。 #include void count(char *str, int num[]) { int i=0; while(str[i]!='\\0') { switch(str[i]) { case '0': num[0]++; break; case '1': num[1]++; break; case '2': num[2]++; break; case '3': num[3]++; break; case '4': num[4]++; break; case '5': num[5]++; break; case '6': num[6]++; break; case '7': num[7]++; break; case '8': num[8]++; break; case '9': num[9]++; break; } i++; } } void main() { char str[80],*p=str; int num[10]={0}, i; printf(\请输入一行数字字符:\ gets(p); count(p,num); for(i=1;i<10;i+=2) printf(\数字串中%d出现的次数为%d\\n\} 9.在主函数中输入10个不等长字符串,用另一函数sort()对它们排序,然后在主函数中输出已排好序的字符串。要求:每个字符串长度均不超过30字符,用指针数组进行处理。 #include void sort(char *pstr[]) { int i,j; char *t; for(i=0; i void main() { char str[M][N], *pstr[M]={NULL}; int i; printf(\请输入10个字符串,每个字符串均不超过30个字符:\\n\ for(i=0; i 10.输入一个字符串,内有数字字符和非数字字符如123a345bcd567,将其中连续的数字作为一个整数,依次存放到整型数组a中,例如,123放在a[0],345放在a[1]中,567放在a[2]中,……,统计共有多少个整数,并输出这些整数。 #include char ch[1000],*p=ch; int a[50],*q=a,num=0,i; gets(ch); for( ; *p!='\\0'; p++) if(*p>='0' && *p<='9') { *q=(*p)-'0'; p++; while(*p>='0' && *p<='9') *q=(*q)*10+(*(p++)-'0'); num+=1; q+=1; } for(i=0,q=a; i printf(\一共输入了%d个整数。\\n\ }
正在阅读:
高级程序设计第8章习题参考答案01-14
物质结构与元素周期律10-19
建筑实务-D - 图文03-20
湖南省长沙市周南中学高中语文第四单元第12课飞向太空的航程教案02-26
全国2010年7月高等教育自学考试 - 英语语法试题(已整理,打印版)10-06
夫妻成人手机短信02-12
人教版一下认读生字测试卷11-16
化工仪表与自动化考试试题汇总及答案05-02
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 习题
- 程序设计
- 答案
- 高级
- 参考
- 安徽省地方税务局文件
- 八年级周六综合实践活动课地理组
- 赤水四中课堂教学改革实验班小组长培训
- 旅客地道施工方案 - 图文
- 执业药师考试药物分析复习资料汇总 - 图文
- 南宁市国有划拨土地使用权出租管理办法(2015年修正)
- 小学中年级课外阅读能力培养的策略研究 - 图文
- 吕、对农村小学德育工作的几点思考
- 2017年6月福建省普通高中学生学业基础会考化学试题
- 抗滑桩措施方案 完成
- 《医疗器械生产质量管理规范》2016
- 视频监控投标文件
- Windows 2003 Server实验操作指导 - 图文
- 燃煤锅炉燃烧过程和热效率监控系统设计
- 关于买卖合同司法解释理解与适用 - 图文
- 环境监测考试试题10套(1)
- 电磁场理论 - 苏东林 - 教学大纲
- 中药学专业医药数理统计期末考试
- 三年级英语下册教案-李爽
- 十大仿真丝面料