三、选择与循环
1.if与else
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
/*
else不能单独出现
if与else if,可以不断地进行else if,最后才可以是else,语句只会有一个得到执行
if 内部写if和else,一定要加上大括号,
*/
int main()
{
int i;
while (scanf("%d", &i) != EOF)
{
if(i > 0){//在if的括号后面不可以加;(分号),会造成表达式无论是真还是加,都会执行后面的语句
printf("i is bigger than 0\n");
}
else {//上面的条件为假时,走else
printf("i is not bigger than 0\n");
}
//printf("i = %d\n", i);
}
return 0;
}
10
i is bigger than 0
20
i is bigger than 0
-5
i is not bigger than 0
^Z
^Z
^Z
D:\cbook\第三章 选择与循环\Debug\01.if与else.exe (进程 2988)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
2.while循环
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//从1加到100
/*
当黑窗口(即控制台)卡住,只有两种情况:
一种卡在scanf了(这时候手输入内容,是可以输入进去的),
另一种是卡在死循环,死循环黑窗口中输入不进去内容
*/
int main()
{
int i = 1;
int total = 0;//存储最终的和
while (i <= 100)//while后面不能加分号,否则会死循环;
{
total += i;
i++;
}//语句都用花括号括起来
printf("total = %d\n", total);
return 0;
}
total = 5050
D:\cbook\第三章 选择与循环\Debug\02.while循环.exe (进程 18556)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
3.会出现死循环的原因
当黑窗口(即控制台)卡住,只有两种情况:
一种卡在scanf
了(这时候手输入内容,是可以输入进去的),
另一种是卡在死循环
,死循环黑窗口中输入不进去内容
会出现死循环的原因:
1.while()
后面加了分号
2.while()语句体内没有让表达式趋近于假
的操作
4.for循环
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//从1加到100
/*
当黑窗口(即控制台)卡住,只有两种情况:
一种卡在scanf了(这时候手输入内容,是可以输入进去的),
另一种是卡在死循环,死循环黑窗口中输入不进去内容
会出现死循环的原因:
1.while()后面加了分号
2.while()语句体内没有让表达式趋近于假的操作
*/
int main()
{
int i, total;
//for语句中只能有两个分号
for (i = 1, total = 0; i <= 100; i++)//for循环后面不能加分号
{
total += i;
}
printf("total = %d\n", total);
return 0;
}
total = 5050
D:\cbook\第三章 选择与循环\Debug\03.for循环.exe (进程 10700)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
5.continue语句
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//从1加到100之间奇数求和
int main()
{
int i, total;
//for语句中只能有两个分号
for (i = 1, total = 0; i <= 100; i++)//for循环后面不能加分号
{
if (i % 2 == 0) //如果i是偶数
{
continue;//提前结束i为偶数的这轮循环
}
total += i;
}
printf("total = %d\n", total);
return 0;
}
total = 2500
D:\cbook\第三章 选择与循环\Debug\04.continue.exe (进程 15288)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
6.break语句
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//从1加到100,当和大于2000,就终止循环
int main()
{
int i, total;
//for语句中只能有两个分号
for (i = 1, total = 0; i <= 100; i++)//for循环后面不能加分号
{
if (total > 2000)
{
break;//当求和大于2000,就终止循环
}
total += i;
}
printf("total = %d,i = %d\n", total,i);
return 0;
}
total = 2016,i = 64
D:\cbook\第三章 选择与循环\Debug\05.break语句.exe (进程 16504)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
7.判断对称数-整型数12321
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
/*
Description
输入一个整型数,判断是否是对称数,如果是,输出yes,否则输出no,不用考虑这个整型数过大,int类型存不下,不用考虑负值;
例如12321是对称数,输出yes,124421是对称数,输出yes,1231不是对称数,输出no
lnput
一个整型数
Output
输出是yes,或者no
思路:1234 --> 4321
把最初输入的整型数a,反过来后,再存到另外一个整型数b,判断a和b是否相等,如果相等就输出yes,否则输出no
*/
int main()
{
int a, c, b, temp;
while (scanf("%d", &a) != EOF)
{
b = 0;
c=a;
while (a)
{
temp = a % 10;
b = b * 10 + temp;
printf("%d", a % 10);
a = a / 10;
}
printf("\n");
printf("b = %d\n",b);
if (c == b) {
printf("yes\n");
}
else {
printf("no\n");
}
printf("\n");
}
return 0;
}
1234
4321
b = 4321
no
1234321
1234321
b = 1234321
yes
^Z
^Z
^Z
D:\cbook\第三章 选择与循环\Debug\06.判断对称数.exe (进程 21968)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .