- 编写函数,寻找具有n个元素的一维数组中的最大值和最小值,并返回数组元素的平均值,函数原形如下:
double fun(int a[],int n,int *max,int *min);
如输入:
5
2 4 5 3 1
则输出为:
5
1
3.000000
#define _CRT_SECURE_NO_WARNINGS//这个是vs2017特有的,不是 vs2017的小伙伴请忽略
#include<stdio.h>
#include<stdlib.h>//涉及动态内存管理
double fun(int a[], int n,int *max, int*min);//函数定义
int main()//主函数负责输入和调用
{
int n ;
int mimi, maxmax;
int *a;
scanf("%d", &n);//n个整数
a = (int*)malloc(n * sizeof(int));//动态内存管理,用到malloc
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
int *max =&maxmax;
int* min = &mimi;
fun( a, n,max, min);
free(a);//释放内存
}
double fun(int a[], int n, int * max, int * min)
{
{//这里还不负责输入
int i = 0;//初始化
double sum = 0;//记得要是double
*max = a[0];
*min= a[0];
for (i = 0; i < n; i++)//选择最大值和最小值
{
if (a[i] >= *max)
*max =a[i];
if (a[i] <=* min)
*min =a[i];
}
for (int i = 0; i < n; i++)//计算元素个数
{
sum += a[i];
}
double aver = (double)sum / n;//求平均值
printf("%d\n%d\n%.6f\n",*max, *min, aver);
}
return 0;
}
结果
希望自己有时间出一个关于动态内存管理以及函数的笔记
- 编写函数,将一个二进制数(以字符串形式表示)转换为十进制数。函数原型如下:
double binTodec(char *str);
其中str为接收的二进制数,函数的返回值为对应的十进制数。
如输入:
1010
则输出为:
10
又如输入:
100
则输出为:
4
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>//涉及动态内存管理
#include<string.h>
#include<math.h>
int main()
{
char a[100];
int number = 0;
gets(a);
int n = strlen(a);
for (int i = n-1; i >=0; i--)//这里有几个点要注意
//1.就是要从后往前计算,认真想想二进制转十进制怎么转的
//2.还有关于判断这里的if (a[n-1-i] == '1') 也是一个易错点
{
if (a[n-1-i] == '1')
number += pow(2, (int)(i));
}
printf("%d", number);
}
有机会把老师上课的笔记也发出来
自己千万不要偷懒鸭!!!