题目描述:⑴一行输出一个实数;⑵一行内输出两个实数;⑶一行内输出三个实数。实数用"6.2f"格式输出。


  输入格式: 一个实数,float范围


  输出格式:输出3行,第一行打印一遍输入的数,第二行打印两遍,第三行打印三遍。 第二行和第三行,用空格分隔同一行的数字。 实数用"6.2f"格式输出。


注意事项:


  1.题目要求的变量类型


  2.实数的输出格式


  3.输出时,实数之间用空格隔开


解题思路:


  1.定义一个float类型实数


  拓展:float是浮点数类型,表示单精度浮点数。float类型通常使用32位(4个字节)内存空间来存储,1位表示符号,8位表示指数,23位表示尾    数。单精度(float)相对于双精度(double)浮点数表示的数值范围较小。


  2.输出三行,每行需要用“\n”转义字符用于换行


  3.第一行一个实数,第二行两个实数,第三行三个实数,可以发现每行输出的实数数量递增并且跟行数一致


方法一:嵌套循环


  外层循环可以控制内层循环循环的次数


  内层循环可以控制其内容执行的次数


(1).第一次输出一个数:当外层循环开始第一次循环时,内层循环的限制条件限制其执行一次


(2).第一次输出两个数:当外层循环开始第二次循环时,内层循环的限制条件限制其只执行两次


  ...


  内层循环循环结束时,就完成了一行的输出,这时就需要换行,保证内层循环再次进行时,输出的内容在下一行。


  外层循环完成三次循环后,同时也意味着三行内容输出完毕。




方法二:


  1.直接使用单个printf语句进行输出


  2.使用三个printf语句进行输出


----------------------------------------------------------------------------------------------------------


拓展:


  方法一比方法二(单个printf语句)效率高


  方法一比方法二(多个printf语句)效率低


  效率相差不大,时间复杂度都是O(1)


1.方法一比方法二(单个printf语句)效率高:


  单个printf语句进行输出的缺点:


  (1).需要在一次函数调用中完成多个实数的输出


  (2).单个printf语句输出多个实数,需要对每个实数进行格式化,一定的时间开销


  (3).将多个实数作为参数传递给printf函数,涉及到参数传递机制和内存访问的效率


  (4).进行了多次IO操作耗费一定时间


  循环嵌套优势:


  (1).内层循环中调用printf语句次数不固定,随着外层循环的变化而变化,不需要在一次调用中完成全部输出


  (2).可读性和可维护性,直观地表达代码的逻辑,可以通过修改循环条件或者增加循环嵌套来实现不同的输出格式


2.方法一比方法二(多个printf语句)效率低:


  多个printf语句进行输出的优点:


  每个printf函数只进行一次格式化和写入操作,降低了单个printf语句带来的时间开销


  循环嵌套缺点:


  跟单个printf语句比有优势,但是循环中需要进行条件判断、变量递增等操作,这些操作会增加程序的运行时间


总结:


   就本题来说,三种写法,时间复杂度相差不大,都是O(1),选择更易读、更易理解,易于维护、标准化的写法的代码。


参考代码:

一 循环嵌套

#include<stdio.h>
int main()
{
    float a;
    scanf("%f",&a);
    for(int i=1;i<=3;i++)
    {
        for(int j=1;j<=i;j++)
        {
            printf("%6.2f",a);
            if(j!=i)printf(" ");
        }
        printf("\n");
    }  
    return 0;
}
#include<stdio.h>
int main()
{
    float a;
    scanf("%f",&a);
    printf("%6.2f\n%6.2f %6.2f\n%6.2f %6.2f %6.2f", x, x, x, x, x, x);
    return 0;
}
#include <stdio.h>
int main() {
    float x;
    scanf("%f", &x);
    printf("%6.2f\n", x);
    printf("%6.2f %6.2f\n", x, x);
    printf("%6.2f %6.2f %6.2f\n", x, x, x);
    return 0;
}

有点啰嗦,希望对你有帮助~

点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论