C语言实验总答案(10)
printf(\ for(k=0; k 第七课后习题7、8、9参考程序 7、/* 在字符串中插入子串 */ #include void insert(char s1[], char s2[], int pos) { int len1, len2, i, j, k; len1=strlen(s1); /*计算字符串1的长度*/ len2=strlen(s2); /*计算字符串2的长度*/ if(pos>len1) /*插入位置是字符串的尾部*/ pos=len1; else if(pos<0) /*插入位置是字符串的头部*/ pos=0; k=len1+len2; /*计算新字符串的长度*/ for(i=len1-1, j=k-1; i>=pos; j--, i--) /*将插入点后字符移至串1尾部*/ s1[j]=s1[i]; s1[k]='\\0'; for(i=pos, j=0; s2[j]; i++, j++) /*将字符串2插入到字符串1中*/ s1[i]=s2[j]; } void main(void) { char s1[80], s2[20]; //假定输入时串1不超60字符,串2不超20字符 int pos; printf(\请输入字符串1: \\n\gets(s1); printf(\请输入字符串2: \\n\gets(s2); printf(\请输入将字符串2插入字符串1的位置: \\n\scanf(\insert(s1, s2, pos-1); printf(\插入字符串2后的字符串1为: %s\\n\} 8、/*输出字符串中最长的单词*/ #include void longword(char s1[], char s2[]) { } char word[100]={0}; /*初始化为空字符*/ int i=0,j=0,k=0,m=0,n=0; for(i=0; s1[i]; i++) { if(s1[i]!=' ') /*单词之间用空格隔开*/ { word[j]=s1[i]; /* word记录当前考查的单词*/ j++; /* j 记录当前考查单词的长度*/ } if(s1[i]==' ') /*新单词*/ { if(j>n) /* word记录的单词长度超过最长单词 */ { word[j]='\\0'; strcpy(s2,word); /*最长单词赋给s2*/ n=j; /*n记录最长单词的长度*/ } strcpy(word,\字符数组重新初始化为空串*/ j=0; /* j 记录新单词的长度*/ } } if(j>n) /*与最后一个单词比较*/ { word[j]='\\0'; strcpy(s2,word); } void main(void) { char setence[100],max[100]; /*max记录最长单词*/ printf(\请输入一串单词\\n\gets(setence); longword(setence, max); printf(\最长单词为:\ puts(max); } 9、/*逆序打印字符*/ #include \void reverseprint() { char ch; ch = getchar(); if(ch!='\\n') reverseprint(); putchar(ch); } void main(void) { reverseprint(); putchar('\\n'); } 实验八 指针及其应用——参考程序 【实验内容】 二、 编程题: 1. 编写程序,用指针实现读入一行数列,求数列的和,平均值,最大值、最小值,并且打印它们。 #include \#include \void main() { int array[80], *p; int n, i, sum=0, max=INT_MIN, min=INT_MAX; /*符号常量INT_MIN和INT_MAX分别表示int型的最小值和最大值,在limits.h中定义*/ printf(\请确定要输入的整数个数n \ scanf(\ printf(\请输入%d个整数\ p=array; for(i=0; i scanf(\ if(*p>max) max= *p; if(*p sum=sum + *p; p++; } printf(\输入的%d个整数为\输出所有整数*/ p=array; for(i=0; i printf(\ putchar('\\n'); printf(\以上整数的累加和为%d\\n\ printf(\以上整数的平均值为%.2f\\n\ printf(\以上整数的最大值为%d\\n\ printf(\以上整数的最小值为%d\\n\ } 2. 编写字符串插入函数char *strins(char *s1, char *s2),将字符串s2的内容插入到字 符串s1之前,参数s1, s2为指向字符串的指针。函数执行后,返回值为结果字符串的首地址(即s1),参数s1为结果字符串中原来子串s1的首地址,参数s2不变。例如:s1=”world”, s2=”hello”, 结果字符串为”helloworld”,s1指向字符‘h’。 在main函数中输入两个字符串,调用该函数完成字符串的插入,并输出结果。 #include \ char *strins(char *s1, char *s2) { int len1=0, len2=0; char *p1, *p2; p1=s1; while(*p1++) //计算s1的长度 len1++; p2=s2; while(*p2++) //计算s2的长度 len2++; //把s1中的每个字符顺次向后移动len2个位置,包括结束符'\\0' p1=s1+len1; //指向s1的结束符'\\0' do { *(p1+len2)= *p1; } while(p1--!=s1); /*至少要移动一次,因此用do~while循环*/ //把s2拷贝插入到s1的前面 p1=s1; p2=s2; while(*p2) *p1++=*p2++; return s1; } void main() { char str1[80],str2[80], *p; printf(\ gets(str1); printf(\ gets(str2); printf(\原来的字串s1:\ puts(str1); p=strins(str1,str2); printf(\插入后的字符串:\puts(str1); /*这里puts(str1)和puts(p)的输出结果一样,因为p指针实际上就是指向str1的第一个元素*/ puts(p); } 3. 编写字符串函数char *substr(char *str1, char *str2),判断字符串str2是否为str1的子串,如果是,则返回str1中首次出现子串str2的起始位置,否则,返回NULL值。例如:str1=”I am a student”,str2=”stu”,函数执行后,返回值指向字符‘s’,参数s1, s2不变。
相关推荐:
- [资格考试]机械振动与噪声学部分答案
- [资格考试]空调工程课后思考题部分整合版
- [资格考试]电信登高模拟试题
- [资格考试]2018年上海市徐汇区中考物理二模试卷(
- [资格考试]坐标转换及方里网的相关问题(椭球体、
- [资格考试]语文教研组活动记录表
- [资格考试]广东省2006年高应变考试试题
- [资格考试]LTE学习总结—后台操作-数据配置步骤很
- [资格考试]北京市医疗美容主诊医师和外籍整形外科
- [资格考试]中学生广播稿400字3篇
- [资格考试]CL800双模站点CDMA主分集RSSI差异过大
- [资格考试]泵与泵站考试复习题
- [资格考试]4个万能和弦搞定尤克里里即兴弹唱(入
- [资格考试]咽喉与经络的关系
- [资格考试]《云南省国家通用语言文字条例》学习心
- [资格考试]标准化第三范式
- [资格考试]GB-50016-2014-建筑设计防火规范2018修
- [资格考试]五年级上册品社复习资料(第二单元)
- [资格考试]2.对XX公司领导班子和班子成员意见建议
- [资格考试]关于市区违法建设情况的调研报告
- 二0一五年下半年经营管理目标考核方案
- 2014年春八年级英语下第三次月考
- 北师大版语文二年级上册第十五单元《松
- 2016国网江苏省电力公司招聘高校毕业生
- 多渠道促家长督导家长共育和谐 - 图文
- 2018 - 2019学年高中数学第2章圆锥曲线
- 竞争比合作更重要( - 辩论准备稿)课
- “案例积淀式”校本研训的实践与探索
- 新闻必须客观vs新闻不必客观一辩稿
- 福师大作业 比较视野下的外国文学
- 新编大学英语第二册1-7单元课文翻译及
- 年产13万吨天然气蛋白项目可行性研究报
- 河南省洛阳市2018届高三第二次统一考试
- 地下车库建筑设计探讨
- 南京大学应用学科教授研究方向汇编
- 2018年八年级物理全册 第6章 第4节 来
- 毕业论文-浅析余华小说的悲悯性 - 以《
- 2019年整理乡镇城乡环境综合治理工作总
- 广西民族大学留学生招生简章越南语版本
- 故宫旧称紫禁城简介




