作业1:定义有参函数实现,主调函数中输入两个数据,通过函数调用,交换该两个变量的值,主调函数输出交换后的结果。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void fun(int *p,int *q)
{
int c;
//交换三部曲
c=*p;*p=*q;*q=c;
}
int main(int argc, const char *argv[])
{
int a,b;
printf("请输入两个数:");
scanf("%d%d\n",&a,&b);
int *p=&a;
int *q=&b;
//调用功能函数
fun(p,q);
printf("交换后为%d,%d\n",a,b);
return 0;
}
作业2:定义函数实现,主调函数中,输入6名学生成绩,调用函数求6名学生成绩的平均值,将平均值返回给主函数并输出。要求:使用主调函数中传递数组,被调函数使用指针接收
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//定义功能函数
double fun(int *p,int n)
{
int sum=0;
for(int i=0;i<n;i++)
{
sum +=p[i];
}
return 1.0*sum/n; //返回平均值
}
int main(int argc, const char *argv[])
{
int arr[6];
double ret;
printf("请输入6名学生的成绩:\n");
for(int i=0;i<6;i++)
{
scanf("%d\n",&arr[i]);
}
//调用功能函数
ret=fun(arr,6);
printf("这6名学生成绩的平均分为:%lf\n",ret);
return 0;
}
作业3:定义一个长度为5的一维数组,在主函数内实现输入元素功能,调用函数实现该数组的降序输出,要求形参与实参皆使用指针完成。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//定义功能函数
void fun(int *p, int n)
{
//降序
int temp;
for(int i=1;i<n;i++)
{
for(int j=0;j<n-i;j++)
{
if(p[j]<p[j+1])
{
//交换三部曲
temp=p[j];p[j]=p[j+1];p[j+1]=temp;
}
}
}
}
int main(int argc, const char *argv[])
{
int arr[5];
printf("请输入一串数字:");
for(int i=0;i<5;i++)
{
scanf("%d",&arr[i]);
}
//调用功能函数
fun(arr,5);
//输出排序后的数组
printf("排序后的数组为:\n");
for(int i=0;i<5;i++)
{
printf("%d\t",arr[i]);
}
printf("\n");
return 0;
}
作业4:定义一个长度为5的一维数组,在主函数内实现输入元素功能,调用函数实现该数组的逆置,要求形参与实参皆使用指针完成
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//定义功能函数
void fun(int *p,int n)
{
//将数组逆置
int temp;
for(int i=0;i<n/2;i++)
{
//交换三部曲
temp=p[i];
p[i]=p[n-1-i];
p[n-1-i]=temp;
}
}
int main(int argc, const char *argv[])
{
int arr[5];
printf("请输入一串数字:");
for(int i=0;i<5;i++)
{
scanf("%d",&arr[i]);
}
//调用功能函数
fun(arr,5);
//输出逆置后的数组
printf("逆置后的新数组为:");
for(int i=0;i<5;i++)
{
printf("%d\t",arr[i]);
}
printf("\n");
return 0;
}
作业5:一个人赶着鸭子去每个村庄卖,每经过一个村子 卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶了多少只鸭子?用递归函数求出鸭子的总数。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//构造递归函数
int f(int n)
{
if(n==8)
{
return 2;
}else
{
return (f(n+1)+1)*2;
n++;
}
}
int main(int argc, const char *argv[])
{
int ret;
//调用递归函数
ret=f(1);
printf("鸭子总数为:%d\n",ret);
return 0;
}
作业6:小明想要编写一个递归函数, 接收一个非负整数, 输出该数的所有位,请你帮帮他吧。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//构造递归函数
int f(int n)
{
if(n%10==0)
{
return 0;
}else
{
printf("%d\t",n%10);
return f(n/10);
}
}
int main(int argc, const char *argv[])
{
int num;
printf("请输入一个数:");
scanf("%d",&num);
//调用递归函数
printf("%d的每一位数为:",num);
f(num);
printf("\n");
return 0;
}