leetcode刷题总结--C语言

1、memset(目标,初始值,长度);
长度一般用sizeof等表示,一般不用具体的数字,只适用于一维数组和指针,二维不适合
2、case 后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量。

case 10: printf("..."); break;  //正确
case 8+9: printf("..."); break;  //正确
case 'A': printf("..."); break;  //正确,字符和整数可以相互转换
case 'A'+19: printf("..."); break;  //正确,字符和整数可以相互转换
case 9.5: printf("..."); break;  //错误,不能为小数
case a: printf("..."); break;    //错误,不能包含变量
case a+10: printf("..."); break;  //错误,不能包含变量

3、注意针对数目一定的,可以用筛选法这里补一下课
4、如果一个数组/变量只是定义了一下,没有赋值,那么初始值是随机数可能>0/<0/=0的是随机的
5、C语言表示坐标,尽量不要用二维数组的下表表示坐标,用结构体会更好,因为二维数组在处理负数坐标时会比较麻烦。或者用a[x][0]表示x点的横坐标的值,a[x][1]表示x点的纵坐标的值。
6、排序,用冒泡,两种表示方法,第一种

for(int i=0;i<n;i++){
	for(int j=0;j<n-i;j++){
		比较、交换
	}
}
for(int i=0;i<n;i++){
	for(int j=0;j<i;j++){
		比较、交换
	}
}

7、删除字符串中的相同的字符

void main (){   
	char s[101];   
	int i,j,k;   
	gets(s);   
	for(i=0; s[i]; i++) {
		for(j=k=i+1;s[j];j++)
 	 		if(s[j]!=s[i])//j用来一直遍历,k对新s进行赋值
  				s[k++]=s[j];
		s[k]='\0';//字符串结束,不然会出错
	}
	printf("%s",s);
}

 

8、删除字符串中给定的某个字符

void delete_char(char str[],char target){
	int i,j;
	for(i=j=0;str[i]!='\0';i++){
		if(str[i]!=target){//与给定值进行比较
			str[j++]=str[i];
		}
	}
	str[j]='\0';
}

9、字符串需要补一下课
10、把一个char赋值给char*的字符串char *key=&key
11、sizeof算长度 strlen算个数
12、bzero和memset函数

void bzero(void *s, int n);
#include <string.h>

功能:将字符串s的前n个字节置为0,一般来说n通常取sizeof(s),将整块空间清零。

返回值:无返回值

memset函数

函数原型:void *memset(void *s,int c,size_t n);

#include <string.h> 
或者  
#include <memory.h>

说明:将s中前n个字节替换为c并返回s

作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法

13、整数反转还有回文数要注意到新的暂存现在的数要是long型的

14、C语言求绝对值的函数为abs( x )与fbs( x ),abs( x )包含于stdlib.h,且两者均包含于math头文件之下。

abs( x )函数 :int abs( int i ); 求整型数的绝对值
fabs( x )函数 :float fabs( float i ); / double fabs( double x ); 求浮点数的绝对值

15、高精度计算

高精度加法:
1、按位逆置,将字符串输入到两个数组中
2、开始加
两个本位相加+进位位=和
和/10=进位
相加结果=%10;

输出结果

高精度减法:
1、同样先逆转
2、比加法更复杂 首先要判断哪一个数字长哪一个数字短
将长的赋值给a短的给b 如果出现倒着的要加一个负号
3、借位加减 
4、最后输出

高精度乘法

首先反转 
将每个数值相乘 存进去
再单独 遍历 进行累加
  c[i+1]+=c[i]/10;
  c[i]%=10;

高精度除法
高精度除以一个低精度
不用反转!
for(int i=0;i<len1;i++)//从高位向低位按位相除,"按位相除法"四行代码搞定 
	{
		c[i]=(x*10+a[i])/b;
		x=(x*10+a[i])%b;
	}


16、ASCII码 A65 a97 Z90 z122
17、求任意函数积分 利用定积分的定义来计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值