【物联网学习】基础——C++基础语法(week02)


一、第一个C++程序

1.编写第一个C++程序

vim编辑器创建/打开c++文件

vim hello.cpp

编写C++程序

//iostream输入输出流头文件
#include <iostream>
//cin是标准输入设备,cout标准输出设备
using std::cin;
using std::cout;
//endl回车换行
using std::endl;
//std是命名空间,包含cin,cout,endl
using namespace std;
//main函数左边int表示函数返回值的类型是int,int argc,char *argv[]是main函数的形参
//int argc,char *argv[]是命令行参数
//main函数是程序的唯一入口,也是编译器和操作系统唯一认识的函数
int main(int argc, char *argv[])
{

    //{函数体}
    //每条语句以;结束
    //向标准输出设备上打印“hello chengdu”,并且换行
    cout<<"hello chengdu"<<endl;
    //1.函数结束,2.返回函数的返回值
    return 0;
}

在这里插入图片描述

2.编译C++文件

//安装g++编译器
sudo apt install g++
//编译
g++ hello.cpp
g++ hello.cpp -o hello

3.运行可执行程序

运行可执行文件必须加路径(相对路径或绝对路径)

//执行
./a.out
./hello

二、基础知识

1.进制

1.1 进制简介

进制基本分为:十进制,二进制,八进制,十六进制
二进制:逢二进一,0和1
八进制:逢八进一,0,1,2,3,4,5,6,7
十六进制:逢十六进一,09,1015——>a~f

1.2 十进制转二进制

整数部分:除2倒取余,直到商为0
小数部分:乘2取整(每次都是小数部分乘2),直到小数部分为0
在这里插入图片描述

1.3 二进制转十进制

从低位到高位,每位上的数字乘以自己的权重,再累加
如10011010–>154
注意:(有些时候)
最高位是符号位:0表示+(正数),1表示-(负数)
最高位是0 ,表示正数可以省略,最高位是1表示负数,不能省略
在这里插入图片描述
归纳总结:
十进制转n进制(整数部分:除n倒取余,小数部分:乘n取整)
n:代表任意进制
n进制转十进制(每位数字*权重,累加)

1.4 八进制转二进制

每个八进制数对应三位二进制数
在这里插入图片描述

1.5 二进制转八进制

每三位二进制数对应一位八进制数
在这里插入图片描述

1.6 十六进制与二进制

每个十六进制对应4位二进制
在这里插入图片描述
在这里插入图片描述

2.原码、反码、补码

正数:原码=反码=补码
负数:反码=将原码的数据位,按位取反,最高位是符号位不变
补码=反码+1
在这里插入图片描述
注意:
下述代码打印结果不会是129,而是-127;因为char 的取值范围是 -128 ~ +127
129越界了2个,又会-128开始往后数2个,即-128,-127

#include<stdio.h>
void main()
{
// char -128~127
char a=129;
printf("a=%d\n",a);
//-128 -127
}

在这里插入图片描述

3.注释

//行注释
/*块注释*/
#if 1  //条件编译或者条件注释
#endif

在这里插入图片描述

4.关键字

在这里插入图片描述
常用关键字:
字符型:char(占1byte(字节),8bit(位))
整型:short(2byte),int(4byte),long(32位平台:4byte ;64平台:8byte)
浮点型:float,double
struct:结构体
union:联合体,联合体内的变量共用一块空间
enum :枚举
signed:有符号
unsigned:无符号
void:没有类型(空类型)

5.常量

常量,所见即所得,不能改变它
‘a’,‘1’,‘0’
字符常量:单引号作用的字符(转义字符除外)
‘\0’,‘\n’
整型常量:111,34567
浮点型常量:1.234,3.14f

6.变量

6.1 变量介绍

数据类型 变量名
变量的声明:char a;int b;float c;
变量的定义 a=‘c’;b=11;c=3.14;
变量命名规则:
变量名由:下划线、数字、字母组成,不能是关键字,首字母不能是数字
num_2(√),_v_a_3(√),case(×),2_q(×)
c语言:float stu_score;(下划线命名法)
C++: float stuScore;(驼峰命名法)

6.2 const修饰变量

const修饰的变量特点:具有只读属性

  1. 用常量初始化const 修饰的变量,不会给其开辟空间,值存在于符号常量表中
const int a = 10;
  1. const 修饰的变量取地址时,会立即为其开辟空间
    在这里插入图片描述
    在这里插入图片描述

7.基础数据类型

7.1 基础数据类型

字符型:char
sizeof(char)=1
整型:int short long
sizeof(int)=4,sizeof(long)=8,sizeof(short)=2
浮点型:float double
sizeof(float)=4,sizeof(double)=8

7.2 代码案例

  1. 字符型例题:将从终端输入的小写字母转成大写,大写字母转成小写,其它字符不做处理
int main(int argc, char *argv[])
{
    bool loop=1;
    do{
    char str;
    cout<<"please input string"<<endl;
    cin>>str;
    if(str>='A' && str<='Z'){
        str+=32;
        cout<<"large: "<<str<<endl;
    }
    else if(str>='a' && str<='z'){
        str-=32;
        cout<<"small: "<<str<<endl;
    }
    else if(str>='0' && str<='9'){
        cout<<"ascill: "<<(int)str<<endl;
    }

    cout<<"continue?"<<endl;
    char choice=' ';
    cin>>choice;
    if(choice=='N')
        loop=0;

    }while(loop);

    return 0;
}
  1. 浮点型例题:统计成绩,如果输入的分数是>100或者是<0,输出“无效分数”
    分数:
    90~100:显示 “A”
    80~90: 显示“B”
    70~80:显示“C”
    60~70: 显示"D"
    0~59: 显示“F”
//方法1:
int main(int argc, char *argv[])
{
    bool loop=1;
    float score=0.0;
 do{    
    cout<<"Please input a score"<<endl;
    cin>>score;
    if(score<0||score>100)
        cout<<"please input right score"<<endl;
    else{
        switch(score/10){
        case 10:
        case 9:
            cout<<"score is A"<<endl;
            break;
        case 8:
            cout<<"score is B"<<endl;
            break;
        case 7:
            cout<<"score is C"<<endl;
            break;
        case 6:
            cout<<"score is D"<<endl;
            break;            
        default:
            cout<<"score is E"<<endl;
            break;
        }  
    }
    //延时2秒显示
    sleep(2);
    }while(loop);
    return 0;
}
//方法2:
int main(int argc, char *argv[])
{
    float score=0.0;
    cout<<"Please input a score !"<<endl;
    cin>>score;
    switch(score){
        case 90 ... 100:
            cout<<"A"<<endl;
            break;
        case 80 ... 89:
            cout<<"B"<<endl;
            break;
        case 70 ... 79:
            cout<<"C"<<endl;
            break;
        case 60 ... 69:
            cout<<"D"<<endl;
            break;
        case 0 ... 59:
            cout<<"E"<<endl;
            break;
        default:
            cout<<"fail score"<<endl;
            break;
    }
    return 0;
}
  1. 整型例题:输入三个整数,输出最小值和最大值
int main(int argc, char *argv[]) 
{ 
    int a,b,c; 
    int max,min; 
    cout<<"pls input a,b,c"<<endl; 
    cin>>a>>b>>c; 
    
    if(a>b && a>c) 
    { 
        max=a; 
    } 
    else if(b>a && b>c) 
    { 
        max=b; 
    } 
    else if(c>a && c>b) 
    { 
        max=c; 
    } 
    
    if(a<b && a<c) 
    { 
        min=a; 
    } 
    else if(b<a && b<c) 
    { 
        min=b; 
    } 
    else if(c<a && c<b) 
    { 
        min=c; 
    } 
    cout<<"max="<<max<<","<<"min="<<min<<endl; 
    return 0; 
}

8.运算符

8.1 加、减、乘、除,取模

a+=b; //a=a+b
a-=b; //a=a-b
a/=b; //a=a/b
a*=b //a=a*b

注意:

  1. 两边的运算对象如果是整形(int ,short,long,char),取整
  2. 两边有浮点型对象(float,double),除法
    %: 取模运算,取左边运算符对象除以右边运算符对象后的余数
    5%3=2
    4%2=0

8.2 关系运算符

<,>, <=, >=,!=(不等于),==(等于)

8.3 逻辑运算符

C/C++:0为假,非0为真。
&&:逻辑与
有两个运算对象,是双目运算
运算对象1 && 运算对象2,逻辑与:左右两边的运算对象都为真,结果才是真,否则者是假

AB结果
100
010
111
000

||:逻辑或
有两个运算对象,是双目运算
运算对象1 || 运算对象2,逻辑或:左右两边的运算对象有一个为真,结果都为真,否则者是假

AB结果
101
011
111
000

! :逻辑非
逻辑非:如果原来为真 !操作后为假,如果原来为假,!操作后为真

A!A结果
!真
!假

9.控制语句:if、switch

9.1 if else语句

if(表达式)  //表达式为真,执行语句块1
{
     语句块1
}
else //表达式为假,执行语句块2
{
    语句块2
}


if(表达式1)//表达式1为真,执行语句块1
{
    语句块1
}
else if(表达式2)//表达式2为真,执行语句块2
{
    语句块2
}
else if(表达式3)//表达式3为真,执行语句块3
{
    语句块3
}

9.2 Switch语句

switch(常量表达式)  //不能是浮点型
{
   case 1:
        语句块;
        break; //跳出switch语句
   case 2:
        语句块;
        break; //跳出switch语句
  case 3:
        语句块;
        break; //跳出switch语句
 default ://上述分支都不满足,会走到此处
        语句块;
        break; //跳出switch语句
}

9.3 案例

  1. 键盘输入数字1~7(其他数字提示无效数据);1:星期一,2:星期二,7:星期天
//if语句
int main(int argc, char *argv[])
{
    int number=0;
    cout<<"please input a number!"<<endl;
    cin>>number;
    
    if(number<1 || number>7){
        cout<<"fail number!"<<endl;
    }
    else {
        if (number == 1) {
            cout<<"Monday"<<endl;
        } 
        else if (number == 2) {
            cout<<"Tuesday"<<endl;
        } 
        else if (number == 3) {
            cout<<"Wednesday"<<endl;
        } 
        else if (number == 4) {
            cout<<"Thursday"<<endl;
        } 
        else if (number == 5) {
            cout<<"Friday"<<endl;
        } 
        else if (number == 6) {
            cout<<"Saturday"<<endl;
        } 
        else if (number == 7) {
            cout<<"Sunday"<<endl;
        }
    }
    return 0;
}

//switch语句
int main(int argc, char *argv[])
{
    int number=0;
    cout<<"please input a number!"<<endl;
    cin>>number;
    if(number<1||number>7){
        cout<<"fail number!"<<endl;
    }
    else{
        switch(number){
            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<<"fail nember!"<<endl;
        //        break;
        }
    }
    return 0;
}
  1. 键盘输入一个年份,判断是否是闰年
    闰年评判标准:
    1、能被400整除的年份是闰年
    2、能被4整除且不能被100整除也是闰年
//布尔
bool isLeapYear(int year)
{
    return year%400==0||year%4==0&&year%100!=0;
}
int main(int argc, char *argv[])
{
    int year;
    cout<<"please input a year !"<<endl;
    cin>>year;
    cout<<"isLeapYear? "<<isLeapYear(year)<<endl;
    return 0;
}
//if语句
int main() {
    int year;
    cout << "请输入一个年份: ";
    cin >> year;

    if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {
        cout << year << " 是闰年" << endl;
    } else {
        cout << year << " 不是闰年" << endl;
    }

    return 0;
}
//switch语句
int main() {
    int year;
    cout << "请输入一个年份: ";
    cin >> year;

    switch (year % 400) {
        case 0:
            cout << year << " 是闰年" << endl;
            break;
        default:
            switch (year % 4) {
                case 0:
                    if (year % 100 != 0) {
                        cout << year << " 是闰年" << endl;
                    } else {
                        cout << year << " 不是闰年" << endl;
                    }
                    break;
                default:
                    cout << year << " 不是闰年" << endl;
                    break;
            }
            break;
    }

    return 0;
}
  1. 从键盘输入一个年份,随机生成一个月份(1-12),输出该月份对应的天数
    注意:闰年二月29天,平年28天
bool isLeapYear(int year)
{
    return year%400==0||year%4==0&&year%100!=0;
}

int main(int argc, char *argv[])
{
    int year=0,month=0,day=0;
    cout<<"please input a year "<<endl;
    cin>>year;
    srand(time(NULL));
    month=rand()%12+1;
    if(month==2)
    {
        if(isLeapYear(year)==1)
        {
            day=29;
        }
        else
        {
            day=28;
        }
    }

    else if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
    {
        day=31;
    }
    else
    {
        day=30;
    }
    
    cout<<"month is:"<<month<<", day is:"<<day<<endl; 
        
    return 0;
}
bool isLeapYear(int year)
{
    return year%400==0||year%4==0&&year%100!=0;
}

int main(int argc, char *argv[]) {
    int year=0, month=0, day=0;
    cout << "please input a year: " << endl;
    cin >> year;
    srand(time(NULL));
    month = rand() % 12 + 1;

    switch (month) {
        case 2:
            switch (isLeapYear(year)) {
                case 1:
                    day = 29;
                    break;
                default:
                    day = 28;
                    break;
            }
            break;
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            day = 31;
            break;
        default:
            day = 30;
            break;
    }

    cout << "month is: " << month << ", day is: " << day << endl;

    return 0;
}

10.循环控制:for、while、do…while、(goto)

10.1 for语句

for(表达式1;表达式2;表达式3)
{
    循环体(语句块)
}
其它语句

首先执行表达式1:一般给循环条件变量赋初值,
第二步判断表达式2:如果条件为真,执行循环体,如果条件为假,不进入循环体,执行其它语句
第三步执行表达式3:改变条件变量的值
在这里插入图片描述

10.2 while和do…while语句

while(表达式)
//表达式为真,执行循环体内的语句块
//表达式为假,不进入循环体
{
    语句块;
}

//先执行一次,再来进行判断
do
{
    循环体;
}while(表达式); //此处有分号

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10.3 goto语句(不推荐使用)

con:
    语句块;
goto con;

在这里插入图片描述
在这里插入图片描述

10.4 continue和break

  1. break用于跳出一个循环体或者完全结束一个循环,不仅可以结束其所在的循环,还可结束其外层循环
    for(int i=0; i<5; i++){
        if(i==2){
            break;
        }
        cout<<i<<" ";
    }

在这里插入图片描述
2. continue语句的作用是跳过本次循环体中剩下尚未执行的语句,立即进行下一次的循环条件判定,可以理解为只是中止(跳过)本次循环,接着开始下一次循环

    for(int i=0; i<5; i++){
        if(i==2){
            continue;
        }
        cout<<i<<" ";
    }

在这里插入图片描述

10.5 死循环

for(;;)
{ }
while(1)
{
}
do{
}while(1);
loop:
     goto loop;// 死循环,goto条件判断语句使用

10.6 案例

  1. 输出如下图形(菱形),输出的行数,从终端获取
      *
    * * *
  * * * * *
* * * * * * *
  * * * * * 
    * * *  
      *
int main(int argc, char *argv[])
{
    int number;
    cout<<"please input a number"<<endl;
    cin>>number;
    int &n=number;

    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n-i-1;j++)
        {
            cout<<" ";
        }
        for(int j=0;j<2*i+1;j++)
        {
            cout<<"*";
        }
        cout<<endl;
    }

    for(int i=0;i<n-1;i++)
    {
        for(int j=0;j<i+1;j++)
        {
            cout<<" ";
        }
        for(int j=0;j<2*(n-1)-2*i-1;j++)
        {
            cout<<"*";
        }
        cout<<endl;
    }    

    return 0;
}

在这里插入图片描述

  1. 打印九九乘法表
void multiplication_table()
{
    for(int i=1;i<=9;i++)
    {
        for(int j=1;j<=i;j++)
        {
            cout<<i<<"*"<<j<<"="<<i*j<<" ";
        }
        cout<<endl;
    }
}

int main(int argc, char *argv[])
{
    multiplication_table();
    return 0;
}

在这里插入图片描述

11.数组

11.1 一维数组

数据类型 数组名[数组元素个数];

int a[10]; //a是数组名,a数组有10个int型的元素
int arr[5]={1,2,3,4,5}; //arr数组有5个int元素,分别是1,2,3,4,5

数组就是一个容器,开辟在栈区,数组存放的是同种类型的数据
在这里插入图片描述

11.2 二维数组

数据类型 数组名[数组元素个数][数组元素个数];
int b[M][N];M可以省略,N不能省略
int a[2][3](√),int b[][N](√),int c[M][](×)
用20-30的随机数给二维数组赋值:

int main(int argc, char *argv[])
{
    //设置随机数种子
    srand(time(NULL));
    //定义二维数组
    int a[2][3];
    //用随机数给二维数组赋值
    for(int i=0;i<2;i++)
    {
        for(int j=0;j<3;j++)
        {
            //取值20~30,给二维数组元素赋值
            a[i][j]=20+rand()%11;
        }
    }
    //输出二维数组元素的值
    for(int i=0;i<2;i++)
    {
        for(int j=0;j<3;j++)
        {
            cout<<a[i][j]<<" ";
        }
    }
    cout<<endl;
    return 0;
}

在这里插入图片描述

11.3 案例

一维数组——题目:输入5个数,求5个数中的最大值和最小值

int main(int argc, char *argv[])
{
    int arr[5];
    cout<<"please input array"<<endl;
    for(int i=0;i<5;i++)
    {
        cin>>arr[i];
    }
    sort(arr,arr+4);
    cout<<"arr:";
    for(int i=0;i<5;i++)
    {
        cout<<arr[i]<<" ";
    }
    cout<<endl;
    cout<<"min="<<arr[0]<<" ,max="<<arr[4]<<endl;

    int arr2[5]={10,20,30,40,50};
    int min2=arr2[0],max2=arr2[0];
    for(int i=0;i<5;i++)
    {
        if(min2>arr2[i])
        {
            min2=arr2[i];
        }
        if(max2<arr2[i])
        {
            max2=arr2[i];
        }
    }
    cout<<"min2="<<min2<<" ,max2="<<max2<<endl;
    find_max_min(*arr2);
    
    return 0;
}

二维数组——题目:有5个学生,每个学生3科成绩,成绩可随机生成
1、求每个学生的平均成绩,保存到数组中
float stu_avg[5];
2、求每科成绩的平均成绩,保存到数组中
float avg[3];

const int NUM_STUDENTS = 5;
const int NUM_SUBJECTS = 3;

void generateRandomScores(int scores[NUM_STUDENTS][NUM_SUBJECTS]) {
    for(int i = 0; i < NUM_STUDENTS; i++) {
        for(int j = 0; j < NUM_SUBJECTS; j++) {
            scores[i][j] = rand() % 101; // 生成0到100的随机数
            cout << scores[i][j] << "  ";
        }
        cout << endl;
    }
}

void calculateStudentAverages(int scores[NUM_STUDENTS][NUM_SUBJECTS]) {
    double avg;
    for(int i = 0; i < NUM_STUDENTS; i++) {
        avg = 0.0;
        for(int j = 0; j < NUM_SUBJECTS; j++) {
            avg += scores[i][j];
        }
        avg /= NUM_SUBJECTS;
        cout << "stu" << i + 1 << "_avg_score: " << avg << "  ";
    }
    cout << endl;
}

void calculateSubjectAverages(int scores[NUM_STUDENTS][NUM_SUBJECTS]) {
    double avg;
    for(int i = 0; i < NUM_SUBJECTS; i++) {
        avg = 0.0;
        for(int j = 0; j < NUM_STUDENTS; j++) {
            avg += scores[j][i];
        }
        avg /= NUM_STUDENTS;
        cout << "score" << i + 1 << "_avg_score: " << avg << "  ";
    }
    cout << endl;
}

int main() {
    int stu_score[NUM_STUDENTS][NUM_SUBJECTS];

    srand(time(NULL)); // 设置随机数种子

    cout << "Generating random scores:" << endl;
    generateRandomScores(stu_score);

    cout << "Calculating student averages:" << endl;
    calculateStudentAverages(stu_score);

    cout << "Calculating subject averages:" << endl;
    calculateSubjectAverages(stu_score);

    return 0;
}

12.函数

12.1 函数定义

返回值类型 函数名(参数1,参数2,参数3…)
返回值类型 函数名(无参)
在这里插入图片描述
函数调用:
函数体内的是局部变量,作用域只在当前函数
在这里插入图片描述
注意:如果函数是有参,调用的是无参,编译器会报错,要重新定义一个无参函数实现函数重载
在这里插入图片描述
在这里插入图片描述

12.2 案例

  1. 从终端输入两个数,实现两个函数
    函数1:将这两个数相减,输出减的结果
    函数2:得到这两个数的最大值,返回且输出
int sub(int a,int b)
{
    return a-b;
}

int max(int a,int b)
{
    if(a>b)
    {
        return a;
    }
    return b;
}
int main(int argc, char *argv[])
{
    int a,b;
    //函数的调用:函数名(参数)
    cout<<"pls input a,b"<<endl;
    //输入a和b的值
    cin>>a>>b;
    //a和b是实参
    cout<<a<<"-"<<b<<"="<<sub(a,b)<<endl;
    //函数调用
    int max1;
    max1=max(a,b);//此处变量名和函数名同名会冲突
    cout<<"max="<<max1<<endl;

    return 0;
}
  1. 实现一个函数,可以交换两个变量的值
void swap(int *a,int *b)
{
    int temp=*a;
    *a=*b;
    *b=temp;
}
void swap(int &a,int &b)
{
    int temp=a;
    a=b;
    b=temp;
}
void swap(int& a, int& b) 
{
    if (a != b) {
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
    }
}
int main(int argc, char *argv[])
{
    int num1=10,num2=20;
    cout<<"before swap :"<<"num1 = "<<num1<<", num2 = "<<num2<<endl;
    swap(&num1,&num2);
    cout<<"after swap :"<<"num1 = "<<num1<<", num2 = "<<num2<<endl;     

    int num3=100,num4=200;
    cout<<"before swap :"<<"num3 = "<<num3<<", num4 = "<<num4<<endl;
    swap1(num3,num4);
    cout<<"after swap :"<<"num3 = "<<num3<<", num4 = "<<num4<<endl;     
    return 0;
}
  1. 实现一个函数,可将输入的字符串中的大小写字母保存并输出,并且统计大写字母个数,小写字母个数,其他字符个数
    eg: 输入字符串:“13243432safsfadfadAAAAAAA%##*&^%%”
    输出:safsfadfadAAAAAAA
void outAlphabet(char str[])
{
    char CH[100],ch[100],others[100]; 
    int CH_count = 0, ch_count = 0, others_count = 0;
    for (int i = 0; str[i] != '\0'; i++)
    {
        
        if (str[i]>='A'&&str[i]<='Z')
        {
            CH[CH_count]=str[i];
          //  cout << str[i] << " ";
            CH_count++;
        }
        else if (str[i]>='a'&&str[i]<='z')
        {
            ch[ch_count]=str[i];
          //  cout << str[i] << " ";
            ch_count++;
        }
        else
        {
            others_count++;
        }
    }
    CH[CH_count]='\0';
    ch[ch_count]='\0';

    cout << CH << ch <<endl;
    cout << "Total uppercase letters: " << CH_count << endl;
    cout << "Total lowercase letters: " << ch_count << endl;
    cout << "Total other characters: " << others_count << endl;
}

int main()
{
    char myStr[100];
    cout << "Enter a string: "<<endl;;
    cin>>myStr;
    cout<<"letters is : "<<endl;
    outAlphabet(myStr);
    return 0;
}

  1. 实现一个函数,将输入的字符串中的大小写字母互转,且将字符串的小写字母,大写字母,数字分别取出,用数组保存输出。
    eg: 输入字符串:“132434353535AAAAABBBBB****abcbdgd887872&&%%%”
    num[]={“132434353535887872”};
    CH[]={“aaaaabbbbb”}
    ch[]={“ABCBDGD”};
void reverse(char str[])
{
    int CH_count = 0, ch_count = 0, num_count = 0;
    char CH[100], ch[100], num[100];
    for (int i = 0; str[i] != '\0'; i++)
    {
        if (str[i] >= 'A' && str[i] <= 'Z')
        {
            CH[CH_count] = str[i] + ('a' - 'A');
            CH_count++;
        }
        else if (str[i] >= 'a' && str[i] <= 'z')
        {
            ch[ch_count] = str[i] - ('a' - 'A');
            ch_count++;
        }
        else
        {
            num[num_count] = str[i];
            num_count++;
        }
    }

    cout << "CH to ch is: ";
    for (int i = 0; i < CH_count; i++)
    {
        cout << CH[i] << " ";
    }
    cout << endl;

    cout << "ch to CH is: ";
    for (int i = 0; i < ch_count; i++)
    {
        cout << ch[i] << " ";
    }
    cout << endl;

    cout << "num is: ";
    for (int i = 0; i < num_count; i++)
    {
        cout << num[i] << " ";
    }
    cout << endl;
}

int main(int argc, char *argv[])
{
    char myStr[100];
    cout << "Please enter a string:" << endl;
    cin>>myStr;
    cout << "Output is:" << endl;
    reverse(myStr);
    return 0;
}

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值