c语言学习笔记
for循环
for循环像一个计数循环:设定一个计数器,初始化 它,然后在计数器到达某值之前,重复执行循环体, 而每执行一轮循环,计数器值以一定步进进行调整, 比如加1或者减1
for =对于
- for (count=10; count>0; count--)
- 就读成:“对于一开始的count=10,当 count>0时,重复做循环体,每一轮循环 在做完循环体内语句后,使得count--。”
算阶乘
- n!= 1×2×3×4×...xn
- 写一个程序,让用户输入n,然后计算输 出n!
变量:
- 显然读用户的输入需要一个int的n,然后 计算的结果需要用一个变量保存,可以 是int的factor,在计算中需要有一个变量 不断地从1递增到n,那可以是int的i。
循环控制变量i只在循环里被使用了,在循 环外面它没有任何用处。因此,我们可以 把变量i的定义写到for语句里面去。
循环的计算和选择
循环次数
- for (i=0;i<n;i++)
- 则循环的次数是n,而循环结束以后,i的 值是n。循环的控制变量i,是选择从0开始 还是从1开始,是判断i<n还是判断i<=n, 对循环的次数,循环结束后变量的值都有 影响。
for循环
- for(初始动作;条件;每轮的动作){ }
- for中的每一个表达式都是可以省略的 for (;条件;)== while(条件)
选择
- 如果有固定次数,用for
- 如果必须执行一次,用do_while
- 其他情况用while
循环控制
判断素数
素数
- 只能被1和自己整除的数
- 1, 2, 3, 5, 7, 11,13,17, 19....
continue和break
- break:跳出循环
- continue:跳过循环这一轮剩下的语句进入 下一轮
- 只能对它所在的那层循环做
同学们依次站起来唱歌
continue:一位同学唱歌唱到一半,指令,然后不唱了,直接下一个人唱继续循环。
break:一位同学唱歌唱到一半,指令,然后不唱了,直接下一个人不唱了跳出循环。
输出100以内的素数
嵌套的循环
- 循环里面还是循环
找50个素数
从嵌套的循环中跳出
凑硬币
- 如何用1角、2角和5角的硬币凑出10元以 下的金额呢?
goto改:一般从最内侧跳到最外侧时才用goto
前n项求和
改
整数分解
正序分解整数
- 输入一个非负整数,正序输出它的每一位数字
- 输入:13425
- 输出:13 4 2 5
存在问题:此程序只适用于末尾无0的数据。
x=13425;
13425 % 10000 ->1
13425 / 10000 ->3425
10000 / 10 ->1000
3425 % 1000 ->3
3425 / 1000 ->425
1000 / 10 ->100
425 % 100 ->4
425 / 100 ->25
100 / 10 ->10
25 % 10 ->2
25 / 10 ->5
10 / 10 ->1
5 % 1 ->5
5 / 1 ->5
1 /10 ->0
int mask = 10000;
do{
int d = x / mask;
x %= mask;
mask /=10;
}while(mask>0);
printf("%d,d");
完整程序:
求最大公约数
- 输入两个数a和b,输出它们的最大公约数
- 输入:12 18
- 输出:6
法1.权举
- 设t为2;
- 如果u和v都能被t 整除,则记下这个t
- t加1后重复第2 步,直到t等于u或 四
- 那么,曾经记下的 最大的可以同时整 除u和v的t就是gcd
法2.辗转相除法
- 如果b等于0,计算结束,a就是最大公约数;
- 否则,计算a除以b的余数,让a等于b,而b等于那个 余数;
- 回到第一步。