教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 资格考试 >

C语言实验总答案(10)

来源:网络收集 时间:2026-05-14
导读: printf(\ for(k=0; k 第七课后习题7、8、9参考程序 7、/* 在字符串中插入子串 */ #include #include void insert(char s1[], char s2[], int pos) { int len1, len2, i, j, k; len1=strlen(s1); /*计算字符串1的长

printf(\ for(k=0; k

第七课后习题7、8、9参考程序

7、/* 在字符串中插入子串 */

#include #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 #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不变。

…… 此处隐藏:1108字,全部文档内容请下载后查看。喜欢就下载吧 ……
C语言实验总答案(10).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/412690.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)