实验六 函数程序设计(一)
一.实验目的
1. 掌握程序中函数的基本操作方法;
2. 掌握函数的程序设计。
二.实验环境
1. 硬件:PII以上计算机;
2. 软件:Windows、Visual C++ 6.0;
3. 其它:一张软盘或者U盘等可移动的存储设备。
三.实验内容
练习1.用递归方法解决猴子吃桃子的问题(P129习题6.10)。
运行结果:1534
练习2.编写一个程序,其中包含一个子函数,功能为计算: 。
子函数要求:
形式为:long c(int x);
功能为:求x!
运行结果示例:
练习3.编写一个程序,其中包含一个子函数,功能为判断两个数的符号是否相同。若相同则输出字母Y,否则输出字母N。
子函数要求:
形式为:char f(float a,floatb);
运行结果示例:
练习4.编写一个程序,其中包含一个子函数,功能为找出一维数组元素(设共10个)中的最小值及其下标。
子函数要求:
形式为:int min(int a[ ],int n);
(其中:n为数组元素的个数,子函数返回值为最小元素的下标值)
运行结果示例:
练习5.编写一个程序,其中包含一个子函数,功能为取出数x从右边起的第m位数字,如digit(1234,3)=2,digit(1234,6)=0。
子函数要求:
形式为:int digit(int n,int k);
运行结果示例:
练习6.编写一个程序,其中包含一个子函数,功能为在字符串中查找某个字符首次出现的位置,若字符串中没有该字符,则给出0。
子函数要求:
形式为:int at(char s[ ],charc);
运行结果示例:
练习1
#include<iostream.h>
#include<stdio.h>
void main()
{
intsum(int x);
inty;
y=sum(1);
printf("共摘了:%d",y);
cout<<endl;
}
int sum(int x)
{
intz;
if(x<10)z=(sum(x+1)+1)*2;
if(x==10)z=1;
return(z);
}
练习二:
#include"stdio.h"
void main()
{
longc(int x);
intm,n,
long x,y,z;
printf("Inputthe m and n:");
scanf("%d%d",&m,&n);
x=c(m);
y=c(n);
z=c(m-n);
printf("Theresult is: %d\n",x/(y*z));
}
long c(int x)
{
longa;
if(x<0)
printf("x<0,dataerror!");
else
if(x==0||x==1)
a=1;
else
a=c(x-1)*x;
return(a);
}
练习3
#include<iostream.h>
void main()
{
floatcmp(float a,float b);
floatx,y;
cout<<"inputtwo floats :"<<endl;
cin>>x>>y;
if(cmp(x,y)==1)cout<<"y"<<endl;
if(cmp(x,y)==0)cout<<"n"<<endl;
}
float cmp(float a,float b)
{
floati;
if(a/b>0)i=1;
elsei=0;
return(i);
}
练习4
#include<iostream.h>
void main()
{
intwax(int a[10],int n);
inta[10],y,i;
cout<<"input10 munbers:"<<endl;
for(i=0;i<10;i++)
cin>>a[i];
y=wax(a,10);
cout<<"最小值:"<<a[y]<<endl;
cout<<"下标:"<<y<<endl;
}
int wax(int a[10],int n)
{
intmax=a[0],z,i;
for(i=1;i<10;i++)
if(max>a[i])z=i;
return(z);
}
练习5
#include<iostream.h>
void main()
{
intdigit(int n,int k);
intx,m,y;
cout<<"请出入x和m的值:"<<endl;
cin>>x>>m;
y=digit(x,m);
cout<<"digit("<<x<<","<<m<<")="<<y<<endl;
}
int digit(int n,int k)
{
intz,w,i;
for(i=1;i<=k;i++)
{
w=n%10;
n=n/10;
}
z=w;
return(z);
}
练习6
#include<iostream.h>
#include<stdio.h>
void main()
{
intat(char s[20],char c);
chars[20],x;
cout<<"输入字符串:"<<endl;
gets(s);
cout<<"输入查询字符:";
cin>>x;
cout<<endl<<"首次出现位置:"<<at(s,x)<<endl;
}
int at(char s[20],char c)
{
intj,z;
for(j=0;s[j]!='\0';j++)
if(s[j]==c)
{
z=j;
break;
}
if(s[j]=='\0')z=0;
return(z);
}