C++洛谷刷题总结1

题目:
输入一个不小于 100 且小于 1000,同时包括小数点后一位的一个浮点数,例如123.4,要求把这个数字翻转过来,变成4.321并输出。
解析:(以下均来自洛谷解析)
1.我们先来认识一下c++的字符串string,这个类型相当于c中char[],和char一样,string也可以用数组表示多个字符串,即string a[]。接下来看看常见的几个string类型操作:

string a;//定义一个string类字符串。

int len=a.size()//读取串a的长度,注意此时a中字符下标是从0开始的。

有了这些,我们便可以反转了!

#include//万能头文件
using namespace std;
string a;
signed main()
{
    cin>>a;
    int len=a.size();//读取长度
    for(int i=len-1;i>=0;i--)//反转
    cout<<a[i];
    return 0;
}

2.首先我们要知道格式化输入输出函数:scanf和printf。

#include //头文件
scanf("输入控制符",输入参数);
printf("输出控制符",输出参数);

而这道题用%d类型是过不了的,因为输入没有空格(亲测0分
所以:
先定义四个字符类型。

#include //万能头
using namespace std;
int main(){
    char a,b,c,d;//定义略
    scanf("%c%c%c.%c",&a,&b,&c,&d);
    printf("%c.%c%c%c",d,c,b,a);
    return 0;
}

3.首先拿到题目,第一感觉就是字符串,当然一个个读入在反过来输出也可以。

但字符串的反转操作我们可以用STL也可以直接倒序输出。

介绍一下STL里面的反转字符串函数 \color{red}\text{reverse()}reverse()
其格式是: reverse(reverse( 数组名 .begin() , 数组名 .end());
在此大呼一声:STL大法好!
你们最喜欢的代码:

#include   //文件头
using namespace std;
string a;                 //定义字符串
int main() 
{
    cin>>a;               //输入
    reverse(a.begin(),a.end());  //反转
    cout<<a;              //输出
    return 0;             //养成好习惯
}

4.定义:
我们写出如下代码:

char str[100];

这代表着你已经申请了100个下标从0开始的字符空间。

输入:
我不知道getsgets是否还活着,所以为了保险起见,我用了scanf

gets用法

gets(str + 1);

这意味着你读入了这个字符串(空格也算)。+1代表你是从第一个下标开始读的,而不是第0个。

scanf用法

scanf("%s",str + 1);

求长度
函数:strlen。 用法:

int k = strlen(str + 1);
#include 
using namespace std;

char str[100];

int main() {
    scanf("%s",str + 1);
    int len = strlen(str + 1);
    for(int i=len;i>=1;i--) {
        printf("%c",str[i]);
    }
    return 0;
} 

你可能感兴趣的:(c++,c++)