目录
1. 附录一些琐碎的运算符知识
自增自减 三目运算符 逗号运算符
1.1 自增或(自减)
分类
前自增 - - - ++i
后自增 - - - i++
区别
相同 最终都使 i 的值 加1
不同 前自增整体表达式的值是i加1之后的值
后自增整体表达式的值是i加1之前的值
#include<stdio.h>
int main(void)
{
int i;
int j;
int k;
int m;
i = j = 3; //等价于 i=3,j = 3
k = i++;
m = ++j;
printf("i = %d, j = %d, k = %d, m = %d", i, j, k, m);
return 0;
}/* i = 4 j = 4 k = 3 m = 4 */
1.2 为什么会出现自增(自减)
代码更精练
自增的速度更快
1.3 关于自增的问题
1.当我们编码时应该屏蔽掉前自增和后自增的区别
2.自增表达式最好不要作为一个更大的表达式的一部分来使用。换句话说,i++和++i 单独成一个语句,不要把它作为一个完整复合语句的一部分来使用。
如: int m = i++ + ++i +i +i++;//这样写不但是不规范的代码而且是不可移植的代码
printf("%d %d %d", i++,++i,i) 同上
这个代码让人看这不舒服而且这个程序在其他计算机上运行的结果可能不同
1.4 三目运算符
A ? B : C
等价于
if(A)
B;
else
C;
#include<stdio.h>
int main(void)
{
int i;
i = (3 > 2 ? 5 : 1);
printf("%d\n", i);
return 0;
}/* 5 */
1.5 逗号运算符
格式
(A,B,C,D)
功能:
从左到右执行
最终表达式的值一般是最后一项的值
#include<stdio.h>
int main(void)
{
int i;
int j = 2;
i = (j++, ++j, j + 2, j - 3);
printf("%d\n", i);
return 0;
}/* 1 */
2 多个for循环嵌套使用
#include<stdio.h>
int main(void)
{
int i, j;
for(i= 0; i<3; ++i)
for(j=2; j<5; ++j)
printf("wryyy!\n");
printf("THE WORLD!\n");
return 0;
}
生成九个wryyy一个THE WORLD
注意执行步骤和流程顺序
3. while概叙
1. 执行顺序
格式:
while(表达式)
语句 :
当语句成立后,在判断表达式是否成立,如果成立,继续循环语句。while循环默认控制一个语句。
#include<stdio.h>
int main(void)
{
int sum = 0;
int i;
i = 1;
while (i < 101)
{
sum = sum + i;
++i;
}
printf("sum = %d\n", sum);
return 0;
}
我们再看看用for来表示
#include<stdio.h>
int main(void)
{
int i;
int sum = 0;
for (i = 1; i <= 100; ++i)
sum = sum + i;
printf("sum = %d\n", sum);
return 0;
}
for 和 while 可以相互转换
for(1;2;3)
A;
等价于
1;
while(2)
{
A;
3;
}
while和for在逻辑上完全等价,但for逻辑性更强,更不容易出错。
4. while举例
从键盘输入一个数字,如果该数字是回文数,则返回yes,否则no。
回文数:正着写和倒着写都一样 如 121, 321123。
#include<stdio.h>
int main(void)
{
int val;
int m;
int sum = 0;
printf("请输入您需判断的数字: ");
scanf_s("%d", &val);
m = val;
while (m)
{
sum = sum * 10 + m % 10;
m /= 10;
}
if (sum == val)
printf("Yes!\n");
else
printf("No!\n");
return 0;
}
5. 菲波拉契序列
1 2 3 5 8 13 21 34 55 89
#include<stdio.h>
int main(void)
{
int n;
int f1, f2, f3;
int i;
f1 = 1;
f2 = 2;
printf("请输入您需要求的想的序列: ");
scanf_s("%d", &n);
if (1== n)
{
f3 = 1;
}
else if (2 == n)
{
f3 = 2;
}
else
{
for (i = 3; i <= n; ++i)
{
f3 = f1 + f2;
f1 = f2;
f2 = f3;
}
}
printf("%d\n", f3);
return 0;
}
感谢观看