C++学习日记(语句)

三大语句

简单语句、声明语句和复合语句

控制程序语句:条件判断(If)、分支语句(switch)、循环语句(for…)


简单语句

声明语句

变量类型+变量名+分号
int a ;
数组类型+数组名+分号
char b[5] ;
指针变量类型+星号+指针变量名+分号
float *p;
函数返回值类型+函数名+一对小括号+分号
int a();
函数声明语句通常放在具体函数实现的语句之前,变量也是如此。在使用变量或是函数之前如不声明,编译器找不到出处就会报错。

复合语句

由若干语句共同组成的,也可称为语句块。
语句之间用分号隔开,用{ }括起来,应当把复合语句看作是一条语句,而不是多条语句。
在复合语句中声明的语句只能在复合语句中使用,若超出这个范围可能会报错。

语句作用域

在控制语句块内定义的变量,超出该语句块的范围将会失去作用。

分支语句

1.if 语句

if(条件语句)
{
    程序语句;   
}

条件语句是逻辑表达式,或是指为逻辑值的其他表达式
条件语句为true时执行{}部分,false时跳过程序语句执行后续部分
“{}”尽量不要省略。

if…else if…else语句汇总
若有任一条件满足,则不再判断后续else,执行完程序语句后回到程序主体进行。
else if语句逻辑图

2.switch语句
switch语句逻辑图
switch语句表达式:

switch (表达式)
    {
    case 值1:
        程序语句1;
        break;
    case 值2:
        程序语句2;
        break;
    case 值3:
        程序语句3;
        break;
    ... 
    default:
        程序语句n+1break;

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……)
for语句循环逻辑图

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

求1000以内的完数

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

水仙花数

猜你喜欢

转载自blog.csdn.net/michaelzzk/article/details/79525463
今日推荐