基础
- scanf(“%s”,a); 输入空格结束,如果需要输入空格,应使用 gets(a);
-
单目运算符
++ --
的运算对象可以为int float double char
-
数组下标越界不会报错,只会提示警告,但赋初值越界报异常
int a[5]={1,2,3,4,5,6}; // 报错
a[100]=1; // 警告,但不影响程序执行 -
当函数调用时,实参形参各占一个独立的存储单元
-
类型相同的两个指针变量可以进行的运算为:
< = -
-
带参数的宏定义中参数是没有类型的,存在
不以 .h 为后缀
#include 命令包含的头文件 -
C语言的不足
- 数据类型检查不严格
- 表达式容易出现二义性
- 不能自动检查数据越界
-
%3d
右对齐,%-3d
左对齐 -
C语言函数声明可以出现多次
-
C语言局部变量的缺省存储类型为
auto
-
预处理命令在源程序编译之前处理
-
所有预处理命令都是以
#
开头 -
预处理命令包括:
宏定义
、文件包括
、条件编译
-
5%-3=2 -5%3=-2:即取模运算结果是否带符号,取决于前面的数
-
存储类型:
-
必须得看这里
转义符
\b :退格,将当前光标前移,然后输出
printf(“123\b”); // 123
printf(“12\b3”); // 13
函数
- int strcmp(str1,str2);
负数:st1 < str2
正数:str1 > str2
0:相等
编程题:
- 编写 strcmp(char *p1,char *p2); 相同返回0,不同返回相差(*p1-*p2)
- 进制转换
// 十进制转任意进制 void fun(int num,int x){ char s[]="0123456789ABCDEF"; if(num>=x){ fun(num/x,x); } printf("%c",s[num%x]); } //====================== 方法2 ============================================= void main(){ int base,n,num[20],i=0; scanf("%d",&n); // 数字 scanf("%d",&base); // 几进制 char s[]="0123456789ABCDEF"; while(n>0){ i++; num[i]=n%base; n/=base; } for(int j=i;j>=1;j--){ printf("%c",s[num[j]]); } }