实验7函数参考程序综述文档格式.docx
- 文档编号:22912463
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:17
- 大小:19.57KB
实验7函数参考程序综述文档格式.docx
《实验7函数参考程序综述文档格式.docx》由会员分享,可在线阅读,更多相关《实验7函数参考程序综述文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
floatmax(floata[],intn)
inti,result;
//改为inti;
floatresult;
//增加result=a[0];
for(i=0;
n;
{
if(a[i]>
result)
result=a[i];
}
returnresult;
3.找出并改正以下源程序中错误,得出正确的运行结果,其中converse函数的功能是逆序输出n个字符。
解题思路:
已知字符串的长度,逆序输出字符串
如果只有1个字符,直接输出该字符后结束
否则:
输出后面的所有字符之后,再输出该字符
#include<
voidmain()
inti=5;
voidconverse(intn);
Input5characters:
"
);
converse(i);
\n"
}
voidconverse(n);
//改为voidconverse(intn)并去掉分号
charnext;
if(n>
=1)//改为if(n==1)
{
next=getchar();
putchar(next);
}
else
converse(n-1);
四、编写程序
1、编写一个函数,其功能是判断形式参数是否为小写字母,若是,返回其对应的大写字母,否则返回原字符。
然后在main函数中输入一个字符,调用该函数得到其大写字母并输出
charisLow(charch)
if(ch>
='
a'
&
&
ch<
z'
)
returnch-32;
else
returnch;
voidmain(void)
charch;
请输入一个字符:
%c"
ch);
%c\n"
isLow(ch));
2、编写函数reverse(intnumber),它的功能是将number逆序输出,在main函数中输入一个整数,调用该函数得到逆序的数并输出。
例如reverse(11233)的返回值为33211。
intreverse(intn)
intrev=0,num;
do
num=n%10;
rev=rev*10+num;
n=n/10;
}while(n);
returnrev;
intnum,revnum;
请输入一个整数:
%d"
num);
revnum=reverse(num);
逆序后整数为:
%d\n"
revnum);
3、编写函数完成如下功能:
将长整型数中数字为偶数的数依次取出,构成一个新数返回,例如,当s中的数为:
87653142时,则返回的数为:
8642。
提示:
依次取出长整型数的每一位数字,如果是偶数,则放入新数中。
在main函数中输入一个长整型数,调用该函数得到新的数,并输出结果。
#include"
stdio.h"
longfunc(longs);
longa;
printf("
%ld"
a);
%ld\n"
func(a));
longfunc(longn)
{
longresult=0;
intnum,weight=1;
//weight表示数位的权值(即个、十、百,。
。
while(n!
=0)
{
num=n%10;
//得到最低位
if(num%2==0)
{
result=num*weight+result;
//重新组织成新的数
weight=weight*10;
}
n/=10;
//去掉最低位
}
return(result);
4、编写一个函数sort,实现数组元素的升序(或降序)排列。
在main函数中输入数组元素,调用该函数进行排序,最后输出排序后的结果。
#defineN10
voidsort(floata[],intn)//无返回值,在原数组上排序并带回
inti,j;
floattemp;
n-1;
i++)/*冒泡排序*/
for(j=i+1;
j<
j++)
if(a[i]>
a[j])
temp=a[i];
a[i]=a[j];
a[j]=temp;
floata[N];
请输入%d个数值:
N);
scanf("
a[i]);
sort(a,N);
升序排序后的数组为:
printf("
%6.2f"
a[i]);
printf(”\n”);
5、编写函数求出二维整型数组中元素的最大值及其下标号。
这里至少需要返回二维数组元素的行,列两个值,而函数只能返回1个值(无法返回2个值),所以只能通过数组作为参数的方法将值带回来。
在main函数中输入一个二维整型数组,调用该函数得到最大值所在的下标,并输出最大值及其下标号。
voidmax_value(intarray[][4],intindex[])
//没有返回值的函数,结果通过与index对应的数组带回
inti,j,max;
max=array[0][0];
i<
3;
i++)
for(j=0;
j<
4;
j++)
if(max<
array[i][j])
index[0]=i;
index[1]=j;
max=array[i][j];
inta[3][4]={{18,2,3,4},
{8,7,6,5},
{9,10,11,12}};
intmaxindex[2]={0};
//定义数组maxindex以保存最大值的行、列下标,因为函数无法返回2个值,只能通过数组带回来
inti,j;
max_value(a,maxindex);
i=maxindex[0];
j=maxindex[1];
Max=array[%d][%d]=%d\n"
i,j,a[i][j]);
6、编写函数,统计给定字符串中各个字母出现的次数,不区分大小写。
在main函数中输入一个字符串,调用该函数进行计算,然后输出统计结果。
统计结果可以保存到一个数组中,如intcount[26],分别存储每个字母出现的次数,初值0,然后将数组作为函数参数将值带回来。
voidfun(chars[],inta[])//将统计26个字母的结果存放在与数组a对应的实参中
inti,j;
for(i=0;
s[i];
if(s[i]>
A'
s[i]<
Z'
j=s[i]-'
;
//得到该字母在26个字母中的序号
elseif(s[i]>
a[j]++;
//对应字母的个数加1
intmain(void)
charstr[80];
intcount[26]={0},i;
//count数组26个元素分别存储每个字母出现的次数,初值0
请输入一串字符以回车键结束:
gets(str);
fun(str,count);
//输出统计结果
26;
if(count[i]!
=0)
printf("
%c或%c出现的次数为:
'
+i,'
+i,count[i]);
7、编写函数substring(char[],charsub[]),查找sub串在字符串s中第一次出现的下标位置。
若找到,函数返回对应下标,否则返回-1。
例如s串为“abcdefg”,sub串为“def”,则返回值为4。
在main函数中输入主串和子串,调用该函数并输出结果。
string.h>
intsubstring(chars[],charsub[])
//查找sub在s中第一次出现的位置,若找到返回对应下标,否则返回-1
intend,i,j;
end=strlen(s)-strlen(sub);
/*计算结束位置*/
if(end>
0)/*子串sub小于字符串s*/
for(i=0;
i<
=end;
i++)/*用循环从首字符开始依次比较*/
for(j=0;
sub[j];
j++)
{
if(s[i+j]!
=sub[j])
break;
}
if(sub[j]=='
\0'
)/*找到(即sub中所有字符都匹配),返回位置*/
returni+1;
}
return-1;
/*未找到,返回-1*/
charstring[100];
charsubstr[100];
intresult;
请输入字符串:
"
gets(string);
/*读取字符串*/
请输入要搜索的子字符串==>
gets(substr);
/*读取子字符串*/
result=substring(string,substr);
/*定位子字符串*/
if(result>
0)
子字符串%s位置在%d\n"
substr,result);
没有找到子字符串%s\n"
substring);
8、请编一个函数fun,其中n所指存储单元中存放了数组中元素的个数。
函数的功能是:
删除所有值为y的元素。
已在主函数中给数组元素赋值,y的值由主函数通过键盘读入。
注意:
部分源程序已给出,请勿改动主函数和其他函数中的内容,仅在函数fun的指定的部位填入你编写的若干语句。
#defineM20
intfun(intbb[],intn,inty)
inti,j;
if(bb[i]==y)//当某个元素等于y时,把i后的元素顺次往前挪动一个位置
for(j=i;
bb[j]=bb[j+1];
n--;
i--;
returnn;
intaa[M]={1,2,3,3,2,1,1,2,3,4,5,4,3,2,1},n=15,y,k;
Theoriginaldatais:
\n"
for(k=0;
k<
k++)
%d"
aa[k]);
\nEnteranumbertodeleted:
y);
n=fun(aa,n,y);
Thedataafterdeleted%d:
y);
\n\n"
第七课后习题7、8、9参考程序
7、/*在字符串中插入子串*/
voidinsert(chars1[],chars2[],intpos)
intlen1,len2,i,j,k;
len1=strlen(s1);
/*计算字符串1的长度*/
len2=strlen(s2);
/*计算字符串2的长度*/
if(pos>
len1)/*插入位置是字符串的尾部*/
pos=len1;
elseif(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]='
for(i=pos,j=0;
s2[j];
i++,j++)/*将字符串2插入到字符串1中*/
s1[i]=s2[j];
chars1[80],s2[20];
//假定输入时串1不超60字符,串2不超20字符
intpos;
请输入字符串1:
gets(s1);
请输入字符串2:
gets(s2);
请输入将字符串2插入字符串1的位置:
pos);
insert(s1,s2,pos-1);
插入字符串2后的字符串1为:
%s\n"
s1);
8、/*输出字符串中最长的单词*/
#include<
voidlongword(chars1[],chars2[])
charword[100]={0};
/*初始化为空字符*/
inti=0,j=0,k=0,m=0,n=0;
s1[i];
i++)
{
if(s1[i]!
='
'
)/*单词之间用空格隔开*/
{
word[j]=s1[i];
/*word记录当前考查的单词*/
j++;
/*j记录当前考查单词的长度*/
}
if(s1[i]=='
)/*新单词*/
if(j>
n)/*word记录的单词长度超过最长单词*/
{
word[j]='
strcpy(s2,word);
/*最长单词赋给s2*/
n=j;
/*n记录最长单词的长度*/
}
strcpy(word,"
/*middle字符数组重新初始化为空串*/
j=0;
/*j记录新单词的长度*/
if(j>
n)/*与最后一个单词比较*/
word[j]='
strcpy(s2,word);
voidmain(void)
charsetence[100],max[100];
/*max记录最长单词*/
请输入一串单词\n"
gets(setence);
longword(setence,max);
最长单词为:
puts(max);
9、/*逆序打印字符*/
voidreverseprint()
charch;
ch=getchar();
if(ch!
\n'
reverseprint();
putchar(ch);
reverseprint();
putchar('
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 函数 参考 程序 综述