(1):定义有参函数实现,主调函数中输入两个数据,通过函数调用,交换该两个变量的值,主调函数输出交换后的结果
ubuntu@ubuntu:~/day7/lianxi$ ./1
请输入两个数据:33 77
*p1= 77 *p2= 33
交换后: 77,33
ubuntu@ubuntu:~/day7/lianxi$ cat 1.c
#include <stdio.h>
void exchange(int *p1, int *p2)
{
int temp = 0;
temp = *p1;
*p1 = *p2;
*p2 = temp;
printf("*p1= %d *p2= %d\n", *p1, *p2);
}
int main(int argc, const char *argv[])
{
int a = 0;
int b = 0;
printf("请输入两个数据:");
scanf("%d %d", &a, &b);
exchange(&a,&b);
printf("交换后: %d,%d\n", a,b);
return 0;
}
(2):定义函数实现,主调函数中,输入6名学生成绩,调用函数求6名学生成绩的平均值,将平均值返回给主函数并输出。要求:使用主调函数中传递数组,被调函数使用指针接收。
ubuntu@ubuntu:~/day7/lianxi$ ./2
请输入学生成绩:第1位同学成绩:89
第2位同学成绩:99
第3位同学成绩:45
第4位同学成绩:78
第5位同学成绩:86
第6位同学成绩:56
学生的平均成绩为:79.40
ubuntu@ubuntu:~/day7/lianxi$ cat 2.c
#include <stdio.h>
double average(int *p1, int n)
{
int sum = 0;
for(int i=0; i<n; i++)
{
sum = p1[i] + sum;
}
return (double)sum/n;
}
int main(int argc, const char *argv[])
{
int s[6] = {0};
printf("请输入学生成绩:");
for(int i=0; i<6; i++)
{
printf("第%d位同学成绩:", i+1);
scanf("%d", &s[i]);
}
double a = average(s,5);
printf("学生的平均成绩为:%.2lf\n", a);
return 0;
}
(3):定义一个长度为5的一维数组,在主函数内实现输入元素功能,调用函数实现该数组的降序输出,要求形参与实参皆使用指针完成。
ubuntu@ubuntu:~/day7/lianxi$ ./3
请输入数据:89
99
34
56
23
降序输出为:99 89 56 34 23
ubuntu@ubuntu:~/day7/lianxi$ cat 3.c
#include <stdio.h>
void fun(int *p, int n)
{
for(int i=1; i<n; i++)
{
for(int j=0; j<n-i; j++)
{
if( *(p+j) < *(p+j+1))
{
int temp = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = temp;
}
}
}
printf("降序输出为:");
for(int i=0; i<5; i++)
{
printf("%d\t", *(p+i));
}
printf("\n");
}
int main(int argc, const char *argv[])
{
int s[5] = {0};
printf("请输入数据:");
for(int i=0; i<5; i++)
{
scanf("%d", &s[i]);
}
fun(s,5);
return 0;
}
(4):定义一个长度为5的一维数组,在主函数内实现输入元素功能,调用函数实现该数组的逆置,要求形参与实参皆使用指针完成
ubuntu@ubuntu:~/day7/lianxi$ ./4
请输入字符串:s98sf
逆置后为:fs89s
ubuntu@ubuntu:~/day7/lianxi$ vim 4.c
ubuntu@ubuntu:~/day7/lianxi$ cat 4.c
#include <stdio.h>
void fun(char *p1, int n)
{
for(int i=0; i<n/2; i++)
{
int temp = p1[i];
p1[i] = p1[n-i-1];
p1[n-i-1] = temp;
}
printf("逆置后为:");
for(int i=0; i<n; i++)
{
printf("%c", p1[i]);
}
printf("\n");
}
int main(int argc, const char *argv[])
{
char s[5] = {0};
printf("请输入字符串:");
for(int i=0; i<5; i++)
{
scanf("%c", &s[i]);
}
char *p = s;
fun(p,5);
return 0;
}
(5):一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶了多少只鸭子?使用递归函数求出鸭子总数。
#include <stdio.h>
int duck(int n)
{
if(n==7)
{
return 2;
}
else
{
return (duck(n+1)+1)*2;
}
}
int main(int argc, const char *argv[])
{
int sum = duck(0);
printf("出发时鸭子共有%d只。\n", sum);
return 0;
}
(6):小明想要编写一个递归函数,接收一个非负整数,输出该数的所有位,请你帮帮他吧。
ubuntu@ubuntu:~/day7/lianxi$ ./6
请输入一个非负整数:837873
8 3 7 8 7 3
ubuntu@ubuntu:~/day7/lianxi$ cat 6.c
#include <stdio.h>
int f(int a)
{
if(a == 0)
{
return 1;
}
f(a/10);
printf("%d\t", a%10);
}
int main(int argc, const char *argv[])
{
unsigned int num = 0;
printf("请输入一个非负整数:");
scanf("%d", &num);
int a = f(num);
printf("\n");
return 0;
}