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