C语言--复习题

(1)7-2查验身份证

注意字符串输入输出、怎么把字符数组中的数字字符转换成数字进行运算。

#include <stdio.h>
int main()
{
	int n;
	char a[20];
	int sum[20] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
	char m[20] = { '1','0','X','9','8','7','6','5','4','3','2'};
	scanf("%d", &n);
	int f = 1;
	for (int i = 0; i < n; i++)
	{
		scanf("%s", a);
		int x = 0;
		for (int j = 0; j < 17; j++)
		{
			x = x + (a[j] - '0') * sum[j];
		}
		x = x % 11;
		 if(a[17]!=m[x])
		{
			printf("%s\n", a);
			f = 0;
		}
	}
	if (f == 1) {
		printf("All passed");
	}
	return 0;
}
(2)求最大值及其下标

(3)通讯录排序

(4)复数的四则运算

1.符号问题要注意

2.注意输入的两位小数四舍五入之后的精度范围

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>

typedef struct {
    double x; // 实部
    double y; // 虚部
} complex;

// 加法函数
complex add(complex a, complex b) {
    complex result;
    result.x = a.x + b.x;
    result.y = a.y + b.y;
    return result;
}

// 减法函数
complex subtract(complex a, complex b) {
    complex result;
    result.x = a.x - b.x;
    result.y = a.y - b.y;
    return result;
}

// 乘法函数
complex multiple(complex a, complex b) {
    complex result;
    result.x = a.x * b.x - a.y * b.y;
    result.y = a.y * b.x + a.x * b.y;
    return result;
}

// 除法函数
complex divide(complex a, complex b) {
    complex result;
    if (fabs(b.x) < 0.05 && fabs(b.y) < 0.05) {
        result.x = 0;
        result.y = 0;
    }
    else {
        result.x = (a.x * b.x + a.y * b.y) / (b.x * b.x + b.y * b.y);
        result.y = (a.y * b.x - a.x * b.y) / (b.x * b.x + b.y * b.y);
    }

    return result;
}

// 打印函数
void printfcomplex(complex c)
{
    // 实部虚部均为0
    if (fabs(c.x) < 0.05 && fabs(c.y) < 0.05) {
        printf("0.0\n");
    }
    // 实部为0
    else if (fabs(c.x) < 0.05 && fabs(c.y) >= 0.05) {
        printf("%.1fi\n", c.y);
    }
    // 虚部为0
    else if (fabs(c.x) >= 0.05 && fabs(c.y) < 0.05) {
        printf("%.1f\n", c.x);
    }
    // 实部虚部均不为0
    else {
        if (c.y < 0) {
            printf("%.1f%.1fi\n", c.x, c.y);
        }
        else {
            printf("%.1f+%.1fi\n", c.x, c.y);
        }
    }
}

int main() {
    complex num1, num2;
    scanf("%lf%lf%lf%lf", &num1.x, &num1.y, &num2.x, &num2.y);

    if (num1.y < 0 && num2.y < 0) {
        // 加法
        complex sum = add(num1, num2);
        printf("(%.1f%.1fi) + (%.1f%.1fi) = ", num1.x, num1.y, num2.x, num2.y);
        printfcomplex(sum);

        // 减法
        complex difference = subtract(num1, num2);
        printf("(%.1f%.1fi) - (%.1f%.1fi) = ", num1.x, num1.y, num2.x, num2.y);
        printfcomplex(difference);

        // 乘法
        complex product = multiple(num1, num2);
        printf("(%.1f%.1fi) * (%.1f%.1fi) = ", num1.x, num1.y, num2.x, num2.y);
        printfcomplex(product);

        // 除法
        complex quotient = divide(num1, num2);
        printf("(%.1f%.1fi) / (%.1f%.1fi) = ", num1.x, num1.y, num2.x, num2.y);
        printfcomplex(quotient);
    }

    else if (num1.y > 0 && num2.y < 0) {
        // 加法
        complex sum = add(num1, num2);
        printf("(%.1f+%.1fi) + (%.1f%.1fi) = ", num1.x, num1.y, num2.x, num2.y);
        printfcomplex(sum);

        // 减法
        complex difference = subtract(num1, num2);
        printf("(%.1f+%.1fi) - (%.1f%.1fi) = ", num1.x, num1.y, num2.x, num2.y);
        printfcomplex(difference);

        // 乘法
        complex product = multiple(num1, num2);
        printf("(%.1f+%.1fi) * (%.1f%.1fi) = ", num1.x, num1.y, num2.x, num2.y);
        printfcomplex(product);

        // 除法
        complex quotient = divide(num1, num2);
        printf("(%.1f+%.1fi) / (%.1f%.1fi) = ", num1.x, num1.y, num2.x, num2.y);
        printfcomplex(quotient);
    }

    else if (num1.y < 0 && num2.y>0) {
        // 加法
        complex sum = add(num1, num2);
        printf("(%.1f%.1fi) + (%.1f+%.1fi) = ", num1.x, num1.y, num2.x, num2.y);
        printfcomplex(sum);

        // 减法
        complex difference = subtract(num1, num2);
        printf("(%.1f%.1fi) - (%.1f+%.1fi) = ", num1.x, num1.y, num2.x, num2.y);
        printfcomplex(difference);

        // 乘法
        complex product = multiple(num1, num2);
        printf("(%.1f%.1fi) * (%.1f+%.1fi) = ", num1.x, num1.y, num2.x, num2.y);
        printfcomplex(product);

        // 除法
        complex quotient = divide(num1, num2);
        printf("(%.1f%.1fi) / (%.1f+%.1fi) = ", num1.x, num1.y, num2.x, num2.y);
        printfcomplex(quotient);

    }
    else if (num1.y >= 0 && num2.y >= 0)
    {
        // 加法
        complex sum = add(num1, num2);
        printf("(%.1f+%.1fi) + (%.1f+%.1fi) = ", num1.x, num1.y, num2.x, num2.y);
        printfcomplex(sum);

        // 减法
        complex difference = subtract(num1, num2);
        printf("(%.1f+%.1fi) - (%.1f+%.1fi) = ", num1.x, num1.y, num2.x, num2.y);
        printfcomplex(difference);

        // 乘法
        complex product = multiple(num1, num2);
        printf("(%.1f+%.1fi) * (%.1f+%.1fi) = ", num1.x, num1.y, num2.x, num2.y);
        printfcomplex(product);

        // 除法
        complex quotient = divide(num1, num2);
        printf("(%.1f+%.1fi) / (%.1f+%.1fi) = ", num1.x, num1.y, num2.x, num2.y);
        printfcomplex(quotient);

    }

    return 0;
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值