第七章函数Word下载.docx
《第七章函数Word下载.docx》由会员分享,可在线阅读,更多相关《第七章函数Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
当内容为其他字符,不变。
abc25xyzà
fgh0212bcd
11、编写函数:
传递参数为一任意字符,返回它的ASCII码值。
12、编写函数,打印出指定行数的图案。
13、编写求任意数阶乘的的函数,利用该函数求1!
+2!
+….+20!
之和。
14、编写判断某个数是否为素数的函数。
(只可以被1各它本身整除的数为素数)
15、利用14题的函数,统计出1000以内共有多少个素数。
递归练习:
16、利用递归计算1+2+……+100。
17、编写计算m的n次方的递归函数。
18、用递归方法求N阶勒让德多项式的值,递归公式为
19、编写递归函数计算连续自然数a-b之和。
20、小猴子第一天摘下若干桃子,当即吃掉一半,又多吃一个.第二天早上又将剩下的桃子吃一半,又多吃一个.以后每天早上吃前一天剩下的一半另一个.到第10天早上猴子想再吃时发现,只剩下一个桃子了.问第一天猴子共摘多少个桃子?
21、有雌雄一对兔子,假定过两个月便可繁殖雌雄各一的一对小兔子。
问过n个月后共有多少对兔子?
(菲波拉契(Fibonacci)数列,其第一项为1,第二项为1,从第三项开始,其每一项都是前两项的和。
编程求出该数列前N项数据。
)
22、输入两个正整数m和n,求其最大公约数和最小公倍数。
提示:
m和n的积除以m
23、
输入一个数,求这个数的各位数字之和。
24、递归编写将任意10进制数转换为2进制数。
25、角谷定理。
输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。
经过如此有限次运算后,总可以得到自然数值1。
求经过多少次可得到自然数1。
如:
输入22,
输出
22
11
34
17
52
26
13
40
20
10
5
16
8
4
2
1
STEP=16
数组作为函数参数
26、利用数组元素作为参数,编写函数找到数组中的最大值,并指出最大值的位置。
27、利用数组作为参数,编写函数找到数组中的最大值,并指出最大值的位置。
28、有两个班级,分别有35名和30名学生,调用一个average函数,分别求这两个班的学生的平均成绩。
29、编写冒泡排序及选择排序的函数,并对数组进行排序。
30、编一个程序,读入具有5个元素的整型数组,然后调用一个函数,递归计算这些元素的积。
31、编一个程序,读入具有5个元素的实型数组,然后调用一个函数,递归地找出其中的最大元素,并指出它位置。
32、编写函数对二维数组按照指定的行或列排序。
(如下图按照0列排序,对应行数据也发生移位)
33、编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述的结果。
请填空完成上述功能的程序。
34、m个人的成绩存放在score数组中,请编写函数fun,它的功能是:
将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指定的函数中。
35、请编写函数fun,它的功能是:
求出1到1000之内能被7或者11整除,但不能同时被7和11整除的所有整数,并将他们放在一个数组中,通过n返回这些数的个数。
36、请编写一个函数统计在某字符串中"
a"
到"
z"
26个字母各自出现的次数,并将结果放在一个数组中,主函数中输出结果。
37、利用14题的函数,请再编写一个函数voidfun(intm,intk,intxx[]),该函数的功能是:
将大于整数m且紧靠m的k个素数存入xx所指的数组中。
38、编写函数,删除一个字符串中指定的字符,并将删除后的结果存入另一个字符串中,返回删除字符的个数。
函数综合练习:
39、编写函数fun,功能是:
根据以下公式计算s,计算结果作为函数值返回;
n通过形参传入。
S=1+1/(1+2)+1/(1+2+3)+…….+1/(1+2+3+4+……+n)
40、递归输出杨辉三角
main(){
inti,j,n;
clrscr();
printf("
Inputn="
);
scanf("
%d"
&
n);
for(i=1;
i<
=n;
i++)
{for(j=0;
j<
=n-i;
j++)
printf("
"
/*为了保持三角形态,此处输出两个空格*/
for(j=1;
=i;
%3d"
c(i,j));
\n"
}
intc(intx,inty)
{intz;
if(y==1||y==x)return1;
else
{z=c(x-1,y-1)+c(x-1,y);
returnz;
}
41、
参考答案
第16题:
intmain(void)
{
intadd(intn);
ints=0;
s=add(36);
s);
getch();
return0;
intadd(intn)
ints;
if(n==1)
s=1;
else
s=add(n-1)+n;
returns;
第20题:
s=tao(10);
inttao(intn)
return1;
return(tao(n-1)+1)*2;
第22题:
ints,m,n;
scanf("
m);
if(m<
n)
{
s=m;
m=n;
n=s;
s=gong(m,n);
/*M>
N*/
intgong(intm,intn)
if(n==0)
returnm;
returngong(n,m%n);
第23题:
add_every_num(intnum)
{
if(num<
10)returnnum;
returnnum%10+add_every_num(num/10);
第24题:
intn;
intten2two(intn);
ten2two(n);
intten2two(n)
intx;
x=1;
x=n%2;
ten2two(n/2);
x);
第25题:
intn,s=0;
intjiaogu(intn,ints);
jiaogu(n,s);
intjiaogu(n,s)
intx=n;
s++;
%d\nstep=%d"
x,s);
%d"
if(n%2==0)
x=n/2;
jiaogu(x,++s);
x=n*3+1;
第30题:
#include"
stdlib.h"
intmain()
intji(inta[],ints);
inta[5],s,i;
randomize();
for(i=0;
5;
a[i]=random(5)+1;
a[i]);
s=ji(a,4);
\n%d"
intji(inta[],intn)
s=a[0];
s=ji(a,n-1)*a[n];
第31题
(一)在数组中利用a[0]保存最大数的位置
Stdio.h"
Conio.h"
voidmain()
voidmmax(inta[],intn);
inta[6],i;
for(i=1;
i<
=5;
i++)
a[i]=random(100);
a[0]=1;
mmax(a,5);
\n%d%d"
a[a[0]],a[0]);
voidmmax(inta[],intn)
if(n<
=0)
return;
if(a[n]>
a[a[0]])
a[0]=n;
mmax(a,n-1);
(二)利用全局变量保存最大值的位置,函数有返回值。
intx;
intmmax(inta[],intn);
inta[5],n,i;
n=mmax(a,4);
n,x);
intmmax(inta[],intn)
if(mmax(a,n-1)>
a[n])
x=n-1;
s=mmax(a,n-1);
x=n;
s=a[n];
第32题(还未改为函数)
/*二维数组按任意行或列排序*/
main()
inta[10][10],i,j,k,t,n,m;
inputm(row-0,col-1):
"
inputn(0-9):
10;
for(j=0;
a[i][j]=random(100);
%3d"
a[i][j]);
if(m==1)
9-i;
if(a[j][n]>
a[j+1][n])
for(k=0;
k<
k++)
t=a[j][k];
a[j][k]=a[j+1][k];
a[j+1][k]=t;
if(a[n][j]>
a[n][j+1])
t=a[k][j];
a[k][j]=a[k][j+1];
a[k][j+1]=t;
第36题:
charchr[100];
intcou[26]={0},i;
gets(chr);
count(chr,cou);
26;
%c=>
%d\t"
i+'
A'
cou[i]);
count(chara[],intb[])
inti=0;
while(a[i]!
='
\0'
if(a[i]>
a'
&
a[i]<
z'
b[a[i]-'
]++;
elseif(a[i]>
Z'
i++;