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