作业1:定义有参函数实现,主调函数中输入两个数据,通过函数调用,交换该两个变量的值,主调函数输出交换后的结果
#include <stdio.h>
//声明交换函数
void change(int *p1,int *p2);
void main()
{
int a,b;
int *p1 = &a;
int *p2 = &b;
printf("请输入两个数,中间用逗号隔开\n");
scanf("%d,%d",&a,&b);
//调用交换函数
change(p1,p2);
printf("a = %d\tb = %d\n",a,b);
}
//交换函数
void change(int *p1,int *p2)
{
*p1^=*p2;*p2^=*p1;*p1^=*p2;
}
输出结果:
![](https://i-blog.csdnimg.cn/blog_migrate/13dc46045b1e044adb2a5602e4f40f51.png)
作业2:定义函数实现,主调函数中,输入6名学生成绩,调用函数求6名学生成绩的平均值,将平均值返回给主函数并输出。
要求:使用主调函数中传递数组,被调函数使用指针接收
#include <stdio.h>
//声明求平均值函数
double avg(int *p,int n);
void main()
{
int scort[6];
//输入学生成绩
int i;
for(i=0;i<6;i++)
{
printf("请输入第%d位学生的成绩:",i+1);
scanf("%d",&scort[i]);
}
//输出平均值
printf("学生的平均成绩为为:%.2lf\n",avg(scort,6));
}
//成绩录入函数
double avg(int *p,int n)
{
int i;
double sum=0;
for(i=0;i<n;i++)
{
sum+=p[i];
}
return sum/n;
}
输出结果:
![](https://i-blog.csdnimg.cn/blog_migrate/1b5e20dc9c60d7d0142b572d893c3a4e.png)
作业3:定义一个长度为5的一维数组,在主函数内实现输入元素功能,调用函数实现该数组的降序输出,要求形参与实参皆使用指针完成。
#include <stdio.h>
//声明冒泡排序
void maopao(int *p,int n);
void main()
{
int arr[5];
//将数组地址赋值给指针p
int *p=arr;
//输入元素
int i;
for(i=0;i<5;i++)
{
printf("请输入第%d位元素:",i+1);
scanf("%d",&arr[i]);
}
maopao(p,5);
}
void maopao(int *p,int n)
{
int i,j;
for (i=1;i<n;i++)
{
for(j=0;j<n-i;j++)
{
if(p[j]<p[j+1])
{
p[j]^=p[j+1];p[j+1]^=p[j];p[j]^=p[j+1];
}
}
}
for (i=0;i<n;i++)
{
printf("%d ",*(p+i));
}
printf("\n");
}
输出结果:
![](https://i-blog.csdnimg.cn/blog_migrate/9dca69604280719be005d1a1ab23a0a6.png)
作业4:定义一个长度为5的一维数组,在主函数内实现输入元素功能,调用函数实现该数组的逆置,要求形参与实参皆使用指针完成。
#include <stdio.h>
//声明转置函数
void et(int *p,int n);
void main()
{
int arr[5];
//将数组地址赋值给指针p
int *p=arr;
//输入元素
int i;
for(i=0;i<5;i++)
{
printf("请输入第%d位元素:",i+1);
scanf("%d",&arr[i]);
}
et(p,5);
}
void et(int *p,int n)
{
int i=0;
int j=n-1;
while(i<j)
{
p[i]^=p[j];p[j]^=p[i];p[i]^=p[j];
i++;j--;
}
//输出转置后数组
for (i=0;i<n;i++)
{
printf("%d ",*(p+i));
}
printf("\n");
}
输出结果:
![](https://i-blog.csdnimg.cn/blog_migrate/e3be206d82835cbbbd4d68cbeea554bd.png)
作业5:一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶了多少只鸭子?使用递归函数求出鸭子总数。
#include <stdio.h>
//递归求鸭子数量
int yz(int n);
void main()
{
printf("他出发时赶了%d只鸭子\n",yz(7));
}
int yz(int n)
{
if(n==0)
return 2;
else
return (yz(n-1)+1)*2;
}
输出结果:
![](https://i-blog.csdnimg.cn/blog_migrate/5326a088340d6936683eb32a28d62e55.png)
作业6:小明想要编写一个递归函数,接收一个非负整数,输出该数的所有位,请你帮帮他吧。
#include <stdio.h>
//声明递归函数
void putout(int i);
void main()
{
int i;
scanf("%d",&i);
//调用递归函数
putout(i);
printf("\n");
}
void putout(int i)
{
if(i/10!=0)
{
putout(i/10);
printf("%d ",i%10);
}
else
printf("%d ",i%10);
}
输出结果:
![](https://i-blog.csdnimg.cn/blog_migrate/31fc74a3e9929e1223b2a8ed8ba61194.png)