7628人加入学习
(18人评价)
C++编程系列 第一季编程基础

制作于2018年2月7日

价格 免费

分支语句和逻辑运算符 编程练习

1,用 switch 改写下面的代码片段:

if(ch =='A')

a_grade++;

else if (ch=='B')

b_grade++;

else if(ch=='C')

c_grade++;

else if(ch=='D')

d_grade++;

else

f_grade++;

2,求得 20!

3,求得 1!+2!+3!+...+20!

4,实现函数判断一个字符串是否是回文。若是回文,函数返回值为1;否则返回值为0.回文是顺读和倒读都一样的字符串!

5,输入三个整数,分别放在变量a,b,c中,然后把输入的数据重新按由小到大的顺序放到变量a,b,c中,最后输出啊a,b,c的值

 


char ch;
cin>>ch;
int a_grade=0,b_grade=0,c_grade=0,d_gread=0,f_grade=0;
switch(ch)
{
case 'A':
a_grade++;
break;
case 'B':
b_grade++;
break;
case 'C':
c_grade++;
break;
case 'D':
d_grade++;
break;
default:
f_grade++;
break;
}
cout<<a_grade<<b_grade<<c_grade<<d_grade<<f_grade<<endl;

// 阶乘
// 4! = 1*2*3*4  // 5!=120
long long result=1;
for(int i=1;i<=20;i++)
{
result=result*i;
}
cout<<result<<endl;


long long result = 0;
for(int i=1;i<=20;i++)
{
// i!
long long resultTemp=1;
for(int j=1;j<=i;j++)
{
resultTemp=resultTemp*j;
}
result+=resultTemp;
}
cout<<result;

[展开全文]

int vip = 2;

switch(vip)

{

case 0:

cout<<"没有礼物"<<endl;

break;

case 1:

cout<<"赠送10个钻石"<<endl;

break;

case 2:

cout<<"赠送30个钻石"<<endl;

 

case 3:

cout<<"赠送50个钻石"<<endl;

break;

case 4:

cout<<"赠送100个钻石"<<endl;

break;

default :

break;

}

结果:

赠送30个钻石

赠送50个钻石

 

for(int i=1;i<10;i++)

{

if(i%3==0)

{

continue;

}

cout << i <<endl;

// 1

// 2

// 4

// 5

// 7

// 8

}

[展开全文]

 

#include <iostream>

using namespace std;

 

enum HeroType

{

Tank = 1,

Magic = 4,

ADC = 7,

Assist

};

 

int main()

{

//switch(integer-expression) // 整数表达式

//{

//case label1:

//statement1;

//break;

//case label2:

//statement2;

//break;

//default:

//code

//break;

//}

 

/* HeroType type = Tank;

 

switch(type)

{

case Magic :

cout<<"使用魔法师技能"<<endl;

cout<<"创建魔法师模型"<<endl;

break;

case Tank:

cout<<"使用坦克技能"<<endl;

cout<<"创建坦克模型"<<endl;

break;

case ADC:

cout<<"使用射手技能"<<endl;

cout<<"创建射手模型"<<endl;

break;

case Assist:

cout<<"使用辅助技能"<<endl;

cout<<"创建辅助模型"<<endl;

break;

default:

cout<<"没有找到对应的英雄类型"<<endl;

break;

} */

 

int vip = 4;

switch(vip)

{

case 0:

cout<<"没有礼物"<<endl;

break;

case 1:

cout<<"赠送10个钻石"<<endl;

break;

case 2:

cout<<"赠送30个钻石"<<endl;

break;

case 3:

cout<<"赠送50个钻石"<<endl;

break;

case 4:

cout<<"赠送100个钻石"<<endl;

break;

default :

break;

}

}

结果:

使用坦克技能

创建坦克模型

 

赠送100个钻石

[展开全文]

// 条件运算符 问号 冒号
// ? : 
// 表达式1 ?表达式2:表达式3
//if(表达式1)
//{
//表达式2
//}
//else
//{
//表达式3
//}

//int i = true ? 100 : 90;
//cout<< i<<endl; // 100


//int vip =1;
// 使用string,需要引入#include <string>
//string res = vip==1 ? "有优惠" : " 正常价格";

int vip = 1;
vip == 1 ? cout<<"有优惠" : cout<<:"正常价格";

 

[展开全文]
#include <iostream>
using namespace std;

int main()
{
// || 或
/*int vip = 1;
if(vip==1 || vip==2)
{
cout<<"获得优惠";
}*/

//bool res1 = true || false; // 1
//boo res2 = false || true; // 1
//bool res3 = false || false; // 0
//bool res4 = true || true; // 1
//cout<<res1<<" "<<res2<<" "<<res3<<" "<<res4<<endl;

//bool res1 = 4==4 || 4==9; // 1
//bool res2 = 9>0|| 3>4; // 1
//bool res3 = 2<8 || 3<9; // 1
//bool res4 = 5<3 || 9<7; // 0
//cout<<res1<<" "<<res2<<" "<<res3<<" "<<res4<<endl;

// && 与
//int age = 20;
//if(age>=18 && age<=30)
//{
//cout<<"你是青年"<<endl;
//}

//bool res1 = 4==4 && 3==3; // 1
//bool res2 = 8==8 && 6==4; // 0
//bool res3 = 5>4 && 3>9; // 0
//bool res4 = 4>8 && 5<10; // 0
//bool res5 = 3<9 && 2>9; // 0
//cout<<res1<<" "<<res2<<" "<<res3<<" "<<res4<<" "<<res5<<endl;

// !
//cout<<!true<<endl; // 0
//cout<<!(10>9)<<endl; // 0

// && and    || or     ! not


return 0;
}

 

[展开全文]

int hp=0;

// 单独if

if(hp<=0)

{

//cout<<:"true"<<endl;

cout<<"游戏结束"<<endl;

}

 

if(hp<=0)

cout<<"游戏结束:<<endl;

 

if(hp<=0)

{

cout<<"游戏结束"<<endl;

}

else

{

cout<<"游戏继续"<<endl;

}

 

 

// if 嵌套

int age = 17;

if(age<18)

{

cout<<"你可以玩3个小时"<<endl;

}

else

{

//cout<<"你可以玩10个小时"<<endl;

if(age<50)

{

cout<<"你可以玩10个小时"<<endl;

}

else

{

cout<<"你可以玩2个小时"<<endl;

}

}

 

//if else if

if(age<18)

{

cout<<"你可以玩3个小时"<<endl;

}

else if(age<50)

{

cout<<"你可以玩10个小时"<<endl;

}

else if(age<80)

{

cout<<"你可以玩2个小时"<<endl;

}

else

{

cout<<"你不能玩这个游戏"<<endl;

}

[展开全文]

7,编写一个程序,让用户可以持续输入数字,每次输入数字,报告当前所有输入的和。当用户输入0的时候,程序结束。

siki:

    float total = 0;
    while (true)
    {
        cout << "请输入一个数字:";
        float number;
        cin >> number;

        if (number == 0)
        {
            break;
        }

        total += number;
        cout << "当前所有输入的和为:" << total << endl;
    }

 

自写:

    bool execute = true;
    float totalNum = 0;
    while (execute)
    {
        float temp;
        cout << "请输入一个数字:";
        cin >> temp;
        if (temp == 0)
        {
            execute = false;
        }
        totalNum += temp;
        cout << "当前和为:" << totalNum << endl;
    }

[展开全文]

3,下面的代码会打印什么内容

    int j = 5;

    while(++j<9)

        cout << j++ << endl;

结果:

6

8

  

 int j = 5;
    while (++j < 9) // j=j+1 ; j<9
        cout << j++ << endl; // cout<<j<<endl; j=j+1;
    // 6
    // 8

 

 

4,下面的代码会打印什么内容

    int k = 8;

    do

        cout << "k = " << k << endl;

    while(k++ < 5);

结果:

 k = 8

 

 

5,编写一个打印 1 2 4 8 16 32 64 的for循环

siki:

for(int i = 1; i <= 64; i*=2)

{

    cout<<i<<endl;

}

    //j=1;    res=1;
    //j=1*2;  res=2;
    //j=2*2;  res=4
    //j=4*2;  res=8;
    //j=8*2;  res=16;
    //j=16*2; res=32;
    //j=32*2; res=64

 

 

自写:

#include <iostream>
#include <cmath>
using namespace std;

int main()

{

    for (int a = 0; a < 7; a++)
    {
        cout << pow(2, a) << " ";
    }
    //a=0,res=1
    //a=1,res=2
    //a=2,res=4
    //a=3,res=8
    //a=4,res=16
    //a=5,res=32
    //a=6,res=64

    return 0;

}

 

 

 

 

6,编写一个程序,让用户输入两个整数,输出这两个整数之间(包括这两个整数)所有整数的和。

    比如 2 5    里面整数有 2 4 = 6

 

 

    cout << "请输入第一个数字:";
    int num1;
    cin >> num1;
    cout << "请输入第二个数字:";
    int num2;
    cin >> num2;

    int total = 0;

    for (int i = num1; i <= num2; i++)
    {
        total += i;
    }
    cout << total << endl; // 14
    // 2 - 5    2 3 4 5

[展开全文]

练习题

1,下面的代码会打印什么内容

    int i;

    for(int i = 0; i < 5; i++)

        cout << i;

        cout << endl;

结果:01234

 

2,下面的代码会打印什么内容

    int j;

    for(j = 0; j < 11; j+=3)

        cout << j;

    cout << endl << j << endl;

结果:

0369

12

 

3,下面的代码会打印什么内容

    int j = 5;

    while(++j<9)

        cout << j++ << endl;

结果:

4,下面的代码会打印什么内容

    int k = 8;

    do

        cout << "k = " << k << endl;

    while(k++ < 5);

5,编写一个打印 1 2 4 8 16 32 64 的for循环

6,编写一个程序,让用户输入两个整数,输出这两个整数之间(包括这两个整数)所有整数的和。

    比如 2 5    里面整数有 2 4 = 6

7,编写一个程序,让用户可以持续输入数字,每次输入数字,报告当前所有输入的和。当用户输入0的时候,程序结束。

 

 

 

 

#include <iostream>
using namespace std;

int main()
{
    //for (int i = 0; i < 5; i++)
    //    cout << i;
    //cout << endl;// 结果:01234

    int i = 9;
    //++i;
    //--i;
    //cout << i << endl;
    //int result = (i++) + 1; // 结果:10 10
    //int result = ++i + 1; // 结果:11 10
    //cout << result << " " << i << endl;
    
    //{
    //    cout << i++ << endl; // 9
    //    cout << i << endl; // 10
    //}

    //{
    //    cout << ++i << endl; // 10
    //    cout << i << endl; // 10
    //}
    
    //{
    //    cout << i-- << endl; // 9
    //    cout << i << endl; // 8
    //}
    {
        cout << --i << endl; // 8
        cout << i << endl; // 8
    }
    return 0;
}

[展开全文]

#include <iostream>

using namespace std;

 

int main()

{

int scores[] = { 233,123,23,123,345 };

 

int scores2[4][5] = {

{123,12,321,2,2},

{123,2,13,12,31},

{123,12,3,343,4},

{234,345,4,543,3}

};

//cout << scores2[1][1] << endl; // 2

 

//for (int i = 0; i < 5; i++) // 5

//{

// for (int j = 0; j < 6; j++) // 6 5*6 30次

// {

// cout << "i:" << i << " j:" << j << endl;

// }

//}

 

//for (int i = 0; i < 4; i++)

//{

// for (int j = 0; j < 5; j++)

// {

// cout << scores2[i][j] << " ";

// }

// cout << endl;

//}

 

for (int i = 0; i < 5; i++)

{

for (int j = 0; j < 4; j++)

{

cout << scores2[j][i] << " ";

}

cout << endl;

}

// 123 123 123 234

// 12 2 12 345

// 321 13 3 4

// 2 12 343 543

// 2 31 4 3

 

return 0;

}

[展开全文]

C++11的新遍历方式:

for(int 临时变量 : 数组)

{

}

 

#include <iostream>

using namespace std;

int main()

{

//do {

// // 循环体

//} while (判断);

 

int i = 100;

//do

//{

// cout << "创建敌人" << endl;

//} while (i>100);

// do while 循环体次数 >=1 的

 

//while (i>100)

//{

// cout << "创建敌人" << endl;

//}

// while 循环体次数 >=0 的

 

int scores[] = { 234,2,42,3,2,42,42,32 };

//for (int i = 0; i < 8; i++)

//{

// cout << scores[i] << endl;

//}

 

// C++11的标准

//for (int temp : scores)

//{

// //cout << temp << endl;

// temp = 10; // 笔记:不起作用

//}

//for (int temp : scores)

//{

// cout << temp << endl;

//}

 

 

for (int& temp : scores) // 注意:int& temp

{

//cout << temp << endl;

temp = 10;// temp = temp * 2; // 起到作用了,因为 int & temp,引用类型

}

for (int temp : scores)

{

cout << temp << endl;

}

 

return 0;

}

[展开全文]

#define

typedef

 

#include <iostream>

#include <string>

using namespace std;

 

// 宏

#define END return 0;

#define START int main()

#define FString string

#define R return

 

// 笔记:只能给类型起别名

typedef string UString; //笔记: 必须加分号;

// typedef return R; // 报错

typedef int FInt;

 

 

START

{

FString name = "siki";

cout << name << endl;

 

UString nickName = "sikiedu";

cout << nickName << endl;

R 0;

}

[展开全文]

#include <iostream>

using namespace std;

 

int main()

{

//while (判断)

//{

// 循环体;

//}

 

//for (初始化;判断;更新)

//{

// 循环体;

//}

//初始化;

//while (判断)

//{

// 循环体;

// 更新;

//}

// 用while判断角色是否死亡

 

int i = 0;

while (i < 10)

{

// i 0-9

cout << "创建敌人" << endl;

i++;

}

 

return 0;

}

[展开全文]

#include <iostream>

using namespace std;

 

int main()

{

// + - * / %

// += -= *= /= %=

//int a = 23, b = 29;

//a += b; // a = a + b;

//cout << a << endl; // 52

//a -= b;

//cout << a << endl; // 23

//a *= b;

//cout << a << endl; //667

//a /= b;

//cout << a << endl; // 23

//a %= b;

//cout << a << endl; // 23

 

// > >= < <= == !=

//bool res = 34 > 89;

//cout << res << endl; // 0

//int a = 100, b = 90;

//cout << (a > b) << endl; // 1

 

//char str1[] = "sikiedu";//"sikiedu2",则1

//char str2[] = "sikiedu";

//cout << (str1 == str2) << endl; // 0 // 笔记:判断的地址

 

////strcmp(str1, str2); // 0 相等;非0 不等

//cout << strcmp(str1, str2) << endl;

 

string str1 = "sikiedu";

string str2 = "sikiedu";

cout << (str1 == str2) << endl; // 1

 

return 0;

}

 

[展开全文]

#include <iostream>

using namespace std;

 

int main()

{

cout << "创建敌人" << endl;

// for 循环

//for (初始化;判断是否执行循环;更新)

//{

// 循环体;

//}

//for (int i = 0; i < 5; i = i + 1)

//{

// // i = 0 1 2 3 4

// cout << "创建敌人" << endl;

// cout << "设置位置" << endl;

//}

 

//for (int i = 0; i < 5; i = i + 1)

// cout << "创建敌人" << endl;

//cout << "创建敌人完成";

 

// 变量在外面初始化

int i = 0;

for (; i < 5; i++)

{

cout << "创建敌人" << endl;

}

 

// i 定义在外面,初始化在里面

int i; // 定义

for (i = 0; i < 5; i++) // i 初始化

{

cout << "创建敌人" << i << endl; // 创建敌人并输出 i 的值

}

 

 

 

string str;

cout << "请输入一个字符串:";

cin >> str; // 接收用户输入的字符串

 

for (int i = str.size() - 1; i >= 0; i--)

cout << str[i];

 

//int i = 90;

//i--;

//i = i + 1;

//cout << i << endl;

 

//i--;

// -- 是自减运算符

//i--相当于 i=i-1;

//同理

//i++;

//++是自增运算符

//i++相当于i=i+1;

 

return 0;

}

[展开全文]

#include <iostream>

using namespace std;

 

int main()

{

cout << "创建敌人" << endl;

// for 循环

//for (初始化;判断是否执行循环;更新)

//{

// 循环体;

//}

for (int i = 0; i < 10; i=i+1)

{

// i = 0 1 2 3 4 5 6 7 8 9

cout << "创建敌人" << endl;

}

return 0;

}

[展开全文]

 

// 模板类array创建数组

#include <iostream>

#include <array> // 笔记:使用模板类需要引用的

using namespace std;

 

int main()

{

 

array<int, 9> a1 = { 2,12,31,23,123,12 };

array<int, 9> a2;

a2 = a1; // 笔记: 功能,直接拷贝数组;还有其他的

cout << a1[4] <<" "<<a2[4]<< endl; // 123 123

cout << a1[8] << " " << a2[8] << endl; // 0 0

return 0;

}

 

练习题:

1,创建数组actor,里面有30个char

创建数组chuck,里面有13个float

2,创建一个结构体糖块CandyBar,里面包含三个成员,第一个成员存储了糖块的品牌,第二个成员存储糖块的重量(可以有小数),第三个成员存储了糖块的卡路里(整数)。编写一个程序,声明这个结构,创建一个名为snack的CandyBar变量,初始化为Mocha Munch,2.3,500,初始化应该声明snack的时候进行。最后程序显示snack变量的内容。

3,编写一个程序,然给用户输入三次50米跑的成绩,显示次数和平均成绩。使用一个array对象来存储数据。

[展开全文]

#include <iostream>

using namespace std;

 

int main()

{

//int a[]{ 3,12,312,31,2312,3,12,3,8,65 };

 

//cout << a << endl; // 006FFB7C

//cout << *a << endl;// 3

//cout << *(a + 1) << endl; // 12

//cout << *(a + 4) << endl; // 2312

 

//*(a + 1) = 1000;

//cout << a[1] << endl; // 1000

 

int* p = new int[20];

p[0] = 90;

cout << p[0] << endl; // 90

*(p + 2) = 80;

cout << *(p + 2) << endl; // 80

 

delete[] p; // 笔记:释放new的数组

 

 

return 0;

}

[展开全文]

#include <iostream>

using namespace std;

 

int main()

{

int a[]{ 3,12,312,31,2312,3,12,3,8,65 };

 

cout << a << endl; // 006FFB7C

cout << *a << endl;// 3

cout << *(a + 1) << endl; // 12

cout << *(a + 4) << endl; // 2312

 

*(a + 1) = 1000;

cout << a[1] << endl; // 1000

 

return 0;

}

[展开全文]

 

#include <iostream>

using namespace std;

int main()

{

//int a = 10;

//float b = 9.7f;

//int c = 20;

 

// & 取得一个变量的内存地址

//cout << &a << endl; // 0093F748

//cout << &b << endl; // 0093F73C

// * 从内存地址所对应的内存处 取得数据

//cout << *(&a) << endl; // 10

//cout << a << endl; // 10

// error: cout << *a << endl;

 

//int* pa = &a;

//float* pb = &b;

 

//cout << pa << endl; // 0079F722

//cout << pb << endl; // 0079F71C

 

//cout << *pa << endl; // 10

//cout << *pb << endl; // 9.7

 

//int* p;

//p = pa;

//cout << *p << endl; // 10

//cout << *pa << endl; // 10

//*pa = 100;

//cout << a << " " << *pa << endl; // 100 100

//*p = 300;

//cout << a << " " << *pa << " " << *p << endl; // 300 300 300

 

//int* p1 = NULL;

//int* p2 = 0;

//int* p3 = nullptr; // C++11

//cout << p1 << " " << p2 << " " << p3 << endl;;// 00000000 00000000 00000000

 

// 笔记:void 返回类型/任意类型指针

//void* p; // p 可以接收任意类型的指针

//p = &a;

////p = &b;

//cout << *((int*)p)<< endl; // 10

 

//int* p = new int;

//cout << *p << endl; // -842150451,没初始值

 

int* p = new int;

*p = 100;

cout << *p << endl; // 100

delete p; // 释放内存空间,通过new申请的,需要用delete释放

 

return 0;

}

[展开全文]