一个实数,float范围
输出格式
输出3行,第一行打印一遍输入的数,第二行打印两遍,第三行打印三遍。 第二行和第三行,用空格分隔同一行的数字。 实数用"6.2f"格式输出。
样例输入
复制
0.618
样例输出
复制
0.62 0.62 0.62 0.62 0.62 0.6
观察输出发现·第1行输出1个,第2行输出2个,第3行输出3个:
用3X3双层for循环,局部变量i的范围都是1~3:外层表示第几行,内层表示输出了几个,
其中外层的语句是令局部变量cnt=0..有点像求质数把isPrime的布尔值初始。
..>不过这不是最好的方法,
方法1:
//实数的打印
#include<iostream>
using namespace std;
int main() {
float num;
cin >> num;
int cnt = 1; //计数仔上线 初始为1表示:第1行输出1个 第2行输出2个
for (int j = 1; j <= 3; j++) { //一共输出3次
cnt = 0;
for (int i = 1; i <= 3; i++) { //每一行输出对应的个数
if (cnt == j && cnt != 3) { //第三次不endl跳行
cout << endl;
break;
}
printf("%6.2f ", num); //专业四舍五入-留两位
++cnt; //自增1 表示本行输出1个num
}
}
return 0;
}
方法2:
有的大佬会觉得计数君cnt太麻烦了,直接用i==j判断--输出的次数就是行数不行吗?可以的
至于break和continue的区别:
break`语句用于完全终止内循环的执行并继续外层循环,
`continue`语句用于跳过本次内循环的剩余代码,直接进行下一次内循环的迭代。
;而我们判断满足后不用再在当前行输出,所以完全跳出内循环进行下次外循环
//实数的打印
#include<iostream>
#include<iomanip>
using namespace std;
int main() {
float num;
cin >> num;
for (int j = 1; j <= 3; j++) { //一共输出3次
for (int i = 1; i <= j; i++) { //每一行输出对应的个数
printf("%6.2f ", num);
if (i == j) {
cout << endl;
break;
}
}
}
return 0;
}