![](https://i-blog.csdnimg.cn/blog_migrate/60bf807715550deb4efcdef98e4cf9e8.png)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//定义交换值函数
void exchange(int *p,int *q)
{
int temp;
//交换三部曲
temp = *p;*p = *q; *q = temp;
}
int main(int argc, const char *argv[])
{
int a ,b ;
//输入两个数
printf("请输入两个数");
scanf("%d%d",&a,&b);
//调用交换值函数
exchange(&a,&b);
//输出交换后结果
printf("%d\t%d\n",a,b);
return 0;
}
ubuntu@ubuntu:day8$
运行:
ubuntu@ubuntu:day8$ ./a.out
请输入两个数34 78
78 34
![](https://i-blog.csdnimg.cn/blog_migrate/1ac0ff29dc00689eb830d882cca473f4.png)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
double result(int * p ,int n)
{
int sum = 0;
double aver ;
for(int i = 0 ; i<n; i++ )
{
sum += *(p+i);
}
aver = (double)sum/n ;
return aver;
}
int main(int argc, const char *argv[])
{
int a[6];
for(int i = 0 ;i < 6;i++)
{
printf("请输入第%d名学生的成绩:",i+1);
scanf("%d",&a[i]);
if(a[i]<0||a[i]>100)
{
printf("数据有误,请重新输入\n");
i--;
}
}
double b ;
b = result(a,6);
printf("学生成绩的平均值是%.2f\n",b);
return 0;
}
运行:
ubuntu@ubuntu:day8$ ./a.out
请输入第1名学生的成绩:23
请输入第2名学生的成绩:45
请输入第3名学生的成绩:67
请输入第4名学生的成绩:89
请输入第5名学生的成绩:76
请输入第6名学生的成绩:43
学生成绩的平均值是57.17
![](https://i-blog.csdnimg.cn/blog_migrate/edc956aace067448b0c86629aa413698.png)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//封装降序排列函数
void paixu(int *q,int n)
{
int i , j ,maxj ;
int temp ;
//选择排序
for(i = 0;i < n;i++)
{
maxj = i ;
for(j =i + 1 ; j < n ;j++)
{
if(*(q+maxj) < *(q+j))
{
maxj = j ;
}
}
//判断并选择交换三部曲
if(i != maxj)
{
temp = *(q+i);*(q+i) = *(q+maxj);*(q+maxj) = temp;
}
}
printf("降序排列结果\n");
for (int i = 0; i < n; i++)
{
printf("%d\t",*(q+i));
}
printf("\n");
}
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));
}
paixu(p,5);
return 0;
}
运行:
请输入第个1数23
请输入第个2数45
请输入第个3数67
请输入第个4数89
请输入第个5数65
降序排列结果
89 67 65 45 23
![](https://i-blog.csdnimg.cn/blog_migrate/70b38c9e7895c269acb9aa8044614445.png)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//封装逆置函数
void nizhi(int *q , int n)
{
int temp ;
for(int i = 0; i < n/2 ;i++)
{
//两两交换
temp = *(q+i);*(q+i) = *(q + n -1 - i);*(q + n - 1 - i) = temp;
}
}
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);
}
//调用逆置函数
nizhi(p,5);
//输出逆置结果
for(int i = 0; i<5; i++)
{
printf("%d\t",*(p+i));
}
printf("\n");
return 0;
}
运行:
ubuntu@ubuntu:day8$ ./a.out
请输入第1个数22
请输入第2个数33
请输入第3个数44
请输入第4个数55
请输入第5个数66
66 55 44 33 22
![](https://i-blog.csdnimg.cn/blog_migrate/c1b8d64d67f9bcad1ad544c734142710.png)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//封装递归函数
int f(int n)
{
if(n==1)
{
return 2;
}else
{
return 2*(f(n - 1) + 1);
}
}
int main(int argc, const char *argv[])
{
int n = 7;
int num ;//鸭子总数
//调用递归函数并输出结果
num = f(n);
printf("他出发时共赶了%d只鸭子\n",num);
return 0;
}
运行:
ubuntu@ubuntu:day8$ ./a.out
他出发时共赶了254只鸭子
![](https://i-blog.csdnimg.cn/blog_migrate/20abd71877bd410fe80715aa5b614c1e.png)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//封装取余除10函数
void fun(int n)
{
static int i = 1;//定义静态局部变量i
int m ;
m = n%10; //取余数并输出
printf("这个数的第%d位是%d\n",i++,m);
n = n/10 ; //抹除最后一位
if(n == 0)
{
printf("\n"); //递归出口
}else
{
fun(n); //递归循环
}
}
int main(int argc, const char *argv[])
{
//输入数值
int num ;
printf("输入一个非负整数");
scanf("%d",&num);
//调用取余除10函数
fun(num);
return 0;
}
运行:
ubuntu@ubuntu:day8$ ./a.out
输入一个非负整数345678
这个数的第1位是8
这个数的第2位是7
这个数的第3位是6
这个数的第4位是5
这个数的第5位是4
这个数的第6位是3