int main(int argc,char** argv)
//argc 参数个数
//argv 参数是什么
getchar();
//输入一个字符,不能读整数,不能读小数
putchar();
//输出一个字符
C语言关键字32个
常量:程序在运行当中 值 不可以发生改变的量
如:45;78;'A';‘t’; "hello"; '&'
整形变量
48 78
浮点型变量(小数)
3.14 0.7788
字符型常量
'A' '&'
字符串常量
"qwert" "1234"
符号常量
#denfine PI 3.14
这里的PI就是符号常量
整型常量
十进制整型常量
符号:0~9
%d 格式化的输入输出一个十进制整数
printf("%d\n",45);
八进制整型常量
符号:0~7 (不包含8)
前缀:0
比如:072
%o 格式化的输入输出一个八进制整数
printf("%o\n",072); //输出一个八进制的72 注意:输出72没有前缀0
printf("%#o\n",072); //可以完整的输出072
printf("%d\n",072); //以十进制的方式输出一个八进制的72,相当于八进制的72转换为十进制的58
十六进制整型常量
符号:0~9 A~F(a~f)
a:10 b:11 c:12 d:13 e:14 f:15
前缀:0x 或者 0X
比如:0x45 0xaf4d
%x 格式化的输入输出一个十六进制整数
printf("%x\n",0xaf4d); //输出一个十六进制的af4d 注意:输出af4d没有前缀0x
printf("%#x\n",0xaf4d); //可以完整的输出0xaf4d
**注意:不包含二进制**
进制之间的转换
就比如十进制279 用 短除法除以 2 ,一直除到商小于除数,再从商开始数余数就是二进制的数
由下图可发现,三位二进制位对应一位八进制位,四位二进制位对应一位十六进制位
十进制小数 比如:3.14
打印方式: %f(默认保留小数点后六位)
%m.nf m表示输出宽度,比如3.14宽度为4,如果m值小于等于4的话,3.14原样输出
m值为5的话,会在输入的3.14前面空一格
n值为保留小数点后几位
用科学计数法表示浮点型常量
3.14 * 10 ^ 2
可以用E或者e 表示 10
3.14E2
printf("%f\n",3.14E2); //314.000000
字符型常量
a~z A~Z ~ % # * &等等
用单引号引起来的,单引号里面不能为空
字符在内存是以ASCII码的方式存储,数值和符号是一一映射的关系,实际存储的是数值
'z' 'A' '~' '$' '&'
用%c输出
printf("%c\n",'0'); //打印字符0
printf("%d\n",'0'); //打印出字符0的ASCII码,值为48
想打印%,它是格式化控制符,需要写两个%号
如 printf("%%");
才会输出一个百分号
字符串常量
"hello world"
printf("hello world");
可以有空字符串""
空字符串长度为0,但是占用一个字节,因为它包含字符串终止符 \0(占用一个字节)
比如
int len = strlen("wq");
printf("字符串的长度为:%d\n",len); //输出2 ,长度是2,但是占用3个字节
printf("len的大小为:%d\n",sizeof(len)); //输出4,因为len是一个整型变量(占用四个字节)
printf("%d\n",sizeof("wq")); //输出3,因为终止符\0包含 一个字节
char ne[6] = "qwer";
printf("%d\n",strlen(ne)); //输出4,因为strlen是计算实际长度
printf("%d\n",sizeof(ne)); //输出6,sizeof 计算大小
面试题
输入一个字母,大写转小写,小写转大写
#include <stdio.h>
int main()
{
char n;
while(1){
printf("请输入一个字母,不区分大小写\n");
scanf("%c",&n);
setbuf(stdin,NULL); //清空缓冲区
if(n >= 65 && n<= 90){
printf("%c\n",n+32);
}else if(n >= 97 && n <= 122){
printf("%c\n",n-32);
}else{
printf("请输入字母\n");
}
}
return 0;
}
练习题:
删除线格式
whiel循环做一个九九乘法表
删除线格式
char ch = getchar();
//输出一个字符
putchuar(ch);
char str[100]; //字符数组
gets(str);
puts(str);
**
数学函数
要包含头文件 #include <math.h>
**
//求绝对值的函数
int n = abs(-45);
printf("%d\n",n); //输出45
//求长整型的绝对值
int m = labs(-7891236);
printf("%d\n",m); //输出7891236
//求浮点型绝对值
float f = fabs(-3.14);
printf("%f\n",f); //输出3.140000
//向上取整
int c = ceil(3.8);
printf("%d\n",c); //输出4
//向下取整
c = floor(3.8);
printf("%d\n",c); //输出3
随机函数
包含头文件 #include <stdilb.h>
//rand
int x = rand();
printf("x=%d\n",x); //输出41
srand
int q = srand(123); //srand要带值,但是这个值是有另一个数值来对应
//就比如123对应7931320
printf("%d\n",q); //输出7931320
时间函数
包含头文件 #include <time.h>
time_t* t = time(NULL);
二位数组
指针
int *p1,p2,p3; //这里只有p1是指针,p2,p3都是int型
int *p1,*p2,*p3; //这里三个都是指针
define 和 typedef
#define PINT int* //define 是发生宏替换
PINT p1,p2,p3; //等于int *p1,p2,p3;
typedef int* PPINT; //typedef 是起别名
PPINT p1,p2,p3; //等于int *p1,*p2,*p3;
内存管理
程序的局部变量存在于()中,全局变量存在于()中,动态申请数据存在于()中。
答案:栈;静态区;堆