文章目录
- 1.运算符优先级
- 2.ASCII码表
- 3.vim全文替换
- 4.函数
- (1)清空数组 / 数组初始化:memset
- (2)malloc、calloc、realloc
- (3)sizeof()
- (4)取整函数
- 5.算法
- (1)求最大公约数 gcd()
- (2)得到一个三位数的个位、十位、百位
- 6.常用宏
- (1)SIZE(a) :求数组长度
- (2)INT_MIN:-2^31^
- (3)防止头文件重复包含的宏命令(对于.h文件)
1.运算符优先级
1.C语言
2.C++
比起C语言,多增加了几个运算符,如 作用于限定符、new、delete
2.ASCII码表
A-Z:65-90
a-z:97-122
3.vim全文替换
替换全文的所有匹配项
:%s/要被替换的词/用来替换的词/g4.函数
(1)清空数组 / 数组初始化:memset
void*memset(void*s,intc,size_tn);#include<string.h>intarr[10]={0,1,2,3,4,5,6,7,8,9};memset(arr,0,sizeof(arr));//初始化为0charstr[50]="Hello, World!";memset(str,'h',5);memset(str,0,sizeof(str));#include<string.h>intcount[26];memset(count,0,sizeof(count));//初始化为0charstr[26];memset(str,0,sizeof(str));memset(起始地址,0~0xFF,长度):一个字节一个字节的设置
(2)malloc、calloc、realloc
#include<stdlib.h>int*p1=malloc(个数*sizeof(int));int*p2=calloc(个数,sizeof(int));int*p1=realloc(p1,新的个数*sizeof(int));(3)sizeof()
sizeof 运算符用于计算一个对象或类型所占的内存字节数
C语言字符串是以\0结尾
inta=sizeof("Hello");//6intb=strlen("Hello");//5(4)取整函数
| 函数 | 功能 | 示例 (3.7) | 示例 (-3.7) |
|---|---|---|---|
ceil(x) | 向上取整 | 4.0 | -3.0 |
floor(x) | 向下取整 | 3.0 | -4.0 |
round(x) | 四舍五入 | 4.0 | -4.0 |
trunc(x) | 截断小数 | 3.0 | -3.0 |
5.算法
(1)求最大公约数 gcd()
辗转相除法:(欧几里得算法求最大公约数)
//greatest comon divisor
//a = b * q + r (0 <= r < b)
//gcd(a,b) = gcd(b,r) = … = gcd(d,0) = d
1.非递归写法 + 循环
intgcd(inta,intb){if(a<b){swap(a,b);}while(b!=0){intr;a=b;b=r;}// b == 0returna;}2.递归
intgcd(inta,intb){if(b==0)returna;elsereturngcd(b,a%b);}intgcd(inta,intb){returnb?gcd(b,a%b):a;}三目运算符
表达式1 ? 表达式2 : 表达式3;
若1为真,则执行2;若1为假,则执行3;
例题1:实现分数相加
答案:
#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>//辗转相除法求两个数的最大公约数intfindgcd(inta,intb){if(b==0)returna;elsereturnfindgcd(b,a%b);}intmain(void){intnumerator1,numerator2,denominator1,denominator2;intsum1,sum2;printf("Enter first fraction: ");scanf("%d/%d",&numerator1,&denominator1);printf("Enter second fraction: ");scanf("%d/%d",&numerator2,&denominator2);sum1=numerator1*denominator2+numerator2*denominator1;sum2=denominator1*denominator2;intgcd=findgcd(sum1,sum2);sum1/=gcd;sum2/=gcd;printf("The sum is %d/%d",sum1,sum2);return0;}(2)得到一个三位数的个位、十位、百位
intnum=153;intones=num%10;inttens=(num/10)%10;inthundreds=num/100;6.常用宏
(1)SIZE(a) :求数组长度
自定义宏 SIZE(a),用于求数组的长度
#defineSIZE(a)(2)INT_MIN:-231
1.宏INT_MIN表示32位带符号整数的最小值,即 -231= -2147483648
定义在<limits.h>头文件中
#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<limits.h>intmain(void){printf("%d\n",INT_MIN);return0;}2.long long类型的最大最小值LLONG_MIN:-9,223,372,036,854,775,808(即 -2^63)LLONG_MAX:9,223,372,036,854,775,807(即 2^63 - 1)
(3)防止头文件重复包含的宏命令(对于.h文件)
以LogWidget.h为例
方法1:3行搞定,是通用的宏
#ifdefLogWidget_H#defineLogWidget_H内容#endif方法2: 1行搞定,但不通用,仅限某些编译器
#pragmaonce内容