作业讲解环节
- C语言中数据类型:
- 内置的:char short int long long long float double
- 自定义:struct
- 局部变量不一定作用域是在main函数内部,而是其所在的局部范围
#includeint num = 10; int main() { int num = 1; printf("num = %dn", num); return 0; }
-
局部变量优先
-
输出小飞机:
#includeint main() { printf(" ** n"); printf(" ** n"); printf("************n"); printf("************n"); printf(" * * n"); printf(" * * n"); return 0; }
- 在线 OJ :Online Judge 互联网公司面试
- 两种方式:
- IO型:所有代码都是自己完成
- 接口型:只需要一个函数,假设其他的数据都是准备好的
- 两种方式:
输出分为三行,分别为标题行,分隔行,信息行。
第一行,标题行,每个标题之间间隔4个空格。
第二行,分隔行,一共21个减号"-"。
第三行,信息行,每列输出信息和标题首字母对齐。输出样例如下:
Name Age Gender
Jack 18 man
int main()
{
printf("Name Age Gendern");
printf("---------------------n");
printf("Jack 18 mann");
return 0;
}
你的手机丢了,在屏幕上输出信息告诉大家。
I lost my cellphone!
int main()
{
printf("I lost my cellphone!n");
return 0;
}
(-8+22)×a-10+c÷2计算之后的结果,为一个整数。
#includeint main() { int a = 40; int c = 212; int ret = (-8+22)*a-10+c/2; printf("%dn", ret); return 0; }
- 注意C语言中的乘号是* 除号是/
- 区分0和’0’
- 0 是数字0
- '0’是字符0 —— 对应ASCII码值是48
- ‘ ’ 是字符——对应ASCII码值是0
- EOF 是 end of file 文件的结束标志 值是-1
- 求字符串长度
#include#include int main() { printf("%dn", strlen("c:test121"))//7 return 0; }
- 求字符串长度
#include#include int main() { char arr[] = {'b', 'i', 't'}; printf("%dn", strlen(arr));//随机值 return 0; }
- strlen计算函数长度时读到 才结束
#include#include int main() { char arr[4] = {'b', 'i', 't'}; printf("%dn", strlen(arr));//3 return 0; }
- 不完全初始化,剩余的元素自动初始化为零
int main()
{
int n = 10;
int arr[n] = { 0 };//数组的初始化长度应为常量
return 0;
}
-
C99标准之前,数组的大小都是用常量或者常量表达式指定
-
C99标准之后,支持了变长数组,这个时候允许数组的大小是变量,但这种方式指定的数组是不能初始化的
-
求两个整数的较大值
int Max(int x, int y)
{
if (x > y)
return x;
else
return y;
}
int main()
{
int a = 0;
int b = 0;
scanf("%d%d", &a, &b);
//求两个整数的较大值
int r = Max(a, b);
printf("%dn", r);
return 0;
}
- 已知一个函数y=f(x),当x < 0时,y = 1;当x = 0时,y = 0;当x > 0时,y = -1.
- 输入一个整数x 输出y的值
#includeint main() { int x = 0; int y = 0; scanf("%d", &x); if(x<0) y = 1; else if(x == 0) y = 0; else y = -1; printf("%dn", y); return 0; }
- C语言是非常灵活的 : 提供了非常丰富的操作符 , 使用起来非常灵活
- 算术操作符: + - * / %
int main()
{
int a = 7 / 2;
int b = 7 % 2;//取模
printf("%dn", a);
printf("%dn", b);
return 0;
}
- 除号两端都是整数时,执行的是整数除法,如果两端至少有一个浮点数执行浮点数除法
- 取模操作符两端的两个操作数只能是整数
int main()
{
float a = 7.0 / 2;
int b = 7 % 2;
printf("%.1fn", a);
printf("%dn", b);
return 0;
}
- 单目操作符——只有一个操作数的操作符
- C语言中0表示假 非0表示真
int main()
{
int flag = 0;
if (!flag)
{
printf("hehen");//打印hehe
}
return 0;
}
- -也是一个单目操作符
int main()
{
int a = -10;
int b = -a;
printf("%dn", b);
return 0;
}
- sizeof 是单目操作符
int main()
{
int a = 10;
printf("%dn", sizeof(a));
printf("%dn", sizeof(int));
printf("%dn", sizeof a);
printf("%dn", sizeof int);//语法不支持
return 0;
}
int main()
{
int arr[10] = { 0 };
printf("%dn", sizeof(arr));//计算的是整个数组大小,单位是字节
printf("%dn", sizeof(arr[0]));//4
printf("%dn", sizeof(arr) / sizeof(arr[0]));//10 - 数组的元素个数
return 0;
}
- 后置++
int main()
{
int a = 10;
int b = a++;//int b = a ; a = a + 1 后置++:先使用,后++
printf("%dn", a);//11
printf("%dn", b);//10
return 0;
}
- 前置++
int main()
{
int a = 10;
int b = ++a;//a = a + 1;b = a 后置++:先使用,后++
printf("%dn", a);//11
printf("%dn", b);//11
return 0;
}
- 后置–
int main()
{
int a = 10;
int b = a--;//int b = a;a = a - 1 后置++:先使用,后++
printf("%dn", a);//9
printf("%dn", b);//10
return 0;
}
- 前置–
int main()
{
int a = 10;
int b = --a;//a = a - 1;int b = a 后置++:先使用,后++
printf("%dn", a);//9
printf("%dn", b);//9
return 0;
}
- 强制类型转换
int main()
{
int a = (int)3.14;
printf("%dn", a);
return 0;
}
- ==判断相等
int main()
{
int a = 10;
if (a = 3)
{
printf("hehen");
}
return 0;
}
- 逻辑与 && 并且
int main()
{
int a = 10;
int b = 20;
if (a && b)
{
printf("hehen");//打印hehe
}
return 0;
}
int main()
{
int a = 10;
int b = 0;
if (a && b)
{
printf("hehen");//不打印hehe
}
return 0;
}
int main()
{
int a = 0;
int b = 0;
if (a && b)
{
printf("hehen");//不打印hehe
}
return 0;
}
- 逻辑或 || 或者
int main()
{
int a = 0;
int b = 0;
if (a && b)
{
printf("hehen");//不打印hehe
}
return 0;
}
int main()
{
int a = 10;
int b = 0;
if (a && b)
{
printf("hehen");//打印hehe
}
return 0;
}
int main()
{
int a = 10;
int b = 20;
if (a && b)
{
printf("hehen");//打印hehe
}
return 0;
}
-
条件操作符(三目操作符)——有三个操作数 exp1 ? exp2 : exp3
- 如果exp1为真,exp2计算,exp3不计算,exp2为表达式结果
- 如果exp1为假,exp2不计算,exp3计算,exp3为表达式结果
-
求两个数的较大值
int main()
{
int a = 100;
int b = 20;
int r = (a > b) ? a : b;
printf("%dn", r);
return 0;
}
- 逗号表达式就是用逗号隔开的一串表达式,从左向右依次计算,整个表达式的结果是最后一个表达式的结果
int main()
{
int a = 10;
int b = 20;
int c = 0;
int d = (c = a - 2, a = b + c, c - 3);//c = 8, a = 28, 5 -> 5
printf("%dn", d);
return 0;
}
- 下标引用操作符
int main()
{
int arr[10] = { 10,11,12,13,14,15,16,17,18,19 };
arr[3];//[]下标引用操作符
return 0;
}
- 访问元素时下标可以用变量定大小
int main()
{
int arr[10] = { 10,11,12,13,14,15,16,17,18,19 };
int n = 3;
arr[n] = 20;//[]下标引用操作符
return 0;
}
- 函数调用操作符
int main()
{
int sum = Add(2, 3);//Add,2,3都是()的操作数
return 0;
}
-
关键字是C语言内置的,不可以自己创建出来
- 内置类型int,char均是关键字
- const 常属性
- continue与break用于循环语句中
- default用于swtich语句
- enum——枚举类型 struct——结构体 union——联合体
- extern用来声明外部符号
- register寄存器变量
- signed 有符号的 unsigned 无符号的
- sizeof计算大小的
- static 静态的
- typedef 类型重定义
- void(无,函数的返回类型,函数参数)
-
变量的命名:
1.有意义
2.必须是字母、数字、下划线组成 不能有特殊字符,同时不能以数字开头
3.不能是关键字



