当前位置: 首页 > article >正文

Chapter02

习题2.1

/// <summary>
/// 计分段函数的值
/// </summary>
/// <param name="x">x</param>
/// <returns>y</returns>
int  Function(int x) {
	int y;
	if (x < 1)
	{
		y = x;
	}
	else if(x >= 1 && x < 10)
	{
		y = 2 * x - 1;
	}
	else
	{
		y = 3 * x + 11;
	}

	return y;
}

习题2.2

#include <stdio.h>  
#include <math.h>  
#include <complex.h>  

// 定义复数类型  
typedef double complex Complex;

// 求解一元三次方程 ax^3 + bx^2 + cx + d = 0 的根  
void solveCubic(double a, double b, double c, double d) {
    // 归一化系数,使得 a = 1  
    double A = b / a;
    double B = c / a;
    double C = d / a;

    // 计算判别式 Δ 和 Q, R  
    double delta0 = B * B - 3 * A * C;
    double delta1 = 2 * B * B * B - 9 * A * B * C + 27 * A * A * d;
    double CuberootOfUnity1 = -0.5 + sqrt(3.0) / 2.0 * I;
    double CuberootOfUnity2 = -0.5 - sqrt(3.0) / 2.0 * I;

    Complex D;
    if (delta1 >= 0) { // 一个实根和两个共轭复根  
        double sqrtDelta1 = sqrt(delta1);
        D = cbrt(-0.5 * (delta0 + sqrtDelta1));
    }
    else { // 三个实根或一个实根和一个重根(当 Δ = 0 时)  
        double phi = acos(-0.5 * delta1 / pow(fabs(delta0 + sqrt(delta0 * delta0 - 4 * pow(delta1 / 3.0, 3))), 1.5));
        D = 2 * sqrt(-delta0 / 3.0) * cos(phi / 3.0);
    }

    // 计算根  
    Complex omega1 = 1.0;
    Complex omega2 = CuberootOfUnity1;
    Complex xi = cbrt(-0.5 * (delta0 - (delta1 >= 0 ? sqrt(delta1) : -sqrt(delta0 * delta0 - 4 * pow(delta1 / 3.0, 3)))));

    Complex root1 = -(A / 3.0) + D + xi;
    Complex root2 = -(A / 3.0) + omega1 * D + omega2 * xi;
    Complex root3 = -(A / 3.0) + omega2 * D + omega1 * xi;

    // 打印结果  
    printf("根 1: %.5f + %.5fi\n", creal(root1), cimag(root1));
    printf("根 2: %.5f + %.5fi\n", creal(root2), cimag(root2));
    printf("根 3: %.5f + %.5fi\n", creal(root3), cimag(root3));
}

int main() {
    double a, b, c, d;

    // 输入系数  
    printf("请输入等式 ax^3 + bx^2 + cx + d = 0 中的系数a, b, c, d :\n");
    scanf("%lf %lf %lf %lf", &a, &b, &c, &d);

    // 求解并打印根  
    solveCubic(a, b, c, d);

    return 0;
}

习题2.3

#include<stdio.h>
#include<limits.h>
int main(){
	int num[3], min_num = INT_MAX;
	printf("请输入三个数字:");
	for (int i = 0; i < 3; i++)
	{
		scanf_s("%d", &num[i]);

		if (num[i] < min_num ) {
			min_num = num[i];
		}
	}

	printf("最小的数为:%d", min_num);

	return 0;
}

习题2.4

#include<stdio.h>
void PrintValue(int x, int y);
int  main() {
	int x, int y;
	printf("请输入两个数: ");
	scanf_s("%d %d", &x, &y);
	PrintValue(x, y);

	return 0;
}

void PrintValue(int x, int y) {

	(x > y) ? printf("%d %d", x, x - y) : printf("%d %d", y, y - x);
}

习题2.5

/// <summary>
/// 计算1~99之间所有的奇数和
/// </summary>
/// <returns></returns>
int CalculateSum_odd() {
	int sum = 0;

	for (int  i = 1; i <=  99; i++)
	{
		if (i % 2 != 0) {
			sum += i;
		}
	}

	return sum;
}

习题2.6

/// <summary>
/// 计算1000以内自然数中3的倍数和
/// </summary>
/// <returns></returns>
int CalculateSum_multipleThree() {
	int sum = 0;
	for (int i = 0; i < 1000; i++)
	{
		if (i % 3 == 0) {
			sum += i;
		}
	}

	return sum;
}

习题2.7

#include<stdio.h>
#include<math.h>

/// <summary>
/// 输出指定度数的余弦值与正弦值
/// </summary>
/// <param name="multiple">度数(可以设置为任意值)</param>
void PrintSinAndCos(int multiple) {

	if (multiple < 0 && multiple > 360) {
		printf("无效的度数!");
		return;
	}
	else
	{
		for (int i = 0; i < 360; i++)
		{
			if (i % multiple == 0) {
				printf("%d 的正弦值为: %d, 余弦值为: %d", i, sin(i), cos(i));
			}
		}
	}
}

习题2.8

#include<stdio.h>
int main() {
	int num[20], posInteger_sum = 0, pos_count = 0, negInteger_sum = 0, neg_count = 0, zero_count = 0;

	printf("请输入20个整数: ");
	for (int  i = 0; i < 20; i++)
	{
		scanf_s("%d", &num[i]);
		if (num[i] == 0) {
			zero_count++;
		}
		else if (num[i] < 0) {
			negInteger_sum += num[i];
			neg_count++;
		}
		else {
			posInteger_sum += num[i];
			pos_count++;
		}
	}

	printf("20个数中,正整数有%d 个, 负整数有%d 个, 零有%d个", pos_count, neg_count, zero_count);
	printf("20个数中,正整数之和为:%d, 负整数之和为:%, 正整数的平均值为:%.2f, 负整数的平均值为:%.2f", 
		posInteger_sum, negInteger_sum, posInteger_sum / pos_count, negInteger_sum / neg_count);

	return 0;
}

习题2.9

#include<stdio.h>  
#include<limits.h>  

int main() {
    int num[20], max_int_pos = INT_MIN, min_int_pos = INT_MAX, max_int_neg = INT_MAX, min_int_neg = INT_MIN;
    int flag_pos = 0, flag_neg = 0; // 标记是否有正数和负数输入  

    printf("请输入20个整数:\n");

    for (int i = 0; i < 20; i++) {
        scanf("%d", &num[i]);

        if (num[i] > 0) {
            if (num[i] > max_int_pos) {
                max_int_pos = num[i];//更新最大正数数
            }
            if (num[i] < min_int_pos) {
                min_int_pos = num[i];//更新最小正数
            }
            flag_pos = 1; // 标记有正数输入  
        }
        else if (num[i] < 0) {
            if (num[i] > max_int_neg) {
                max_int_neg = num[i];//更新最大负数
            }
            if (num[i] < min_int_neg) {
                min_int_neg = num[i];//更新最小负数
            }
            flag_neg = 1; // 标记有负数输入  
        }
    }

    printf("其中的最大正整数为: %d", (flag_pos ? max_int_pos : "无"));
    printf(", 最大负整数为: %d", (flag_neg ? max_int_neg : "无"));
    printf(", 最小正整数为: %d", (flag_pos ? min_int_pos : "无"));
    printf(", 最小负整数为: %d\n", (flag_neg ? min_int_neg : "无"));

    return 0;
}

http://www.kler.cn/news/331946.html

相关文章:

  • 检查jar冲突,查找存在相同class的jar
  • Xcode16适配
  • 【MySQL】SQL介绍+基础+DDL+数据备份+还原
  • Linux增加一个回收站功能(实用功能)
  • 腾讯云技术深度解析:从微服务到AI编程助手的应用实践
  • vector 的使用(上)
  • SAP_FI_科目组,科目表,科目之间的关系
  • 算法日记-链表翻转
  • 【优选算法】(第十九篇)
  • 算法训练营打卡Day19
  • 在Robot Framework中Run Keyword If的用法
  • stm32f103调试,程序与定时器同步设置
  • 基于Spring Boot+Unipp的中考体测训练小程序(协同过滤算法、图形化分析)【原创】
  • 前缀和算法详解
  • Acwing 背包问题
  • UE5.4.3 录屏回放系统ReplaySystem蓝图版
  • 无水印短视频素材下载网站有哪些?十个高清无水印视频素材网站分享
  • Angular ng-state script 元素的生成机制介绍
  • PHP中对数组序列化和反序列化的函数
  • 10.3 刷题