c实验4作业函数.docx

上传人:b****4 文档编号:3121322 上传时间:2022-11-17 格式:DOCX 页数:9 大小:17.41KB
下载 相关 举报
c实验4作业函数.docx_第1页
第1页 / 共9页
c实验4作业函数.docx_第2页
第2页 / 共9页
c实验4作业函数.docx_第3页
第3页 / 共9页
c实验4作业函数.docx_第4页
第4页 / 共9页
c实验4作业函数.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

c实验4作业函数.docx

《c实验4作业函数.docx》由会员分享,可在线阅读,更多相关《c实验4作业函数.docx(9页珍藏版)》请在冰豆网上搜索。

c实验4作业函数.docx

c实验4作业函数

实验4函数

程序填空

1.普通参数

本题分值:

4

题目描述:

输入日期的年份和月份,求该月有多少天。

要求编写函数intdaynum(intyear,intmonth),求出以year为年份、以month为月份的某个月的天数。

以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。

代码:

//通过日期求某月的天数。

#include

usingnamespacestd;

intmain()

{

intdaynum(intyear,intmonth);

inty,m,d;

cin>>y>>m;

if(y<1900||y>=3000||m<1||m>12)

{

cout<<"输入错误!

"<

return0;

}

d=daynum(__

(1)__);//以y、m作实参调用函数,求出该月的天数

cout<<"此月的天数为"<

return0;

}

intdaynum(intyear,intmonth)

{

intdays;

switch(month)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

days=31;break;

case4:

case6:

case9:

case11:

days=30;break;

case2:

if(year%4==0&&year%100!

=0||year%400==0)

days=29;

else

days=28;

break;

}

return__

(2)__;

}

2.字符数组参数

本题分值:

4

题目描述:

编写一个函数,用来求字符串s的任意子串。

函数原型为

voidSubString(chars[],intstart,intlen,chard[]);

其中s是原字符串,d用来存放s中从第start个字符开始(1≤start≤strlen(s)),长度为len的子串。

以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。

代码:

#include

usingnamespacestd;

intmain()

{

voidSubString(chars[],intstart,intlen,chard[]);

chars[81],d[81];

intm,n;

gets(s);//输入一个字符串的值存放在字符数组s中,以回车结束

//cout<<"从第m个字符开始(m≥1)取n个字符构成的子串。

请依次输入m、n的值:

";cin>>m>>n;

if(m>strlen(s)||n>strlen(s)||m+n>strlen(s)+1)

{

cout<<"m、n值超过了范围!

\n";

return0;

}

SubString(__

(1)__);

cout<

return0;

}

//从s中第start个字符开始取出长度为len的子串放入d中

voidSubString(chars[],intstart,intlen,chard[])

{

intk,j;

for(j=0,k=start-1;j<=__

(2)__;j++,k++)

d[j]=s[k];

d[len]='\0';

}

3.嵌套调用

本题分值:

6

题目描述:

验证哥德巴赫猜想:

对任意输入的正整数n,验证6~n以内的偶数都可分解为两个素数(质数)之和。

以下程序中,函数booldivide(intn)是用来将偶数n分解为两个质数的;若分解成功,则返回true;否则返回false。

函数boolIsPrime(intm)是用来判断m是否为质数的;若是,则函数返回true;否则返回false。

请在计算机上调试以下程序,补足其中的空格。

代码:

#include

#include

usingnamespacestd;

intmain()

{

booldivide(intn);

inti,n;

cin>>n;

if(n<6)

{

cout<<"输入数据出错\n";

return0;

}

for(i=6;i<=n;i+=2)

if(divide(i)==__

(1)__)//对i进行分解,并判断分解是否成功

{

cout<<"猜想错误\n";

return0;

}

return0;

}

booldivide(intn)

{

boolIsPrime(intn);

inti,m;

for(i=3;i<=n/2;i++)

{

if(!

IsPrime(i))continue;

m=n-i;

if(__

(2)__)break;//若m是素数,则分解已成功,结束该循环

}

if(i>n/2)returnfalse;

cout<

returntrue;

}

boolIsPrime(intm)

{

intp,i;

p=sqrt(m);

for(i=2;i<=p;i++)

if(m%i==0)returnfalse;

return__(3)__;

}

4.全局变量

本题分值:

4

题目描述:

编写一函数addup,统计字符串s中字母、数字、空格和其它字符的个数,并且用几个全局变量记录上述统计结果。

以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。

代码:

#include

usingnamespacestd;

intletter,digit,space,other;//全局变量

intmain()

{

voidaddup(chars[]);

charstr[101];

//cout<<"输入字符串:

\n";

gets(str);

addup(str);

cout<<"字母个数:

"<

"<

"<

"<

return0;

}

voidaddup(chars[])

{

inti;

letter=digit=space=other=__

(1)__;

for(i=0;s[i]!

='\0';i++)

if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')letter++;elseif(s[i]>='0'&&s[i]<='9')digit++;

elseif(s[i]==32)space++;

else__

(2)__;

}

5.递归调用

本题分值:

4

题目描述:

用递归方法求n的阶乘n!

,递归公式为

1(n等于0或1)

n!

=

n×(n-1)!

(n大于1)

要求编写递归函数intfact(intn);以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。

代码:

#include

usingnamespacestd;

intmain()

{

intfact(intn);

intn,f;

//cout<<"请输入整数n(n≥0):

";

cin>>n;

f=fact(n);

cout<

="<

return0;

}

//求阶乘

intfact(intn)

{

intf;

if(n==0||n__

(1)__)f=1;

elsef=__

(2)__;

returnf;

}

程序设计

1.普通参数

本题分值:

12

题目标题:

判断完数

时间限制:

1000MS

内存限制:

32768KB

题目描述:

判断正整数n是否为完数。

已知一个数如果恰好等于除它本身外的所有因子之和,这个数就称为完数。

此程序要求编写函数boolwanshu(intn),判断n是否为完数,若n是,则函数返回true;否则返回false。

然后主函数通过该函数的返回值,在屏幕上输出判断结果。

输入描述:

输入一个正整数n。

输出描述:

若n是完数,则输出"yes";否则输出"no"。

样例输入:

28

样例输出:

yes

2.数组参数

本题分值:

12

题目标题:

统计一组数中的奇数之和

时间限制:

1000MS

内存限制:

32768KB

题目描述:

统计输入的10个整数中所有奇数之和。

要求编写函数intoddsum(intarray[],intnum),求出数组array中前num个整数中的奇数之和,并将结果作为函数值返回。

要求主函数必须先输出这10个数,再输出求出的奇数之和。

输入描述:

输入10个整数。

输出描述:

输出其中奇数之和。

样例输入:

97482317455990754992

样例输出:

365

3.嵌套调用

本题分值:

12

题目标题:

求两数的最大公约数和最小公倍数。

时间限制:

1000MS

内存限制:

32768KB

题目描述:

求两个正整数的最大公约数和最小公倍数。

要求,写一个函数求最大公约数:

intGCD(inta,intb),再写一个函数求最小公倍数:

intLCM(inta,intb)。

其中最大公约数函数GCD的算法:

可以参考《实验预习1》中程序填空题5中的算法,也可以使用辗转相除法。

最小公倍数函数LCM的算法:

a、b的最小公倍数等于a*b/a、b的最大公约数。

要求:

最小公倍数函数LCM中嵌套调用函数GCD,以求a、b的最大公约数。

输入描述:

分别输入2个整数。

输出描述:

当输入的数据不是正整数时,显示“ERROR!

”;当输入的数据都是正整数时,依次输出最大公约数x和最小公倍数y,两个数据之间用一个空格隔开。

样例输入:

1218

样例输出:

636

4.数组参数

本题分值:

12

题目标题:

字符串中小写字母转换成大写字母

时间限制:

1000MS

内存限制:

32768KB

题目描述:

编写函数intf(chars[]),将字符串中所有的小写字母转换成对应的大写字母,其他字符不变,并统计被转换字母的个数,将其作为函数值返回。

要求主函数中输入该字符串,最后输出转换后的新字符串,和转换字母的个数。

输入描述:

输入一个字符串。

输出描述:

两行,第一行输出转换后的新字符串,第二行输出被转换的小写字母个数。

样例输入:

ser34GHj

样例输出:

SER34GHJ

4

5.指针参数

本题分值:

12

题目标题:

统计字符串中某字符出现的次数

时间限制:

1000MS

内存限制:

32768KB

题目描述:

输入一个字符串s和一个字符ch,统计并输出字符ch在字符串s中出现的总次数。

改写要求:

编写一个函数,求字符指针p所指向的字符串中,字符ch出现的次数,并将该结果作为函数值返回。

函数原型为

intCountChar(char*p,charch);

输入描述:

输入一个字符串后按回车键,再输入一个字符后回车。

(提示:

输入字符串用gets(s),s为存放字符串的字符数组)

输出描述:

输出为一个正整数,表示字符ch出现的总次数。

样例输入:

bb

a

样例输出:

0

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1