作业1:定义有参函数实现,主调函数中输入两个数据,通过函数调用,交换该两个变量的值,主调函数输出交换后的结果
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
void fun1(int *p,int *q)
{
int temp;
temp=*p;
*p=*q;
*q=temp;
}
int main(int argc, const char *argv[])
{
int i,j;
printf("请输入两个数: ");
scanf("%d%d",&i,&j);
fun1(&i,&j);
printf("输出结果为:i=%d j=%d",i,j);
printf("\n");
return 0;
}
ubuntu@ubuntu:~$ vi a11.c
ubuntu@ubuntu:~$ vi aa1.c
ubuntu@ubuntu:~$ gcc aa1.c
ubuntu@ubuntu:~$ ./a.out
请输入两个数: 23 45
输出结果为:i=45 j=23
定义函数实现,主调函数中,输入6名学生成绩,调用函数求6名学生成绩的平均值,将平均值返回给主函数并输出。
要求:使用主调函数中传递数组,被调函数使用指针接收
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
double fun(int *arr,int n )
{ int i,sum;
for(i=0;i<n;i++)
{
sum+=arr[i];
}
return sum/n;
}
int main(int argc, const char *argv[])
{
int brr[6];
for(int i=0;i<6;i++)
{
printf("输入第%d个学生的成绩: ",i+1);
scanf("%d",&brr[i]);
}
double avg=fun(brr,6);
printf("平均成绩为:%.2lf\n",avg);
return 0;
}
ubuntu@ubuntu:~$ vi b11.c
ubuntu@ubuntu:~$ gcc b11.c
ubuntu@ubuntu:~$ ./a.out
输入第1个学生的成绩: 23
输入第2个学生的成绩: 45
输入第3个学生的成绩: 67
输入第4个学生的成绩: 78
输入第5个学生的成绩: 56
输入第6个学生的成绩: 87
平均成绩为:59.00
作业3:定义一个长度为5的一维数组,在主函数内实现输入元素功能,调用函数实现该数组的降序输出,要求形参与实参皆使用指针完成。
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
void fun1(int *a,int n)
{
for(int i=1;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(a[j]<a[j+1])
{
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
printf("输出为: ");
for(int i=0;i<n;i++)
{
printf("%d\t",a[i]);
}
printf("\n");
int main(int argc, const char *argv[])
{
int arr[5];
for(int i=0;i<5;i++)
{
printf("第%d位的值为\n",i+1);
scanf("%d",&arr[i]);
}
fun1(arr,5);
return 0;
}
作业4:定义一个长度为5的一维数组,在主函数内实现输入元素功能,调用函数实现该数组的逆置,要求形参与实参皆使用指针完成
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
void fun(int *a,int n)
{
for(int i=0;i<n/2;i++)
{
int temp;
temp=a[i];
a[i]=a[n-1-i];
a[n-1-i]=temp;
}
printf("数组为: ");
for(int i=0;i<n;i++)
{
printf("%d\n",a[i]);
}
printf("\n");
}
int main(int argc, const char *argv[])
{
int arr[5];
for(int i=0;i<5;i++)
{
printf("输入第%d位的值: ",i+1);
scanf("%d",&arr[i]);
}
fun(arr,5);
return 0;
}
作业5:一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶了多少只鸭子?使用递归函数求出鸭子总数。
#include <stdio.h>
#include <string.h>
int dg(int n,int l){
if(n==0){
return l;
}
return dg(n-1,(l+1)*2);
}
void main()
{
printf("鸭子总数:%d\n",dg(7,2));
}
ubuntu@ubuntu:~$ vi 333e.c
ubuntu@ubuntu:~$ gcc 333e.c
ubuntu@ubuntu:~$ ./a.out
鸭子总数:510
作业6:小明想要编写一个递归函数,接收一个非负整数,输出该数的所有位,请你帮帮他吧。
#include <stdio.h>
void print_digits(int n) {
if (n < 10) { // 当n小于10时,直接输出该数
printf("%d ", n);
} else { // 当n大于等于10时,递归输出n/10的所有位
print_digits(n / 10);
printf("%d ", n % 10); // 输出n的个位数
}
}
int main() {
int n;
printf("请输入一个非负整数:");
scanf("%d", &n);
printf("该数的所有位为:");
print_digits(n);
printf("\n");
return 0;
}
ubuntu@ubuntu:~$ vi 322q.c
ubuntu@ubuntu:~$ gcc 322q.c
ubuntu@ubuntu:~$ ./a.out
请输入一个非负整数:456
该数的所有位为:4 5 6