C程序设计教程与实验第8章习题参考答案
更新时间:2023-11-02 10:59:01 阅读量: 综合文库 文档下载
第8章习题
一、选择题 1 C 9 C 2 C 10 A 3 C 11 B 4 C 12 D 5 C 13 A 6 A 14 C 7 C 15 C 8 D 二、 填空题 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.7
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 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 if(pa[i][j]>pa[*pRow][*pCol]) { *pRow=i; *pCol=j; } } 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\} 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 int i,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 int sum(int (*pa)[N]) { int i,j,s=0; for(i=0;i for(j=0;j return s; } 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 #define M 10 #define N 31 void sort(char *pstr[]) { int i,j; char *t; for(i=0; i for(j=0; j if(strcmp(pstr[j],pstr[j+1])>0) { t = pstr[j]; pstr[j]=pstr[j+1]; pstr[j+1] = t; } } } void main() { char str[M][N], *pstr[M]={NULL}; int i; printf(\请输入10个字符串,每个字符串均不超过30个字符:\\n\for(i=0; i gets(str[i]); pstr[i]=str[i]; } sort(pstr); printf(\排好序的字符串从小到大依次为:\\n\for(i=0; i printf(\ } 10.输入一个字符串,内有数字字符和非数字字符如123a345bcd567,将其中连续的数字作为一个整数,依次存放到整型数组a中,例如,123放在a[0],345放在a[1]中,567放在a[2]中,……,统计共有多少个整数,并输出这些整数。 #include void main() { 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\} 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\ }
正在阅读:
C程序设计教程与实验第8章习题参考答案11-02
暑假作业09-21
党委班子对照检查材料&党委落实全面治党主体责任清单08-22
xxxx公司全员健身实施方案111-10
华润电力电气规程06-04
工作计划之班组年度学习计划12-28
九年级下册生命教育教案(全)12-19
初等数论期末复习资料11-25
泄露天机2012年金太阳高考押题精粹05-16
- 冀教版版五年级科学下册复习资料
- 微生物学复习提纲
- 2013—2014学年小学第二学期教研组工作总结
- 国有土地转让委托服务合同协议范本模板
- 我的固废说明书
- 企业管理诊断报告格式
- 东鼎雅苑施工组织设计
- 谈谈如何做好基层党支部书记工作
- 浮梁县环保局市级文明单位创建工作汇报
- 管理学基础知识
- 大学物理实验报告23 - PN结温度传感器特性1
- 计算机网络实践
- 酒桌上这四种情况下要坐牢,千万别不当回事……
- 国家康居示范工程建设技术要点
- 中国贴布行业市场调查研究报告(目录) - 图文
- 新课标下如何在高中物理教学中培养学生的创新能力初探
- 营养师冬季养生食谱每日一练(7月4日)
- 关注江西2017年第3期药品质量公告
- 建设海绵城市专题习题汇总
- 10万吨年环保净水剂建设项目报告书(2).pdf - 图文
- 习题
- 程序设计
- 答案
- 参考
- 实验
- 教程
- 八路抢答器毕业设计说明书 - 图文
- 汽车保养知识集锦
- 2019届人教版 气体的等容变化和等压变化 单元测试
- 2013年4月自考计算机网络技术试题(含答案) - 图文
- 固废处理合同
- 湖北师范学院普通专升本考试体育教育专业招生人数、考试科目、复习教材和试题及录取分数线
- 《建筑工程测量》实训指导书
- 室内一层返潮处理方案
- 诗歌鉴赏中常见的写作手法
- 电梯故障判断逻辑图及常见故障
- 题画李唐阅读答案
- 《化工仪表及自动化》云南民族大学期末复习试题及答案
- 大学-现代密码学实验报告
- 武汉市轨道交通一号线一期工程施工组织设计方案
- 高中生物必修三模块考试模拟试题(周考)
- 新人教部编版小学数学六年级下册:第二单元达标测试题
- 杭州华东医药集团安全生产管理办法
- 信息化战略规划报告
- 高中数学情景教学的有效研究
- 推拿学基础