作业1
题目:
定义有参函数实现,主调函数中输入两个数据,通过函数调用,交换该两个变量的值,主调函数输出交换后的结果
结果:
代码:
#include <stdio.h>
void swap(int * num1,int * num2){
int temp = *num2;
*num2 = *num1;
*num1 = temp;
}
int main(int argc, char const *argv[])
{
//定义有参函数实现
//主调函数中输入两个数据,通过函数调用,交换该两个变量的值,主调函数输出交换后的结果
int num1,num2;
printf("请输入两个数据:");
scanf("%d%d",&num1, &num2);
swap(&num1,&num2);
printf("num1 = %d\n",num1);
printf("num2 = %d\n",num2);
return 0;
}
作业2
题目:
定义函数实现,主调函数中,输入6名学生成绩,调用函数求6名学生成绩的平均值,将平均值返回给主函数并输出。
要求:使用主调函数中传递数组,被调函数使用指针接收
结果:
代码:
#include <stdio.h>
// 使用主调函数中传递数组,被调函数使用指针接收
float get_avg(int *s,int *len){
int sum = 0;
for (int i = 0; i < *len; i++){
sum += *s;
}
return sum / *len;
}
int main(int argc, char const *argv[])
{
int scores[6];
int len = sizeof(scores) / sizeof(int);
// 输入6名学生成绩
for (int i = 0; i < len; i++){
printf("请输入学生%d成绩:",i + 1);
scanf("%d",&scores[i]);
}
// 调用函数求6名学生成绩的平均值,将平均值返回给主函数并输出。
printf("%f\n",get_avg(scores,&len));
return 0;
}
作业3
题目:
定义一个长度为5的一维数组,在主函数内实现输入元素功能,调用函数实现该数组的降序输出,要求形参与实参皆使用指针完成。
结果:
代码:
#include <stdio.h>
void desc_sort(int * arr,int * len){
int temp;
//冒泡降序
for (int i = 0; i < *len - 1; i++){
for (int j = 0; j < *len - 1 - i; j++){
if (arr[j] < arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main(int argc, char const *argv[])
{
//定义一个长度为5的一维数组,
int arr[5];
int len = sizeof(arr) / sizeof(int);
int *p = arr;
//在主函数内实现输入元素功能
for (int i = 0; i < len; i++){
printf("请输入第%d个数据:",i + 1);
scanf("%d",&arr[i]);
}
//调用函数实现该数组的降序输出,要求形参与实参皆使用指针完成。
desc_sort(p,&len);
//输出
for (int i = 0; i < len; i++){
printf("%d\t",arr[i]);
}
printf("\n");
return 0;
}
作业4
题目:
定义一个长度为5的一维数组,在主函数内实现输入元素功能,调用函数实现该数组的逆置,要求形参与实参皆使用指针完成
结果:
代码:
#include <stdio.h>
void reverse(int * arr,int *len){
int temp;
for (int i = 0, j = *len -1; i < j; i++, j--){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int main(int argc, char const *argv[])
{
//定义一个长度为5的一维数组,
int arr[5];
int len = sizeof(arr) / sizeof(int);
//在主函数内实现输入元素功能
for (int i = 0; i < len; i++){
printf("请输入第%d个数据:",i + 1);
scanf("%d",&arr[i]);
}
//调用函数实现该数组的逆置,要求形参与实参皆使用指针完成
reverse(arr,&len);
//输出
for (int i = 0; i < len; i++){
printf("%d\t",arr[i]);
}
printf("\n");
return 0;
}
作业5
题目:
一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶了多少只鸭子?使用递归函数求出鸭子总数。
结果:
代码:
#include <stdio.h>
void get_sum(int *num,int cnt){
if(cnt > 0){
*num = (*num + 1) * 2;
get_sum(num,cnt - 1);
}
}
int main(int argc, char const *argv[])
{
//一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。
//这样他经过了七个村子后还剩两只鸭子
//问他出发时共赶了多少只鸭子?
//使用递归函数求出鸭子总数。
int num = 2;
get_sum(&num,7);
printf("%d\n",num);
return 0;
}
作业6
题目:
小明想要编写一个递归函数,接收一个非负整数,输出该数的所有位,请你帮帮他吧。
结果:
代码:
#include <stdio.h>
void print_num(int num,int len){
//10的(n-1)次方
int n = 1;
for (int i = 0; i < len - 1; i++){
n *= 10;
}
printf("%d ",num / n % 10);
if(len > 1){
print_num(num,len-1);
}else{
printf("\n");
}
}
int main(int argc, char const *argv[])
{
int num,temp;
int len = 0;
printf("请输入一个数:");
scanf("%d",&num);
temp = num;
while(temp > 0){
len++;
temp /= 10;
}
print_num(num,len);
return 0;
}