相关编程知识总结

scanf、getchar、gets、cin的区别

sancf()遇到空格、TAB、回车会进行截断获取,固scanf方式读取的内容是一定不会包含空格的
如果要读取包含空格的内容时,需要使用gets

cin的方式也是遇到tab 空格 回车进行截断获取

getchar可以读入一个字符,包含空格,TAB,回车

用malloc申请一个二维数组的办法

int r; // 行数
int c; // 列数
/* 方法一 */
int **arr; // 数组指针
arr = (int**)malloc(sizeof(int*)*r);  
for(i = 0;i < r;i++)  
    arr[i] = (int*)malloc(sizeof(int)*c);
    
/* 方法二 */
int (*arr)[r] = (int(*)[r])malloc(sizeof(int)*r*c);

/* 方法三 */
// 用一维数组进行模拟
int *arr = (int *)malloc(sizeof(int)*r*c);
// 访问的下标为i,j对应的值为
arr[i*r + j]

避免重复计算,用数组记录中间结果实现阶乘

#define NUM 10 // 存放中间结果数组的大小
int fac[NUM] = {0};

long factorial(int n) {
    if (fac[n]) return fac[n];
    if (n == 1) {
        fac[1] = 1;
        return 1;
    }
    else {
        fac[n] = n*factorial(n-1);
        return fac[n];
    }
}

质数

质数又称素数。一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数;否则称为合数
注意:质数要求大于1,也就是从2开始
c判断是否为素数的代码如下

bool isPrime(unsigned long n) {
    if (n <= 3) {
        return n > 1;
    } 
    else if (n % 2 == 0 || n % 3 == 0) {
        return false;
    }
    else {
        for (unsigned short i = 5; i * i <= n; i += 6) {
            if (n % i == 0 || n % (i + 2) == 0) {
                return false;
            }
        }
        return true;
    }
}

C语言数据类型范围

标准整数类型常见存储空间大小和取值范围

类型存储空间大小最小值最大值
unsigned char1个字节0255
signed char1个字节-128 127
int2个或4个字节-32 768 或 -2 147 483 64832767 或 2 147 483 647
unsigned int2个或4个字节065 535 或 4 294 967 295
short2个字节-32 76832 767
unsigned short2个字节065 535
long4个字节-2 147 483 6482 147 483 647
unsigned long4个字节04 294 967 295
long long (C99)8个字节-9 223 372 036 854 775 8089 223 372 036 854 775 807
Unsigned long long (C99)8个字节018 446 744 073 709 551 615
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值