int find_min(int value[],int length) // 第1个参数为数组,第2个参数为数组长度,返回值为整形
{
int min = value[0]; //假设value[0]就是最小的
for(int i=1; i
int function(int a,int b) //传入两个整数a,b,返回最大公因数
{
int c; //用来保存计算过程中的余数
while (c = a % b) //求a与b的余数c,c不等于零的时候条件为真接着循环 等c等于0是条件为假退出循环
{
a = b; //接着运用辗转相除法重新赋值
b = c;
}
printf("最大公因数为:%d", b);
return b;
}
int function(int a,int b) //传入两个整数a,b
{
int c; //用来保存计算过程中的余数
int d = a * b;
while (c = a % b) //求a与b的余数c,c不等于零的时候条件为真接着循环 等c等于0是条件为假退出循环
{
a = b; //接着运用辗转相除法重新赋值
b = c;
}
printf("最小公倍数为:%d", d / b); //d是a和b的乘积,b是最大公因数
return d / b;
}
void bubble_sort(int arr[],int length) //传入待排序数组,不需要返回值
{
int i = 0;
int j = 0;
int temp = 0;
for (i = 0; i < length - 1; i++) //双重循环,从前往后冒泡,每趟将最小的冒到最后的位置
{
for (j = 0; j < length - 1 - i; j++)
{
if (arr[j] < arr[j + 1]) //如果当前arr[j]比邻近的arr[j+1]要小,交换(小的往后冒)
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
} //一趟结束
}//排序结束,完成了从大到小的降序数组
}
void select_sort(int arr[],int length) //传入数组和数组长度,选择排序
{
for (int i = 0; i < length; i++) //从第一个位置的元素开始,和后面所有的元素比较
{
for (int j = i + 1; j < length; j++) //比较第i个位置的后面的所有元素
{
if (arr[i] > arr[j]) //如果第i个位置的元素比后面的大,交换,
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
} //此时位置i的元素保存的是i到length元素中最小的,外层for循环下次会从i+1到length,一直重复
}
}
int search_value(int arr[],int length, int value) //传入数组,数组长度,需要查找的值
{
for (int i = 0; i < length; i++) //开始遍历数组
{
if (arr[i] == value) //当前元素等于需要查找的value,直接返回i(元素的下标位置),结束程序
{
return i;
}
}
return -1; //for循环中没有返回,则没有找到,返回下标-1,代表查询失败
}
int binarySearch(int* arr, int length, int key) //传入数组,数组长度,需要查找的关键字key
{
int low = 0, // 头下标
high = length, // 尾下标
mid; // 中间元素下标
while (low <= high) //在low和high相撞之前,进行查找
{
mid = (low + high) //取low和high中间的位置
if (arr[mid] == key) //判断中间位置元素是否是查找的key,如果是,直接返回位置,结束程序
{
return mid;
}
else if (arr[mid] >key) // key比中间的小,那么应该去mid前面找,更新high
{
high = mid - 1;
}
else // key比中间的大,那么应该去mid前=后面找,更新low
{
low = mid + 1;
}
}
return -1; // 查找失败
}
void series_add(int m,int n) //级数:公差为1,从首项m加到尾项n的值,
{
int value = 0; //保存结果
for(int i = m; i <= n ; i++)
{
value = value + m;
}
printf("m...+n = %d",value); //打印
}
void transfer(int x) //将传入的十进制x,打印成二进制
{
char buf[32]; //用来保存二进制
int i=0;
while( (x/2)!=0 ) //循环除2,只要x除2的值不为零,把余数存储在数组中
{
buf[i] = x%2; //将x除2的余数存在buf里面
x = x/2; //更新x的值,让x除2
i++; //每次需要让数组下标+1
}
buf[i] = x%2; //最后一次需要大单独处理,例如x=1时,不满足while条件,因为x/2=0。但是仍需要把x % 2 的余数计算保存
for(int j=i; j>=0 ;j--) //从后往前打印数组的值,就是对应x的二进制
{
printf("%d",buf[j]);
}
printf("\n");
}
int main()
{
// 求一元二次方程的根
// 代码思想:
// 手动输入三个系数,分别代表二次项系数、一次项系数、常数项;
// 判断输入的二次项系数是否为0,如果为0,提示“输入的第一个值不合法,请重新输入!”
// 如果二次项系数不为0,利用根的判别式,计算一元二次方程是否有根;
// 如果判别式 Δ >= 0 ,代表方程有两个根,输出根
// 如果 Δ < 0 ,提示“方程无根”。
float a , b , c, d, x1, x2;
printf("请依次输入三个系数: ");
scanf("%f %f %f", &a,&b,&c);
if(a != 0)
{
d = b * b - 4 * a * c; // 根的判别式
if(d >= 0)
{
x1 = ((-b + sqrt(d)) / (2 * a)); // 求根公式
x2 = ((-b - sqrt(d)) / (2 * a));
printf("x1 = %.2f;x2 = %.2f", x1, x2);
}
else
{
printf("方程无根");
}
}
else
{
printf("输入的第一个值不合法,请重新输入!");
}
return 0;
}