c语言基础知识

c语言基本数据类型

int类型

int类型是有符号整型,即int类型的值必须是整数,可以是正整数,也可以是负整数或零

c语言提供三个附属关键字修饰基本整数类型

short int(简写为short)占用的存储空间可能比int类型少,常用于较小数值用于节省空间

long int(简写为long)占用的存储空间可能比int类型多,适用于数值较大的场合

long long int占用的存储空间可能比long类型多,适用于更大数值的场合,该类型至少占64位

unsigned int只适用于非负值的场合。

char类型

char类型用于存储字符。但从技术层面来看,char是整数类型。因为char类型存储的实际上是整数而不是字符。计算机使用数字编码来处理字符,即用特定的整数表示特定的字符。65表示大写字母A,97表示小写字母a

float,double,long double类型

c标准规定float类型至少能表示6位有效数字,该数字的前6位

double至少能表示10位有效数字,该数字的前十位

long double以满足比double类型更高的精度要求

复数和虚数

许多科学和工程计算都要用到复数和虚数。

c语言有三种复数类型:float_Complex,double_Complex,long_Complex

同样有三种虚数类型:float_Imaginary,double_Imaginary,long double_Imaginary

如果包含complex.h头文件,便可用complex代替_Complex,用imaginary代替_Imaginary

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

int main() {
    // 定义复数类型变量
    float complex a = 1.0 + 2.0 * I; // 定义一个复数变量a,值为1.0 + 2.0i
    double complex b = 3.0 - 4.0 * I; // 定义一个复数变量b,值为3.0 - 4.0i
    long double complex c = 5.0 + 6.0 * I; // 定义一个复数变量c,值为5.0 + 6.0i
    
    // 输出复数的实部和虚部
    printf("a = %.1f + %.1fi\n", crealf(a), cimagf(a));
    printf("b = %.1f + %.1fi\n", creal(b), cimag(b));
    printf("c = %.1Lf + %.1Lfi\n", creall(c), cimagl(c));

    // 定义虚数类型变量
    float _Imaginary x = 2.0f * _Imaginary_I; // 定义一个虚数变量x,值为2.0i
    double _Imaginary y = 3.0 * _Imaginary_I; // 定义一个虚数变量y,值为3.0i
    long double _Imaginary z = 4.0L * _Imaginary_I; // 定义一个虚数变量z,值为4.0i
    
    // 输出虚数的值
    printf("x = %.1fi\n", cimagf(x));
    printf("y = %.1fi\n", cimag(y));
    printf("z = %.1Lfi\n", cimagl(z));

    return 0;
}

从基本类型衍生的基本数据类型

c语言还有一些从基本类型衍生的基本数据类型,包括数组,指针,结构和联合

字符串

字符串是一个或多个字符的序列

c语言没有专门用于存储字符串的变量类型,字符串都被存储在char类型的数组中。数组由连续的存储单元组成,字符串中的字符被存储在相邻的存储单元,每个单元存储一个字符

注意数组末尾位置的字符\0。这是空字符,c语言用它标记字符串的结束,这意味着c语言的字符串一定由空字符结束,这意味着数组的容量必须至少比待存储的字符数多1

指针

从根本上看,指针是一个值为内存地址的变量(或数据对象)。指针变量的值是地址

#include <stdio.h>

int main() {
    int num = 10; // 定义一个整型变量num,赋值为10
    int *ptr; // 定义一个指向整型变量的指针ptr

    ptr = &num; // 将ptr指向num的地址

    printf("num的值为:%d\n", num); // 输出num的值
    printf("num的地址为:%p\n", &num); // 输出num的地址
    printf("ptr指向的值为:%d\n", *ptr); // 输出ptr指向的值
    printf("ptr的值为:%p\n", ptr); // 输出ptr的值,即num的地址

    return 0;
}
#include <stdio.h>

int main() {
    int arr[] = {10, 20, 30, 40, 50}; // 定义一个整型数组arr
    int *ptr = arr; // 定义一个指向整型数组的指针ptr,指向数组的第一个元素

    printf("第一个元素的值:%d\n", *ptr); // 输出第一个元素的值
    printf("第二个元素的值:%d\n", *(ptr + 1)); // 输出第二个元素的值,指针算术运算
    printf("第三个元素的值:%d\n", *(ptr + 2)); // 输出第三个元素的值,指针算术运算

    return 0;
}

c语言常用的库函数

 #include <string.h>

1.strlen() - 计算字符串的长度。

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

int main() {
    char *str = "Hello, world!";
    int length = strlen(str);
    printf("字符串长度为: %d\n", length);
    return 0;
}

2.strcpy() - 复制字符串。

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

int main() {
    char dest[20];
    char *src = "Hello, world!";
    strcpy(dest, src);
    printf("复制后的字符串: %s\n", dest);
    return 0;
}

3.strcat() - 连接字符串。

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

int main() {
    char dest[20] = "Hello, ";
    char *src = "world!";
    strcat(dest, src);
    printf("连接后的字符串: %s\n", dest);
    return 0;
}

4.strcmp() - 比较字符串。

用法

int strcmp(const char *str1, const char *str2);
str1 是第一个要比较的字符串。
str2 是第二个要比较的字符串。
函数返回值为:
如果 str1 小于 str2,则返回一个负整数(通常是 -1)。
如果 str1 等于 str2,则返回零。
如果 str1 大于 str2,则返回一个正整数(通常是 1)。

示例

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

int main() {
    const char *str1 = "hello";
    const char *str2 = "world";
    int result = strcmp(str1, str2);
    if (result < 0) {
        printf("str1 小于 str2\n");
    } else if (result > 0) {
        printf("str1 大于 str2\n");
    } else {
        printf("str1 等于 str2\n");
    }
    return 0;
}

​

5.strstr() - 在字符串中查找子字符串。

用法

char *strstr(const char *haystack, const char *needle);
haystack 是要在其中搜索的主字符串。
needle 是要查找的子字符串。
函数返回值为:
如果找到了子字符串,则返回一个指向首次出现位置的指针。
如果未找到子字符串,则返回空指针(NULL)。

示例

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

int main() {
    char *haystack = "Hello, world!";
    char *needle = "world";
    char *result = strstr(haystack, needle);
    if (result != NULL) {
        printf("子字符串 %s 在主字符串 %s 中的位置是: %d\n", needle, haystack, result-haystack);
    } else {
        printf("未找到子字符串 %s 在主字符串 %s 中\n", needle, haystack);
    }
        
    return 0;
}

6.strchr()

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

int main() {
    const char *str = "hello world";
    char *result = strchr(str, 'o');
    
    if (result != NULL) {
        printf("找到字符 'o',位置在字符串中的索引为:%ld\n", result - str);
    } else {
        printf("未找到字符 'o'\n");
    }
    
    return 0;
}

7.strrchr()

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

int main() {
    const char *str = "hello world";
    char *result = strrchr(str, 'o');
    
    if (result != NULL) {
        printf("找到字符 'o',位置在字符串中的索引为:%ld\n", result - str);
    } else {
        printf("未找到字符 'o'\n");
    }
    
    return 0;
}

#include <math.h>

1.fabs() - 计算浮点数的绝对值。

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

int main() {
    double x = -4.5;
    double absolute_value = fabs(x);
    printf("绝对值为: %lf\n", absolute_value);
    return 0;
}

2.sqrt() - 计算平方根。

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

int main() {
    double x = 25.0;
    double square_root = sqrt(x);
    printf("平方根为: %lf\n", square_root);
    return 0;
}

3.pow() - 计算幂。

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

int main() {
    double base = 2.0;
    double exponent = 3.0;
    double result = pow(base, exponent);
    printf("%lf 的 %lf 次方为: %lf\n", base, exponent, result);
    return 0;
}

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值