switch语句中表达式的类型只能是:整形和枚举类型
switch的每个case之后如果没有加break语句,当前case执行结束后,会继续执行紧跟case中的语句。
case语句后一般放整形结果的常量表达式或者枚举类型,枚举类型也可以看成是一个特殊的常量。
没有规定case必须在default之前,一般case最好放在default之前
if语句是一种分支语句,可以实现单分支,也可以实现多分支
if之后可以跟多条语句,跟多条语句时需要使用{}括起来
while循环条件将会比循环体多执行一次。
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果:
思路:
1. 从上述表达式可以分析出
a.该表达式主要由100项,基数项为正,偶数项为负
2. 设置一个循环从1~100,给出表达式中的每一项:1.0 / i, 注意此处不能使用1,否则结果全部为0
然后使用flag标记控制奇偶项,奇数项为正,偶数项为负
然后将所有的项相加即可
void tm2()
{
for (int year = 1000; year < 2000; year++)
{
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
cout << year<<" ";
}
}
下面的代码输出一个5,但如果==变成=,那么会一直死循环输出5
void tm1()
{
for (int i = 0; i < 10; i++)
if (i == 5)//这里如果是=,那么会一直死循环5
cout << i;
}
打印1000-2000年里的闰年
void tm2()
{
for (int year = 1000; year < 2000; year++)
{
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
cout << year<<" ";
}
}
求两个数的最大公因数和最小公倍数
int gongyueshu()
{
int a=0, int b = 0;
cin >> a, b;
int n;
int big = 0, small = 0;
big = (a > b) ? a : b;
small = a + b - big;
n = small;
while (n)
{
if (a % n == 0 && b % n == 0)
{
break;
}
n--;
}
int gongbeishu = a * b / n;
cout << "最大公因数是" << n << endl;
cout << "最小公倍数是" << gongbeishu << endl;
return 0;
}
三个数比大小:
还有一个思路:用更新前的max和min给mid赋值,但是这种写法,最大值和最小值不能连续出现在前两个位置 否则更新还是有问题
void tm3()
{
int arr[3] = { 0 }; int max = 0; int min = 100; int mid = 0;
for (int i = 0; i < 3; i++)
{
cin >> arr[i];
if (max < arr[i])
{
max = arr[i];
}
if (min > arr[i])
{
min = arr[i];
}
}
for (int i = 0; i < 3; i++)
{
if ((arr[i] != max) && (arr[i] != min))
{
mid = arr[i];
}
}
//mid = (arr[0] + arr[1] + arr[2] - max - min);
cout << max << " " << mid << " " << min;
}