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、求任意函数积分 利用定积分的定义来计算