实验7函数程序Word下载.docx

上传人:b****1 文档编号:4881485 上传时间:2023-05-04 格式:DOCX 页数:17 大小:19.34KB
下载 相关 举报
实验7函数程序Word下载.docx_第1页
第1页 / 共17页
实验7函数程序Word下载.docx_第2页
第2页 / 共17页
实验7函数程序Word下载.docx_第3页
第3页 / 共17页
实验7函数程序Word下载.docx_第4页
第4页 / 共17页
实验7函数程序Word下载.docx_第5页
第5页 / 共17页
实验7函数程序Word下载.docx_第6页
第6页 / 共17页
实验7函数程序Word下载.docx_第7页
第7页 / 共17页
实验7函数程序Word下载.docx_第8页
第8页 / 共17页
实验7函数程序Word下载.docx_第9页
第9页 / 共17页
实验7函数程序Word下载.docx_第10页
第10页 / 共17页
实验7函数程序Word下载.docx_第11页
第11页 / 共17页
实验7函数程序Word下载.docx_第12页
第12页 / 共17页
实验7函数程序Word下载.docx_第13页
第13页 / 共17页
实验7函数程序Word下载.docx_第14页
第14页 / 共17页
实验7函数程序Word下载.docx_第15页
第15页 / 共17页
实验7函数程序Word下载.docx_第16页
第16页 / 共17页
实验7函数程序Word下载.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验7函数程序Word下载.docx

《实验7函数程序Word下载.docx》由会员分享,可在线阅读,更多相关《实验7函数程序Word下载.docx(17页珍藏版)》请在冰点文库上搜索。

实验7函数程序Word下载.docx

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('

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2