1. getchar()输入,可以识别换行符,把换行符当成元素输入
#include
int main(){
char c1,c2,c3;
c1=getchar();
getchar();
c2=getchar();
c3=getchar();
putchar(c1);
putchar(c2);
putchar(c3);
return 0;
}
疑问:putchar换行怎么整?
2.typedef 给复杂数据类型起别名,如: typedef long long LL
3.常用 math 函数
fabs(double x) 对double变量取绝对值
abs(int x ) 对 int 型变量取绝对值
floor(double x) 向下取整
ceil(double x) 向上取整
pow(double r,double p) 求r的p次方
sqrt(double x) double 型变量求平方根
log(double x) 返回以自然对数为底的对数
4. if 是否等于0 小技巧
if(n) 的写法就是 if (n!=0)
if(!n)的意思就是 if(n==0)
5.switch 用法
#include
int main(){
int a=1,b=2;
switch(a+b){
case 2:
printf("%d\n",a);
break;
case 3:
printf("%d\n",b);
break;
case 4:
printf("%d\n",a+b);
break;
default:
printf("sad story\n");
}
return 0;
}
输出结果为: 2
分析:switch(a+b) 作为输入条件,case 作为判断结果,
如果(a+b)的值和case x 匹配上,则执行此条case 语句,如果都没匹配上,则执行default 。
注意:一定要在每一条case后加上 break ,用来终止后续语句的执行。
假如说全部break忘记加了,则执行结果为:
分析错误原因:因为没有加break ,就没有终止后续语句的执行,不光满足条件的 case 3执行了 对应的case 语句,后续的
case 4 和 default 都执行了。
6.break 和 continue
break是整体执行满足条件后结束
continue是局部满足条件后跳过后面语句,继续循环
7.一维数组
数组大小必须是整数常量,不可以是变量。
定义举例:
int a[10]
double db[2333]
char str[100000]
bool hashtable[1000000]
访问格式:
数组名称【下标】
注意:循环时候不能超过数组容量
8.冒泡排序
交换两个数需要借助中间变量
两层循环,第一层循环 n-1 次,i 从1 开始,表示循环次数
第二层下标从0开始 ,第二层表示数组下标
for(int i=1;i<4;i++){//进行 n 次排序
for(int j=0;j<5-i;j++){
}
9.二维数组
定义举例:
int a[10][20]
double db[10][10]
具体实例:整体用大括号括住,最后末尾加分号
中间变量不想赋值就用一个空的大括号,默认赋值为0
如果最后一组不想赋值,可以省略大括号,也是默认赋值为0
int a[5][6]={{3,1,2},{88,4},{},{1,5,88,77,4}};
注意:如果数组大小较大,需要把数组定义在主函数的外面,否则程序会异常退出。