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