爱编程的呆毛


私信TA

用户名:dotcpp0652170

访问量:75

签 名:

如有裨益,吾之幸也。

等  级
排  名 5721
经  验 1448
参赛次数 0
文章发表 2
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

慢慢亦漫漫

TA的其他文章

题目描述:⑴一行输出一个实数;⑵一行内输出两个实数;⑶一行内输出三个实数。实数用"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 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区