【掌握C语言整数I】轻松解析整数处理技巧与难题解决

日期:

最佳答案

1. 整数基本

在C言语中,整数是基本的数据范例之一。C言语供给了多种整数范例,包含:

每个整数范例都有其特定的取值范畴。比方,int范例的取值范畴平日是 -2,147,483,648 到 2,147,483,647。

2. 整数输入与输出

在C言语中,可能利用scanfprintf函数来输入跟输出整数。

2.1 利用scanf输入整数

#include <stdio.h>

int main() {
    int number;
    printf("请输入一个整数: ");
    scanf("%d", &number);
    printf("你输入的整数是: %d\n", number);
    return 0;
}

2.2 利用printf输出整数

#include <stdio.h>

int main() {
    int num = -123;
    printf("The signed integer is: %d\n", num);
    return 0;
}

3. 整数运算

C言语支撑基本的整数运算,包含加、减、乘、除跟取余。

3.1 基本运算示例

#include <stdio.h>

int main() {
    int a = 10;
    int b = 5;
    printf("加法: %d + %d = %d\n", a, b, a + b);
    printf("减法: %d - %d = %d\n", a, b, a - b);
    printf("乘法: %d * %d = %d\n", a, b, a * b);
    printf("除法: %d / %d = %d\n", a, b, a / b);
    printf("取余: %d %% %d = %d\n", a, b, a % b);
    return 0;
}

4. 整数处理技能

4.1 整数溢出

当整数运算的成果超出其范例所能表示的范畴时,会产生溢出。在C言语中,溢出平日会招致不决义行动。

4.2 检查溢出

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

int main() {
    int a = INT_MAX;
    int b = 1;
    if (a > 0) {
        printf("溢出: %d + %d\n", a, b);
    } else {
        printf("不溢出: %d + %d\n", a, b);
    }
    return 0;
}

4.3 利用long long范例

为了处理更大年夜的整数,可能利用long long范例。

#include <stdio.h>

int main() {
    long long a = LLONG_MAX;
    long long b = 1;
    printf("加法: %lld + %lld = %lld\n", a, b, a + b);
    return 0;
}

5. 困难处理

5.1 整数反转

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

int reverse(int x) {
    int res = 0;
    while (x != 0) {
        int pop = x % 10;
        x /= 10;
        if (res > INT_MAX / 10 || (res == INT_MAX / 10 && pop > 7)) return 0;
        if (res < INT_MIN / 10 || (res == INT_MIN / 10 && pop < -8)) return 0;
        res = res * 10 + pop;
    }
    return res;
}

int main() {
    int number = 123;
    printf("原始整数: %d\n", number);
    printf("反转后的整数: %d\n", reverse(number));
    return 0;
}

5.2 超长整数运算

对超长整数的运算,可能利用字符串或数组来表示跟存储这些数。

#include <stdio.h>
#include <string.h>

void addStrings(char* num1, char* num2, char* result) {
    int len1 = strlen(num1);
    int len2 = strlen(num2);
    int carry = 0;
    int i = len1 - 1;
    int j = len2 - 1;
    int k = 0;
    while (i >= 0 || j >= 0 || carry) {
        int sum = carry;
        if (i >= 0) {
            sum += num1[i--] - '0';
        }
        if (j >= 0) {
            sum += num2[j--] - '0';
        }
        carry = sum / 10;
        result[k++] = (sum % 10) + '0';
    }
    result[k] = '\0';
    reverse(result);
}

int main() {
    char num1[] = "12345678901234567890";
    char num2[] = "98765432109876543210";
    char result[100];
    addStrings(num1, num2, result);
    printf("跟: %s\n", result);
    return 0;
}

以上是C言语中整数处理的一些基本技能跟困难处理方法。经由过程进修跟现实,你可能更好地控制C言语的整数处理才能。