作业1:定义有参函数实现,主调函数中输入两个数据,通过函数调用,交换该两个变量的值,主调函数输出交换后的结果
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int fun();
int fun(int m ,int n){//交换主函数传递的值
int temp=0;
temp=m; m=n; n=temp;
printf("%d\t%d\n", m, n);
return m,n;
}
int main(int argc, const char *argv[])
{
int m,n;//输入两个数据
printf("请分别输入两个数据:");
scanf("%d%d", &m, &n);
fun(m, n);
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/fe3ae60bb13bfdc179f4847197709d8c.png)
作业2:定义函数实现,主调函数中,输入6名学生成绩,调用函数求6名学生成绩的平均值,将平均值返回给主函数并输出。
要求:使用主调函数中传递数组,被调函数使用指针接收
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
double fun(int *b, int len);//函数声明
double fun(int *b, int len){//统计成绩并返回成绩的平均数
double aver =0.0;//成绩平均数
int sum=0; //成绩总和
int i=0;
for(i=0; i<len; i++){ //遍历
sum+=b[i];
}
aver=sum/6.0;
return aver;
}
int main(int argc, const char *argv[])
{
int arr[6]={0};//定义接受学生成绩的数组
int i=0; //用于计数
for(i=0; i<6; i++){ //遍历输入成绩
printf("请输入第%d位同学的成绩:", i+1);
scanf("%d", &arr[i]);
}
printf("\n");
double aver=fun(arr,6);
printf("同学们的平均成绩为:%.2lf\n", aver);
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/563d25d67a029b2b60d4ab7b87a5b8ba.png)
作业3:定义一个长度为5的一维数组,在主函数内实现输入元素功能,调用函数实现该数组的降序输出,要求形参与实参皆使用指针完成。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
void fun(int *b, int len);
void fun(int *b, int len){
int temp=0;
for(int i=1; i<len; i++){ //冒泡排序,降序
for(int j=0; j<len-i; j++){
if(b[j]<b[j+1]){
temp=b[j]; b[j]=b[j+1]; b[j+1]=temp;
}
}
}
for(int i=0; i<len; i++){ //遍历输出数组
printf("%d\t", b[i]);
}
printf("\n");
}
int main(int argc, const char *argv[])
{
int arr[5]={0}; //数组初始化
int *a=arr; //指针指向数组的首地址
int i=0;
for(i=0; i<5; i++){ //数组的遍历输入
printf("请输入第%d位数:", i+1);
scanf("%d", &a[i]);
}
printf("\n");
fun(a, 5);
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/88eb096517ec833477fb4f9e1d0a528d.png)
作业4∶定义一个长度为5的一维数组,在主函数内实现输入元素功能,调用函数实现该数组的逆置,要求形参与实参皆使用指针完成
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
void fun(int *b, int len);
void fun(int *b, int len){
int temp=0;
for(int i=0; i<len/2; i++){ //数组的逆置
temp=b[i]; b[i]=b[len-1-i]; b[len-1-i]=temp;
}
for(int i=0; i<len; i++){ //遍历输出数组
printf("%d\t", b[i]);
}
printf("\n");
}
int main(int argc, const char *argv[])
{
int arr[5]={0}; //数组初始化
int *a=arr; //指针指向数组的首地址
int i=0;
for(i=0; i<5; i++){ //数组的遍历输入
printf("请输入第%d位数:", i+1);
scanf("%d", &a[i]);
}
printf("\n");
fun(a, 5);
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/174bc15ac2f48fcdf6829d78fe2b1c9a.png)
作业5:一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶了多少只鸭子?使用递归函数求出鸭子总数。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int fun(int n);//函数声明
int fun(int n){
if(n==1){
return 2;
}else{
return (fun(n-1)+1)*2;//递归调用
}
}
int main(int argc, const char *argv[])
{
int sum=fun(8);//鸭子的总数量
printf("鸭子的总数量为:%d只\n", sum);
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/884f2057b081fc1f16862c9ecb0e4751.png)
作业6:小明想要编写一个递归函数,接收一个非负整数,输出该数的所有位,请你帮帮他吧。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int f(int n);//函数声明
int f(int n){
if(n){
printf("%d\t", n%10);//依次输出低位
f(n/10);
}
}
int main(int argc, const char *argv[])
{
int num=0;//输入数
printf("请输入一个整数:");
scanf("%d", &num);
printf("整数低位到高位分别为:\t");
f(num);
printf("\n");
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/d877886b377b1b4068a1c8023b20264d.png)