流程控制及if的用法

流程控制的定义

程序代码执行的顺序

流程控制的分类

顺序

自上而下的依次执行

选择

某些代码可能执行,也可能不执行,有选择的执行某些代码

if

1.if的简单用法
格式:
	if(表达式)
		语句
功能:
	如果表达式为真,执行语句
	如果表达式为假,不执行语句
2.if的范围问题
if(表达式)
	语句A;
	语句B;
解释:if只能控制语句A的执行或不执行
	  if不能控制语句B的执行或不执行
	  或者讲语句B一定会执行
if(表达式)
{
	语句A;
	语句B;
}
此时if可以控制语句A和语句B
由此可见:if默认只能控制一个语句的执行或不执行
		  如果想控制多个语句的执行或不执行就必须把这些语句用{}括起来

举例

//2023.4.13
//目的:了解if的作用范围
#include<stdio.h>
int main()
{
	if (3 > 2)
		printf("AAAAA\n");
	printf("BBBBB\n");
	if (3 < 2)
		printf("DDDDD\n");
	printf("EEEEE\n");//D未运行出,而E运行出可以看出if的作用范围只有第一条语句printf("DDDDD");
	if (4 > 2)
	{
		printf("FFFFF\n");
		printf("GGGGG\n");
	}
	if (4 < 2)
	{
		printf("HHHHH\n");
		printf("KKKKK\n");
	}
	return 0;

}
/*
* ---------------------------------------------------
运行结果:
AAAAA
BBBBB
EEEEE
FFFFF
GGGGG

D:\vs\郝斌c\if的范围问题\x64\Debug\if的范围问题.exe (进程 8320)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
------------------------------------------------------
*/
3. if  else的用法
//2023.4.13
//目的:了解if...else的用法
#include<stdio.h>
int main()
{
	if (3 > 2)
		printf("AAAAA\n");
	else
		printf("BBBBB\n");
	printf("CCCCC\n");
	return 0;
}
/*
运行结果:
-------------------------------
AAAAA
CCCCC

D:\vs\郝斌c\if else的用法\x64\Debug\if else的用法.exe (进程 19676)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
--------------------------------
*/
//总结:可见else和if一样也只控制一条语句

4.if... else if.... else...的用法
//2023年4月29日
//目的:
//1.学习if... else if.... else...的用法
//2.了解加上哈哈后为什么出错
#include<stdio.h>
int main()
{
	double delta = -1;
	if (delta > 0)
		printf("有两个解\n");
	//printf("哈哈\n"); 
	// 出现错误: error C2181: 没有匹配 if 的非法 else
	//如果此处输入本语句,程序会报错,因为下面的else 会找不到对应的if,就相当于哈哈语句把if截断了
	else if (delta == 0)
		printf("只有唯一的一个解\n");
	else
		printf("无解\n");
	return 0;

}
/*
总结:
1.常见格式:
if(1)
	A;
else if(2)
	B;
else if(3)
	C;
else
	D;

*/

个人理解else if也是相当于if,在第一个if不成立过后还有几个其他情况就用else if来假设

举例

***重要的点(注意)

1.

90<=score<=100这样的写法是错误的

错误的原因:这样写运行出来永远是真,程序从左往右执行,90<=score的结果只有0或1,而0或1都小于100,所以执行结果永远为真

必须要写成90<=score&&score<100

2.C语言对真假的处理

在c语言中,非零表示真,零表示假,0---假,1---真

//2023年4月29日
//目的:
//1.了解c语言真假的用法
//2.知道90<=score<=100这样的写法是错误的
#include<stdio.h>
int main()
{
	float score;
	printf("请输入你的分数:");
	scanf_s("%f", &score);
	if (score > 100)
		printf("你在做梦!\n");
	else if (90 <= score && score < 100)
	//错误写法90<=score<100
	//这样写运行出来永远是真,程序从左往右执行,90<=score的结果只有0或1,而0或1都小于100,所以执行结果永远为真
		printf("优秀");
	else if (60 <= score && score < 80)
		printf("合格");
	else if (0 <= score && score < 60)
		printf("未及格,继续努力");
	else
		printf("输入数据格式不对");
	return 0;

}
/*
总结:
1.在c语言中,非零表示真,零表示假,0---假,1---真
2.了解数值在两数之间正确的写法,如90<=score<=100错误,90<=score&&score<=100
*/
//注意:
//1.最后的else里面不需要加语句,这是我经常犯的错误,if语句后面没有;

5.if常见例子
5.1用fi互换两个数字
//2023年4月29日
//目的学会用if互换两个数字
#include<stdio.h>
int main()
{
	int i = 3;
	int j = 6;
	int t;//t的意思是temporary暂时就是临时变量
	printf("------------变换前----------\n");
	printf("i=%d j=%d\n",i,j);
	t = i;
	i = j;
	j = t;
	printf("------------变换后-----------\n");
	printf("i=%d  j=%d\n",i,j);
	return 0;

}
/*
总结:
1.互换两数要学会加入另一个变量,做临时变量
*/

/*
运行结果:

------------变换前----------
i=3 j=6
------------变换后-----------
i=6  j=3

D:\vs\郝斌c\if互换\x64\Debug\if互换.exe (进程 8696)已退出,代码为 0。
按任意键关闭此窗口. . .
*/
5.2 if实现三数排序

我们仔细观察代码,会发现我们最终的排序是a,b,c,我们说这是降序,那么当前面的数比后面的数小时就要交换位置

简单分析一下,我们这里用if 不是 else if的原因是 if 和else if是只有一个会被执行,而都是if的话就都会被执行。

//2023年4月29日
//目的:学会用if进行排序,程序=算法+语言,其中数据结构与算法中还有许多优秀的算法不要忘记学习
#include<stdio.h>
int main()
{
	int a, b, c, t;
	printf("请输入三个整数:(以空格隔开)");
	scanf_s("%d %d %d",&a,&b,&c);
	if (a < b)
	{
		t = a;
		a = b;
		b = t;
	}
	if (a < c)
	{
		t = a;
		a = c;
		c = t;
	}
	if (b < c)
	{
		t = b;
		b = c;
		c = t;
	}
	printf("按降序排序为:");
	printf("%d>%d>%d",a,b,c);
	return 0;
}
/*
总结:
1.在完成程序时,算法的选择很重要
2.
--------------------------
小算法程序:
	判断一个数字 是否是素数
	判断一个数字是否是回文数,即1221这种倒过来也是一样
	编程实现求一个十进制数字的二进制形式
	求一个数字的每位是奇数的数字取出来组合形成的新数字
	求一个数字倒过来的数字
--------------------------
如何看懂一个程序,分三步:
1.流程
2.每个语句的功能
3.试数
----------------------------
如何学习一些小算法的程序
	1.尝试自己去编程解决它,大部分人都无法自己解决它
	2.如果解决不了,就看答案
	3.关键是把答案看懂,这个是重点
	4.看懂之后自己修改程序,知道修改之后程序不同的输出结果
	5.照着答案敲一遍
	6.调试错误
	7.不看答案,自己独立敲出代码
*/


/*
注意:
1.单个if语句也是正确的,if不是必须匹配else
2.if的空语句问题
eg.     if(3>2);
			printf("AAAAAA\n");
            printf("BBBBBB\n");
这样相当于有三个语句,会输出AAAAAA   BBBBBB。
if(3>2);
相当于if(3>2)
          ;
执行了一个空语句     
*/

/*
运行结果:

请输入三个整数:(以空格隔开)2 16 88
按降序排序为:88>16>2
D:\vs\郝斌c\if三数排序\x64\Debug\if三数排序.exe (进程 5136)已退出,代码为 0。
按任意键关闭此窗口. . .
*/

由此,我们也可以简单的写出升序排列

#include<stdio.h>
int main()
{
	int a, b, c, t;
	printf("请输入三个整数:(以空格隔开)");
	scanf_s("%d %d %d",&a,&b,&c);
	if (a < b)
	{
		t = a;
		a = b;
		b = t;
	}
	if (a < c)
	{
		t = a;
		a = c;
		c = t;
	}
	if (b < c)
	{
		t = b;
		b = c;
		c = t;
	}
	printf("按降序排序为:");
	printf("%d>%d>%d\n",a,b,c);

	//后加的
	printf("按升序排列为:");
	printf("%d<%d<%d\n",c,b,a);
	return 0;
}


/*

请输入三个整数:(以空格隔开)16 2 88
按降序排序为:88>16>2
按升序排列为:2<16<88

D:\vs\郝斌c\if三数排序\x64\Debug\if三数排序.exe (进程 2212)已退出,代码为 0。
按任意键关闭此窗口. . .

*/

5.3判断一个数字是否是素数

注意:注意写代码时,把if(i == a)写成了 if(i=a)是非常错误的,我们要记住用if时是判断,==就是判断, =是赋值

/*
2024.1.25
目的:写一个程序判断数字是否是素数
*/
#include<stdio.h>
int main()
{
	int a;
	int i;
	printf("请输入一个数,我们帮你判断是否是素数\n");
	scanf_s("%d",&a);
	for (i=2; i <= a; i++)
		//for循环里面是;
	{
		if (a % i == 0)
			break;
	}
	if (i == a)
		printf("是素数\n");
	else
		printf("不是素数\n");

	return 0;
}

/*
注意:

1.for里面是由;隔开

2.
	for (i; i < a; i++)
		//for循环里面是;
	{
		if (a % i == 0)
			printf("a是素数\n");
	}
这样写是可以判断是否是素数,但是我们仔细思考一下发现,这样的结构不好表达不是素数的情况
我们可以i<=a  ,这样如果中间没有数可以整除i的话,那么通过判断i=a我们就知道他是素数,i不等于a,他不是素数

3.注意写代码时,把if(i == a)写成了 if(i=a)是非常错误的,我们要记住用if时是判断,==就是判断, =是赋值
*/

/*
运行结果:
---------------------------------------------------------------------------------
请输入一个数,我们帮你判断是否是素数
29
是素数

D:\vs\郝斌c\if判断素数\x64\Debug\if判断素数.exe (进程 9084)已退出,代码为 0。
按任意键关闭此窗口. . .
----------------------------------------------------------------------------------

----------------------------------------------------------------------------------

*/

5.4判断一个数字是否是回文数(还实现了求一个数倒过来的数)

回文数就是该数字从左边读和从右边读的结果是一样的,如1221,12321

原理:任何一个数除以10的余数就是该数的最后一位,任何一个数除以10的商就是排除最后一位的数,如12321, 12321/10=1232......1     1232/10=123......2   123/10=12......3   12/10=1......2       1/10=0......1

除到商为0,新数=新数*10+每次对应的余数

/*
2024.1.26
目的:判断一个数是否是回文数
*/
#include<stdio.h>
int main()
{
	int y = 0;
	int num;
	int s;
	printf("请输入你要判断的数,即判断其是否是回文数\n");
	scanf_s("%d",&num);
	s = num;
	/*
	这句话很重要,刚开始我没有这句话for里写的是s = num / 10 求商,
	乍看没错,但是忽略了我们需要的商是要改变的,我们需要进行除法后的商
	所以起初不改for里的s=num/10 和y=y*10+num%10是错误的
	*/
	for (s; s > 0; s = s / 10)
	{
		y = y * 10 + s % 10;
		printf("%d\n",y);
	}
	if (y == num)
	{
		printf("该数是一个回文数\n");
	}
	else
	{
		printf("该数不是回文数\n");
	}
	return 0;
}

5.5实现求一个十进制数的二进制数

假如1234这样一个十进制数转化为二进制

1234/2=617.....0     617/2=308.....1     308/2=154......0     154/2=77......0    77/2=38......1

38/2=19......0          19/2=9......1          9/2=4......1              4/2=2......0         2/2=1......0

1/2=0......1

除二直到商为0,再从下到上

有问题,暂时没做出来

switch

switch(表达式)

{

        case 常量表达式1:   语句1

        case 常量表达式2:   语句2

        default:                     语句3

        case 常量表达式3:   语句4

}

注意:

1.所有case后面的常量表达式为便于描述我们姑且称之为标签,这些标签都只能是:
(1)枚举常量

(2)数值常量

(3)字符常量

(4)常变量

(5)宏名中的一种,注意 普通变量,枚举变量是不能作为标签使用的。

2.执行完一个case语句后,流程控制就转移到写一个case语句继续执行。case 常量表达式只是起语句标号的作用,并不是在该处进行条件判断。在执行switch语句时,根据switch()中表达式的值找到与之匹配的case子句,自此case子句开始执行下去,不再进行判断。

当i==1时,从case 1处开始往下一个不落的执行。

当i==2时,从case 2处开始往下一个不落的执行。

当i==3时,只执行case 3一句。

当i==4时,从default处开始往下一个不落的执行。

当i==0时,执行情况同i==4。

3.switch是选择不是循环,如果在switch中出现了break语句,该语句的功能只是退出switch语句转去执行它下面的语句 。在switch中出现continue是错误的,除非switch本身就属于for或while循环的一部分。

循环

循环的定义:

某些代码会被重复执行

循环的分类:

for        while        do...while

for

1.for格式:
for(1;2;3)
    A;
2.for执行流程

1  ->  2  ->  A(2满足才执行A)  ->  3  ->  2  ->  A  -> 3......

举例

//2023年4月30日
//目的:学习for循环的基础知识
#include<stdio.h>
int main()
{
	int i;
	int sum = 0;
	for (i = 1; i <= 10; i++)
		//语句1  语句2   语句3
		sum = sum + i;
	    //语句4
//printf("%d以内的累加和",i-1);
	printf("sum=%d",sum);
	//语句5
	return 0;

}
/*
总结:
1.循环的定义:某些代码会被重复执行
2.循环的分类:for      while		do...while
3.***********此程序的执行顺序:1-2-4-3-2-4-3 ...直到3执行后2不成立就执行5
4.++i和i++的区别
i++和++i对于i来说都一样,都是i = i + 1;
如果用于赋值语句,作用有所差别,x = ++i,是先i=i+1,然后把i的值赋给x
							    x = i++, 是先把i的值赋给x,然后 i = i+1
*/


/*
运行结果:
sum=55
D:\vs\郝斌c\for循环\x64\Debug\for循环.exe (进程 2612)已退出,代码为 0。
按任意键关闭此窗口. . .
*/

3.多层for的嵌套使用

总结:

(1)
for(1;2;3)      //1
    for(4;5;6)  //2
        A;        //3
        B;        //4
总共两个语句,123是一个语句,4是单独的一个语句


(2)
for(1;2;3)        //1
    for(4;5;6)  //2
    {
        A;        //3
        B;        //4
    }
总共一个语句,1234是一个语句


(3)
for(1;2;3)            //1
    for(4;5;6)        //2
    {
        A;            //3
        B;            //4
        for(4;5;6)    //5
            C;        //6
    }
总共一个语句

4.for的常见例子
for求10以内所有被奇数和
//2023年5月1日
//目的:求10以内的奇数和
#include<stdio.h>
int main()
{
	int i;
	int sum = 0;
	for (i = 1; i < 10; i += 2)
	{
		sum = sum + i;
		printf("输出几次就代表循环了几次\n");
	}
	printf("循环结束i=%d\n",i);
	printf("最后结果sum=%d\n",sum);
	return 0;
}
/*
运行结果
------------------------------
输出几次就代表循环了几次
输出几次就代表循环了几次
输出几次就代表循环了几次
输出几次就代表循环了几次
输出几次就代表循环了几次
循环结束i=11
最后结果sum=25

D:\vs\郝斌c\if举例求10以内所有奇数和\x64\Debug\if举例求10以内所有奇数和.exe (进程 13996)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
----------------------------




运行过程
i=1------i<10------sum=0+1-----------i=i+2=1+2=3------i<10-------sum=0+1+3---------i=i+2=3+2=5----------i<10
---------sum=0+1+3+5---------i=i+2=5+2=7-------sum=0+1+2+3+5+7---------i=i+2=7+2=9---------i<10---------sum=0+1+3+5+7+9
---------i=i+2=9+2=11---------i<10不成立
所以最终输出i的值为11,sum的值为25

*/
for和if嵌套使用求3-10能被3整除的数之和
//2023年5月1日
//目的:学会在for内嵌套if,并了解流程控制,此程序是计算出3-10能被3整除的数
#include<stdio.h>
int main()
{
	int i;
	int sum = 0;
	for (i = 3; i < 10;++i )
		// 1      2     3
	{
		if(i%3==0)
			//4
		sum = sum + i;
		   //5
		printf("sum=%d\n", sum);
		   //6
	}
	//如果没有中括号,那么只有sum=sum+i一直循环执行
	return 0;
}

/*
运行结果
--------------------------
sum=3
sum=3
sum=3
sum=9
sum=9
sum=9
sum=18

D:\vs\郝斌c\for里嵌套if\x64\Debug\for里嵌套if.exe (进程 20960)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
-------------------------
流程控制:
1--2---4--5--6--3--2--4--5--6--3--2.....直到不满足2
6语句不是由if控制是由for控制,所以不管if成不成立,6语句都会执行
i=3---i<10--if成立--sum=0+3---6成立sum=3---i=i+1=4----i<10----if不成立---sum不执行----6成立sum=3......
i----3--4--5--6--7--8--9--10
sum--3--3--3--9--9--9--18--i=10时for中i<10不成立,所以接下来的语句都不成立

*/

/*
注意:
1.不要忘记换行符\n,有了换行符查看结果更简洁明了
2.注意if和for语句没有中括号时作用的范围只有接下来的一句
*/

for求1/1+1/2+1/3+1/4+1/5+......1/99+1/100的和
//2023年5月1日
//熟悉for操作
#include<stdio.h>
int main()
{
	int i;
	float sum = 0;
	//因为算了很多分数的和,所以用float更合适
	for ( i= 1; i <= 100; i++)
	{
		//sum = sum + 1/i;这样运行出来sum=1,就相当于分数部分都被化为0
		sum = sum + 1.0 / i;//推荐使用
		//sum=sum+1/(float)i    也可以但是用上面那个更方便简便

	}
	printf("sum=%f",sum);
	//因为是float 所以用%f更好
	return 0;
}
/*
1.运行结果
--------------------------
sum=5.187378
D:\vs\郝斌c\for举例\x64\Debug\for举例.exe (进程 17256)已退出,代码为 0。
按任意键关闭此窗口. . .
----------------------------
2.自己写程序多思考,不需要再引入一个未知数,就算我引入了该怎样写对
*/

/*
注意:
1.浮点数存错带来的问题
float 和double都不能保证可以精确的存储一个小数
举例:
	有一个浮点型变量x,如何判断x的值是否是零
	if(|x-0.0000001|<0.0000001)
		是零;
	else
		不是零;
原因:
如for(i=0;i<=5;i++)
i--0--1--2--3--4--5
而设成小数如
for(i=0.1;i<=5;i++)
i--0.1--1.1--2.1--3.1--4.1--5.1(不成立)
*/
for求1到100的奇数和
/*
目的:求1到100的奇数和
*/
#include<stdio.h>
int main()
{
	int i;
	int sum = 0;
	for (i = 1; i <= 100; i++)
	{
		if (i % 2 == 1)//判断i是奇数
			sum += i;//sum=sum+i
	}
	printf("sum=%d",sum);
	return 0;
}

/*
运行结果:
sum=2500
D:\vs\郝斌c\for求1到100奇数和\x64\Debug\for求1到100奇数和.exe (进程 3388)已退出,代码为 0。
按任意键关闭此窗口. . .
*/
for求1到100的奇数个数
//2023年5月2日
//目的:学会for的一些用法运用
#include<stdio.h>
int main()
{
	int i;
	int cnt = 0;
	for (i=1;i<=100;i++)
	{
		if (i % 2 == 1)
			cnt++;
	}
	printf("1到100的奇数个数为%d", cnt);
	return 0;
}
/*
运行结果:
---------------------------------
1到100的奇数个数为50
D:\vs\郝斌c\for求1到100奇数个数\x64\Debug\for求1到100奇数个数.exe (进程 9736)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
----------------------------------
*/
for求1到100的奇数平均值
//2023年5月2日
//目的:运用for计算1到100奇数平均值
#include<stdio.h>
int main()
{
	int i;
	int sum = 0;
	int cnt = 0;
	float avg;
	for (i = 1; i <= 100; i++)
	{
		if (i % 2 == 1)
		{
			sum = sum += i;
			cnt++;
		}
	}
	avg = 1.0*sum / cnt;//这里最好写成1.0*sum/cnt而不是sum/cnt的原因是avg是float型的浮点数
	printf("sum=%d\n",sum);
	printf("奇数个数(cnt)为%d\n", cnt);
	printf("1到100奇数平均值为:%f\n",avg);
	return 0;
}

/*
运行结果:
sum=2500
奇数个数(cnt)为50
1到100奇数平均值为:50.000000

D:\vs\郝斌c\求1到100奇数的平均值\x64\Debug\求1到100奇数的平均值.exe (进程 7992)已退出,代码为 0。
按任意键关闭此窗口. . .
*/

for求1到100的偶数和
//2023年5月2日
//目的:运用for求1到100的奇数和,偶数和,奇数个数,偶数个数
#include<stdio.h>
int main()
{
	int i;
	int sum1 = 0;//奇数和
	int sum2 = 0;//偶数和
	int cnt1 = 0;//奇数个数
	int cnt2 = 0;//偶数个数
	for (i = 1; i <= 100; i++)
	{
		if (i % 2 == 1)
		{
			sum1 += i;
			cnt1++;
		}
		else
		{
			sum2 += i;
			cnt2++;
		}
	}
	printf("奇数和为%d,奇数个数为%d\n", sum1, cnt1);
	printf("偶数和为%d,偶数个数为%d\n", sum2, cnt2);
	return 0;
}
/*
运行结果:
-------------------------------
奇数和为2500,奇数个数为50
偶数和为2550,偶数个数为50

D:\vs\郝斌c\求1到100奇数和偶数和\x64\Debug\求1到100奇数和偶数和.exe (进程 22896)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
-------------------------------
*/


/*
注意:
1.每个语句都只能控制接下来的一个语句,不要忘记中括号的作用
2.注意使用\n换行,不然运行结果超级难看
*/

5.i++和++i的区别
//2023年4月29日
//目的:学习i++和++i的区别
#include<stdio.h>
int main()
{
	int a = 1;
	int b = 1;
	int c = 1;
	int d = 1;
	int x = 0, y = 0;
	x = a++;
	y = ++b;
	c = c++;
	d = ++d;
	printf("(由a++变换的x)x=%d    (由++b变换的y)y=%d\n",x,y);
	printf("c=%d			  d=%d",c,d);
	return 0;

}
/*
总结:
1. i++和++i对自身的值没有影响,相当于都是i=i+1
2.如果将i++或者++i赋值给其它未知数,如x=i++或x=++i,那么值就会有所不同
i++会先把i的值赋给x再加1             ++i会先加1在赋值
*/

/*
运行结果:
(由a++变换的x)x=1    (由++b变换的y)y=2
c=2                       d=2
D:\vs\郝斌c\i++和++i的区别\x64\Debug\i++和++i的区别.exe (进程 7072)已退出,代码为 0。
按任意键关闭此窗口. . .
*/

while

1.while的格式
while(表达式)
    语句;
2.for和while相互转换
for(1;2;3)
    A;



等价于

1;
while(2)
{
    A;
    3;
}
3.while执行顺序

		格式:
		while(表达式)
			语句;

	先执行表达式,再执行语句,语句执行完以后执行表达式(看表达式是否成立),表达式成立再执行语句......直到表达式不成立退出循环
4.while举例
while求1到100的整数和
//2023年5月3日
//目的:了解while并求1到100的整数和
#include<stdio.h>
int main()
{
	int i;
	int sum = 0;
	/*
	for(i=1;i<=100;i++)
	sum=sum+i;
	*/
	i = 1;
	while (i <= 100)
	{
		sum = sum + i;
		i++;
	}
	printf("sun=%d",sum);
	return 0;

}

/*
运行结果:
-----------------------------
sun=5050
D:\vs\郝斌c\while\x64\Debug\while.exe (进程 23200)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
------------------------------
*/



/*
总结:
1.学习while以下方面
	(1)执行顺序
		格式:
		while(表达式)
			语句;
		先执行表达式,再执行语句,语句执行完以后执行表达式(看表达式是否成立),表达式成立再执行语句......直到表达式不成立退出循环
	(2)与for的互相比较
	(3)举例
	(4)什么时候使用while
2.while和for 可以互换
但for的逻辑性更强,更不容易出错,推荐使用for
   for(1;2;3)
		A;
等价于
	1;
	while(2)
	{	A;
		3;
		}

3.while后面没有;
4
*/

while求回文数

原理:任何一个数除以10的余数就是该数的最后一位,任何一个数除以10的商就是排除最后一位的数,如12321, 12321/10=1232......1     1232/10=123......2   123/10=12......3   12/10=1......2       1/10=0......1

除到商为0,新数=新数*10+每次对应的余数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值