实验4函数Word文档格式.docx
- 文档编号:17646541
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:13
- 大小:20.47KB
实验4函数Word文档格式.docx
《实验4函数Word文档格式.docx》由会员分享,可在线阅读,更多相关《实验4函数Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
return0;
}
intdaynum(intyear,intmonth)
intdays;
switch(month)
case1:
case3:
case5:
case7:
case8:
case10:
case12:
days=31;
break;
case4:
case6:
case9:
case11:
days=30;
case2:
if(year%4==0&
&
year%100!
=0||year%400==0)
days=29;
else
days=28;
break;
return__
(2)__;
答案:
(1)y,m
(2)days
每空分值:
2
参考答案:
yx3-t1.cpp
2.字符数组参数
编写一个函数,用来求字符串s的任意子串。
函数原型为
voidSubString(chars[],intstart,intlen,chard[]);
其中s是原字符串,d用来存放s中从第start个字符开始(1≤start≤strlen(s)),长度为len的子串。
#include<
intmain()
voidSubString(chars[],intstart,intlen,chard[]);
chars[81],d[81];
intm,n;
gets(s);
//输入一个字符串的值存放在字符数组s中,以回车结束
//cout<
从第m个字符开始(m≥1)取n个字符构成的子串。
请依次输入m、n的值:
;
m>
n;
if(m>
strlen(s)||n>
strlen(s)||m+n>
strlen(s)+1)
m、n值超过了范围!
\n"
SubString(__
(1)__);
//从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'
(1)s,m,n,d
(2)len-1
2
yx3-t2.cpp
3.嵌套调用
6
验证哥德巴赫猜想:
对任意输入的正整数n,验证6~n以内的偶数都可分解为两个素数(质数)之和。
以下程序中,函数booldivide(intn)是用来将偶数n分解为两个质数的;
若分解成功,则返回true;
否则返回false。
函数boolIsPrime(intm)是用来判断m是否为质数的;
若是,则函数返回true;
请在计算机上调试以下程序,补足其中的空格。
cmath>
booldivide(intn);
inti,n;
if(n<
6)
输入数据出错\n"
for(i=6;
i<
=n;
i+=2)
if(divide(i)==__
(1)__)//对i进行分解,并判断分解是否成功
{
cout<
猜想错误\n"
return0;
}
booldivide(intn)
boolIsPrime(intn);
inti,m;
for(i=3;
=n/2;
i++)
if(!
IsPrime(i))continue;
m=n-i;
if(__
(2)__)break;
//若m是素数,则分解已成功,结束该循环
if(i>
n/2)returnfalse;
n<
="
+"
m<
returntrue;
boolIsPrime(intm)
intp,i;
p=sqrt(m);
for(i=2;
=p;
if(m%i==0)returnfalse;
return__(3)__;
(1)false
(2)IsPrime(m)
(3)true
yx3-t3.cpp
4.全局变量
编写一函数addup,统计字符串s中字母、数字、空格和其它字符的个数,并且用几个全局变量记录上述统计结果。
intletter,digit,space,other;
//全局变量
voidaddup(chars[]);
charstr[101];
输入字符串:
gets(str);
addup(str);
字母个数:
letter<
,数字个数:
digit<
,空格个数:
space<
,其他字符个数:
other<
voidaddup(chars[])
inti;
letter=digit=space=other=__
(1)__;
for(i=0;
s[i]!
='
if(s[i]>
a'
&
s[i]<
z'
||s[i]>
A'
Z'
)letter++;
elseif(s[i]>
0'
9'
)digit++;
elseif(s[i]==32)space++;
else__
(2)__;
(1)0
(2)other++
yx3-t4.cpp
5.递归调用
用递归方法求n的阶乘n!
,递归公式为
1(n等于0或1)
n!
=
n×
(n-1)!
(n大于1)
要求编写递归函数intfact(intn);
以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。
intfact(intn);
intn,f;
请输入整数n(n≥0):
f=fact(n);
!
f<
//求阶乘
intfact(intn)
intf;
if(n==0||n__
(1)__)f=1;
elsef=__
(2)__;
returnf;
(1)==1
(2)n*fact(n-1)
yx3-t5.cpp
程序设计
1.普通参数
12
题目标题:
判断完数
时间限制:
1000MS
内存限制:
32768KB
判断正整数n是否为完数。
已知一个数如果恰好等于除它本身外的所有因子之和,这个数就称为完数。
此程序要求编写函数boolwanshu(intn),判断n是否为完数,若n是,则函数返回true;
然后主函数通过该函数的返回值,在屏幕上输出判断结果。
输入描述:
输入一个正整数n。
输出描述:
若n是完数,则输出"
yes"
;
否则输出"
no"
。
样例输入:
28
样例输出:
yes
参考答案#include<
usingnamespacestd;
boolwanshu(intn);
intmain()
{intm;
if(wanshu(m))
else
}
boolwanshu(intn)
{ints=0;
for(inti=1;
i++)
if(n%i==0)s=s+i;
if(s==n)returntrue;
elsereturnfalse;
yx3-1.cpp
2.数组参数
统计一组数中的奇数之和
统计输入的10个整数中所有奇数之和。
要求编写函数intoddsum(intarray[],intnum),求出数组array中前num个整数中的奇数之和,并将结果作为函数值返回。
要求主函数必须先输出这10个数,再输出求出的奇数之和。
输入10个整数。
输出其中奇数之和。
97482317455990754992
365
stdio.h>
longmain(void)
longa[10]={0};
longi,sum1,sum2;
printf("
输入10个数以空格分隔:
);
for(i=0,sum1=0,sum2=0;
i<
10;
++i)
scanf("
%d"
&
a[i]);
if(a[i]%2==0)
sum1+=a[i];
else
sum2+=a[i];
偶数和为:
%d\n"
sum1);
奇数和为:
sum2);
yx3-2.cpp
求两数的最大公约数和最小公倍数。
求两个正整数的最大公约数和最小公倍数。
要求,写一个函数求最大公约数:
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
intgreatest_c_divisor(intx,inty);
//求最大公约数
intleast_c_multiple(intx,inty,intgcd);
//求最小公倍数
{
intx,y,gcd,lcm;
请输入两个正整数"
x>
y;
gcd=greatest_c_divisor(x,y);
lcm=least_c_multiple(x,y,gcd);
这两个数的最大公约数是"
gcd<
\n这两个数的最小公倍数是"
lcm<
intgreatest_c_divisor(intx,inty)
intgcd;
x>
y?
gcd=y:
gcd=x;
//两个数中的最小值
for(;
x%gcd!
=0||y%gcd!
=0;
gcd--);
returngcd;
intleast_c_multiple(intx,inty,intgcd)
intlcm;
lcm=x*y/gcd;
returnlcm;
yx3-3.cpp
4.数组参数
字符串中小写字母转换成大写字母
编写函数intf(chars[]),将字符串中所有的小写字母转换成对应的大写字母,其他字符不变,并统计被转换字母的个数,将其作为函数值返回。
要求主函数中输入该字符串,最后输出转换后的新字符串,和转换字母的个数。
输入一个字符串。
两行,第一行输出转换后的新字符串,第二行输出被转换的小写字母个数。
ser34GHj
SER34GHJ
main()
chara[100];
char*p=a;
scanf("
%s"
a);
while(*p!
)
if(*p>
*p<
)*p=*p-32;
printf("
%c"
*p);
p++;
}
yx3-4.cpp
5.指针参数
统计字符串中某字符出现的次数
输入一个字符串s和一个字符ch,统计并输出字符ch在字符串s中出现的总次数。
改写要求:
编写一个函数,求字符指针p所指向的字符串中,字符ch出现的次数,并将该结果作为函数值返回。
intCountChar(char*p,charch);
输入一个字符串后按回车键,再输入一个字符后回车。
(提示:
输入字符串用gets(s),s为存放字符串的字符数组)
输出为一个正整数,表示字符ch出现的总次数。
bb
a
voidmain()
charstr[100],ch;
intn=0,t;
请输入一个字符串:
"
gets(str);
请输入一个字符:
ch);
for(t=0;
str[t]!
t++)
if(str[t]==ch)
n++;
字符%c出现的次数:
%d\n"
ch,n);
yx3-5.cpp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 函数