补充 for运算符和while相关知识

目录

1. 附录一些琐碎的运算符知识

  1.1 自增或(自减)

   1.2  为什么会出现自增(自减)

1.3 关于自增的问题

1.4  三目运算符

1.5 逗号运算符

2 多个for循环嵌套使用

3. while概叙

4. while举例

5. 菲波拉契序列


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;
}

感谢观看

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值