函数作业 |
基础作业 1.编写一个程序,该程序使用一个函数来计算5个float数的平均值 2.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入 3.编写函数实现输出100~999之间的水仙花数,并统计水仙花数的个数 4.用函数实现求1+1/2+1/3+1/4+……1/n 的值 5.编写函数,实现将一个字符串中的所有字符 a 用指定字符代替。 例如:char str[20]=”abcba”;fun(str,’*’); 数组的值变为”*bcb*” 提高作业 6.函数计算:一个皮球从 100 米高度自由落下,每次落地后反弹回原高度的一半再落下,再反弹。求当它第 n 次落地时,共经过了多少米 扩展作业 7.不使用标准库,分别写三个函数实现字符的复制、比较、拼接功能 |
#include
#include
float fun(float buff[],int len)
{
float sum=0,average;
int i;
for(i=0;i
/*编译结果:
输入5个float类型的数值:1.2 3.4 5.6 7.8 9.0
平均值为:5.40
*/
//结论:
/*
调用函数fun(),传递数组buff的值。
函数定义:int fun(int buff[],int len)
函数调用:fun(buff,5)
*/
#include
#include
int appro(int num1,int num2)
{
int i;
for(i=num1;i>=1;i--)
{
if(num1%i==0)
{
if(num2%i==0)
{
printf("%d与%d的最大公约数为:%d\n",num1,num2,i);
break;
}
}
}
}
int multiple(int num1,int num2)
{
int i;
for(i=1;i<=num1;i++)
{
if(num2*i%num1==0)
{
printf("%d与%d的最小公倍数为:%d\n",num1,num2,num2*i);
break;
}
}
}
int main()
{
int num1,num2;
printf("输入第1个整型数值:");
scanf("%d",&num1);
printf("输入第2个整型数值:");
scanf("%d",&num2);
appro(num1,num2);
multiple(num1,num2);
}
/*编译结果:
输入第1个整型数值:12
输入第2个整型数值:3
12与3的最大公约数为:3
12与3的最小公倍数为:12
*/
#include
#include
void flower(void)
{
int i,a,b,c,num=0;
for(i=100;i<1000;i++)
{
a=i/100;
b=i%100/10;
c=i%10;
if(a*a*a+b*b*b+c*c*c==i)
{
num++;
}
}
printf("水仙花的个数为%d\n",num);
}
int main()
{
flower();
}
/*编译结果:
水仙花的个数为4
*/
#include
#include
void sum(int n)
{
int i;
float j=0;
for(i=1;i<=n;i++)
{
j+=1.0/i;
}
printf("函数求和的值为:%.2f\n",j);
}
int main()
{
int n;
printf("输入n的值:");
scanf("%d",&n);
sum(n);
}
/*编译结果:
输入n的值:10
函数求和的值为:2.93
*/
#include
#include
void fun(char str[],char a)
{
int i=0;
while(str[i]!=0)
{
if(str[i]=='a')
{
str[i]=a;
}
i++;
}
printf("替换后的字符串为:%s\n",str);
}
int main()
{
char str[20] = "abcba";
fun(str,'*');
}
/*编译结果:
替换后的字符串为:*bcb*
*/
#include
#include
void len(int n)
{
int i;
float sum=100,high=100;
for(i=2;i<=n;i++)
{
sum+=high;
high/=2;
}
printf("%d次落地共经过%.2f米。\n",n,sum);
}
int main()
{
int n;
printf("输入落地的次数:");
scanf("%d",&n);
len(n);
}
/*编译结果:
输入落地的次数:4
4次落地共经过275.00米。
*/
//递归算法
#include
#include
float len(int n)
{
float sum;
if(n<2)
{
sum=100;
}
else
{
sum+=len(n-1)/2+150;
}
return sum;
}
int main()
{
int n;
printf("输入落地的次数:");
scanf("%d",&n);
printf("%d次落地共经过%.2f米。\n",n,len(n));
}
/*编译结果:
输入落地的次数:4
4次落地共经过275.00米。
*/
#include
#include
/**************************************
函数名称:strcpy
函数功能:字符串复制
**************************************/
void StrCpy(char buff[],char str[])
{
int i=0;
while(str[i]!=0)
{
buff[i]=str[i];
i++;
}
buff[i]=0;
printf("字符串复制结果为:%s\n",buff);
}
/**************************************
函数名称:StrCmp
函数功能:字符串对比
返回值:0 相同,1 不同
**************************************/
int StrCmp(char buff[],char str [])
{
int i=0,flag=1;
while(str[i]!=0)
{
if(str[i]==buff[i])
flag = 0;
else
{
flag = 1;
break;
}
i++;
}
if(buff[i]!=0)
flag=1;
return flag;
}
/**************************************
函数名称:StrCat
函数功能:字符串拼接
**************************************/
void StrCat(char buff[],char str[])
{
int i=0,j=0;
while(buff[i]!=0)
{
i++;
}
while(str[j]!=0)
{
buff[i]=str[j];
i++;
j++;
}
buff[i]=0;
printf("拼接的结果为:%s\n",buff);
}
int main()
{
char buff[128]="qwer";
char str[]="1234";
//字符串复制
printf("buff为:%s\n",buff);
printf("str为:%s\n",str);
StrCpy(buff,str);
//字符串对比
printf("buff为:%s\n",buff);
printf("str为:%s\n",str);
if(StrCmp(buff,str)==0)
printf("字符串对比结果相同。\n");
else
printf("字符串对比结果不同。\n");
//字符串拼接
printf("buff为:%s\n",buff);
printf("str为:%s\n",str);
StrCat(buff,str);
}
/*编译结果:
buff为:qwer
str为:1234
字符串复制结果为:1234
buff为:1234
str为:1234
字符串对比结果相同。
buff为:1234
str为:1234
拼接的结果为:12341234
*/