三大语句
简单语句、声明语句和复合语句
控制程序语句:条件判断(If)、分支语句(switch)、循环语句(for…)
简单语句
声明语句
变量类型+变量名+分号
int a ;
数组类型+数组名+分号
char b[5] ;
指针变量类型+星号+指针变量名+分号
float *p;
函数返回值类型+函数名+一对小括号+分号
int a();
函数声明语句通常放在具体函数实现的语句之前,变量也是如此。在使用变量或是函数之前如不声明,编译器找不到出处就会报错。
复合语句
由若干语句共同组成的,也可称为语句块。
语句之间用分号隔开,用{ }括起来,应当把复合语句看作是一条语句,而不是多条语句。
在复合语句中声明的语句只能在复合语句中使用,若超出这个范围可能会报错。
语句作用域
在控制语句块内定义的变量,超出该语句块的范围将会失去作用。
分支语句
1.if 语句
if(条件语句)
{
程序语句;
}
条件语句是逻辑表达式,或是指为逻辑值的其他表达式
条件语句为true时执行{}部分,false时跳过程序语句执行后续部分
“{}”尽量不要省略。
if…else if…else语句汇总
若有任一条件满足,则不再判断后续else,执行完程序语句后回到程序主体进行。
2.switch语句
switch语句表达式:
switch (表达式)
{
case 值1:
程序语句1;
break;
case 值2:
程序语句2;
break;
case 值3:
程序语句3;
break;
...
default:
程序语句n+1;
break;
default语句:如果上述条件都不满足,则执行此语句。
caution:
- case后的常量表达式的值不能相同,否则会报错
- case后可用多个程序语句,不用{}括起来
- case和default语句的顺序不影响结果
- default可有可无
- case语句匹配到值后会顺序执行后面的语句,直到遇到break或函数返回语句
#include<iostream>
using namespace std;
int main()
{
int a;
cout << "Input a integer number: ";
cin >> a;
switch (a)
{
case 1:
cout << "Monday" << endl;
break;
case 2:
cout << "Tuesday" << endl;
break;
case 3:
cout << "Wednesday" << endl;
break;
case 4:
cout << "Thursday" << endl;
break;
case 5:
cout << "Friday" << endl;
break;
case 6:
cout << "Saturday" << endl;
break;
case 7:
cout << "Sunday" << endl;
break;
default:
cout << "error" << endl;
break;
}
system("pause");
}
如果将上面的break都去掉,运行时给a赋值1,则会执行所有的case语句和default语句。
如果不是有意为之,一定要在每个case语句后增加“break;”语句
循环语句
1.for语句
for(表达式1;表达式2;表达式3)
{
循环语句;
}
执行顺序:先对表达式1进行赋值,然后对表达式2进行判断。
判定条件为真,则进入循环语句执行循环,然后执行表达式3。
再次进入循环(即判断表达式2……)
2.while语句
while(表达式)
{
循环语句1;
循环语句2;
}
和if相同
3.do while
do
{
语句1;
语句2;
}while(表达式);
do while循环至少循环一次,while循环可以为0次
4.嵌套循环语句
多层循环内每一层循环不能有交叉的内容
注意缩写和{ }的对齐
break语句
用于结束离它最近的循环,紧接着就执行循环语句后最近的语句。
break终止的是内循环和switch语句结构。
if语句嵌套在循环中或是在switch中可以使用break;
通常在switch语句和while、for或do…while循环中使用break语句。
continue语句
作用是结束本次循环,直接进入下一次循环。
次、continue语句只是结束本次循环,而break语句是直接退出所有循环。
输出1-100内的5的倍数
for (int i = 1; i < 101; i++)
{
if ((i % 5)!= 0)
continue;
cout << i << " " << endl;
}
return语句
程序执行到return时会终止当前函数的运行,并将操作权返回给调用者。
在main函数中则将操作权返还给操作系统。
如果不是void(返回值为空)的函数的话,则必须要有return,且和函数返回值类型需保持一致。
相关例题
1.人民币发工资问题:
#include<iostream>
using namespace std;
int main()
{
int n, a[100], i, s=0;
cout << "输入教师人数(小于100)" << endl;
cin >> n;
cout << "分别输入每个教师的工资" << endl;
for (i = 0; i<n; i++)
{
cin >> a[i];
}
for (i = 0; i<n; i++)
{
s = s + a[i] / 100;
a[i] = a[i] % 100;
s = s + a[i] / 50;
a[i] = a[i] % 50;
s = s + a[i] / 10;
a[i] = a[i] % 10;
s = s + a[i] / 5;
a[i] = a[i] % 5;
s = s + a[i] / 2;
a[i] = a[i] % 2;
s = s + a[i];
}
cout <<"最少需要的人民币张数为:"<< s << endl;
system("pause");
}
2.小球反弹落地问题
#include<iostream>
using namespace std;
int main()
{
float s = 100 , h= 100;
for (int i = 1; i < 10; i++)
{
h = h / 2;
s = s + 2 * h;
}
cout << "小球10次落地时共经历" << s << "米" << endl;
cout << "第10次落地后小球反弹了" << h << "米" << endl;
system("pause");
}
3.求对称的三位数的素数
#include<iostream>
using namespace std;
int main()
{
int i, j;
for (i = 100 ; i < 1000; i++)
{
if (i / 100 == i % 10) //对称的三位数
{
for (j = 2; j <= sqrt(i); j++)
{
if (i%j == 0) break;
}
if (j>sqrt(i))
cout << i << endl;
}
}
system("pause");
}
或者
#include<iostream>
using namespace std;
int main()
{
int n, i, flag;
for (n = 100; n<1000; n++)
{
flag = 1;
for (i = 2; i <= n / 2; i++)
if (n%i == 0)
{
flag = 0;
break;
} //求所有三位的素数
if (flag == 1)
{
if (n / 100 == n % 10)//该数是对称的
printf("%d ", n); //打印结果
}
}
system("pause");
}
4.求1000以内的所有完数
#include<iostream>
using namespace std;
int main()
{
int i, j, k;
for (i = 1; i <= 1000; i++) //1000之内
{
k = 0;
for (j = 1; j <= i - 1; j++) //寻找因子(及约数)
{
if (i%j == 0)
k = k + j; //因子求和
}
if (k==i) //求和后的因子与原数相同即为完数
cout << i << endl;
}
system("pause");
}
5.求水仙花数
#include<iostream>
using namespace std;
int main()
{
int i, a, b, c, d;
for (i = 100; i < 1000; i++)
{
a = i / 100;
b = i / 10 % 10;
c = i % 10;
d = a*a*a + b*b*b + c*c*c;
if (i == d)
cout << d << endl;
}
system("pause");
}