女朋友的小锦囊

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;
}

你可能感兴趣的:(c++,算法,数据结构)