0
点赞
收藏
分享

微信扫一扫

【day3】【洛谷算法题】-B5707数字反转-刷题反思集[入门1顺序结构]

文章目录

  • ​​P5707【深基2.例7】数字反转​​
  • ​​题目描述​​
  • ​​输入格式​​
  • ​​输出格式​​
  • ​​样例​​
  • ​​样例输入​​
  • ​​样例输出​​
  • ​​我的题解​​
  • ​​结果​​
  • ​​优解1​​
  • ​​优解2​​
  • ​​优解3​​
  • ​​反思总结​​
  • ​​一、关于C++的输入输出效率问题​​
  • ​​二、关于C/C++中函数参数的传递顺序问题​​

P5707【深基2.例7】数字反转

题目描述

输入一个不小于 且小于 ,同时包括小数点后一位的一个浮点数,例如 ,要求把这个数字翻转过来,变成

输入格式

一行一个浮点数

输出格式

一行一个浮点数

样例

样例输入

123.4

样例输出

4.321

我的题解

//C语言
#include <stdio.h>

int main()
{
char arry[5];
for (int i = 0; i < 5; i++)
{
scanf("%c", &arry[i]); //将浮点数的每一位保存在字符数值中
}

for (int i = 4; i >= 0; i--) //反方向输出字符数组
{
printf("%c", arry[i]);
}

return 0;
}

结果

Accepted

优解1

//C++
#include<bits/stdc++.h>//万能头文件
using namespace std;

char a, b, c, d;
int main(){
scanf("%c%c%c.%c", &a, &b, &c, &d);
printf("%c.%c%c%c", d, c, b, a);
return 0;
}

优解2

//C++
#include<bits/stdc++.h>//万能头文件
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;
}

优解3

//C语言
#include <stdio.h>
int main()
{
printf("%c%c%c%c%c", getchar(), getchar(), getchar(), getchar(), getchar());
return 0;
}

反思总结

一、关于C++的输入输出效率问题

在C++的输入输出方法里,​​printf​​​/​​scanf​​​比​​cin​​​/​​cout​​​速度更快。如果追求速度,比如在算法比赛这种情况下最好使用printf/scanf,但是为什么​​printf​​​/​​scanf​​​比​​cin​​​/​​cout​​更快呢,我在其他大佬的文章里找到了几点解释:

● 默认情况,​​cin​​​与​​stdin​​​总是保持同步的,也就是说这两种方法可以混用,而不必担心文件指针混乱,同时​​cout​​​和​​stdout​​​也一样,两者混用不会输出顺序错乱。正因为这个兼容性的特性,导致cin有许多额外的开销,如何禁用这个特性呢?只需一个语句​​std::ios::sync_with_stdio(false);​​​ 这样就可以取消cin于​​stdin​​​的同步了,此时的​​cin​​​就与​​scanf​​差不多了。

● 另一种解释: ​​cout​​​在输出时总是要先将输出的存入缓存区。而​​printf​​​直接调用系统进行IO,它是非缓存的。所以​​cout​​​比​​printf​​慢。

而​​scanf​​​是格式化输入,​​printf​​​是格式化输出。
​​​cin​​​是输入流,​​cout​​是输出流。效率稍低,但书写简便
格式化输出效率比较高,但是写代码麻烦
所以根据自己的实际需求使用就ok了。

知识点来源于两篇大佬的文章:
​​​文章1​​​​文章2​​

二、关于C/C++中函数参数的传递顺序问题

在优解3中,我们可以看到​​printf​​​函数输出​​getchar​​​时顺序是从后往前的。
这体现了C/C++函数参数传递顺序的特点:参数传递从后往前

例如:

#include <stdio.h>

int main()
{
int aa = 10, bb = 20, cc = 30;

printf("\n %d %d %d \n", aa + bb + cc, (bb = bb * 2 + cc), (cc = cc * 2));

return 0;
}

运行结果:

170  100  60

这个例子就体现出了C/C++中函数的参数是从后往前传递的

【day3】【洛谷算法题】-B5707数字反转-刷题反思集[入门1顺序结构]_#include_05


举报

相关推荐

0 条评论