《C语言及程序设计》实践参考——输出小星星(之3)

简介: 返回:贺老师课程教学链接  项目要求要输出的星号图是:  将一个图,看作为6行,完成了第一级的分解,提到的算法框架为:i=1; While(i<=6) //需要输出6行 { 输出第i行; 换行; ++i; } 对于“输出第i行”的任务,可以进行细化:先输出若干空格(多少个空格?第1行0个,第2行1个,第3行2……第6行5个); 再输出若

返回:贺老师课程教学链接  项目要求


要输出的星号图是:


  
将一个图,看作为6行,完成了第一级的分解,提到的算法框架为:

i=1;  
While(i<=6)  //需要输出6行  
{  
  输出第i行;  
  换行;  
  ++i;  
} 

对于“输出第i行”的任务,可以进行细化:
先输出若干空格(多少个空格?第1行0个,第2行1个,第3行2……第6行5个);  
再输出若干个星号(多少星号?第一行11个,第2行9个……第6行1个)  
其实把空格数和星号数和表示行数的变量 i 挂起钩来,上面的“若干个”可以用 i 表示出来,简单地做些推算可以写出式子。
对于“输出第i行”的任务,可以进行细化:
先输出 i-1 个空格;   
再输出 2*(6-i)+1 个星号;   
于是,算法就是:
i=1;  
While(i<=6)  //需要输出6行  
{  
  //输出第i行  
  先输出 i-1 个空格;   
  再输出 2*(6-i)+1 个星号;   
  换行;  
  ++i;  
}  
将输出若干个空格/星号等写成代码,得到了下面的代码
//参考解答一  
#include <stdio.h>  
int main( )  
{  
    int i,j;  
    i=1;  
    while(i<=6)  //需要输出6行  
    {  
        //输出第i行  
        for(j=1; j<=i-1; ++j)  
            printf(" ");;  
        for(j=1; j<=2*(6-i)+1; ++j)  
            printf("*");;  
        printf("\n");  
        ++i;  
    }  
    return 0;  
}  

下面给出程序的另一种写法,其中引入了两个变化:(1)三角的行数可以由变量n控制;(2)最外层控制输出n行的循环改为了for循环,实际上,内层的循环用while也无不可。
//参考解答二  
#include <stdio.h>  
int main( )  
{  
    int i,j,n=15; //用n来灵活对待可能的行数  
    for(i=1;i<=n;++i)  //将上一种解法中的while循环改造为for循环  
    {  
        //输出第i行  
        for(j=1; j<=i-1; ++j) //内层的这个for循环可以写作while循环  
            printf(" ");;  
        for(j=1; j<=2*(n-i)+1; ++j) //这儿也可以用其他循环,可尝试改造  
            printf("*");;  
        printf("\n");  
    }  
    return 0;  
}  

下面的程序采用的是让控制循环的变量由大变小(与三角上大下小呼应)的思路,相应地,只需要改变控制空格数和星号数的式子即可
//参考解答三  
#include <stdio.h>  
int main( )  
{  
    int i,j,n=6;   
    for(i=n;i>=1;--i) //i由大变小  
    {  
        //输出第i行  
        for(j=1; j<=n-i; ++j) //关键:输出的是n-i个空格  
            printf(" ");;  
        for(j=1; j<=2*i-1; ++j) //关键:输出的是2*i-1个星号  
            printf("*");;  
        printf("\n");  
    }  
    return 0;  
}  

其他的星号图,思路类似。
目录
相关文章
|
15天前
|
存储 算法 C语言
通义灵码在考研C语言和数据结构中的应用实践 1-5
通义灵码在考研C语言和数据结构中的应用实践,体验通义灵码的强大思路。《趣学C语言和数据结构100例》精选了五个经典问题及其解决方案,包括求最大公约数和最小公倍数、统计字符类型、求特殊数列和、计算阶乘和双阶乘、以及求斐波那契数列的前20项和。通过这些实例,帮助读者掌握C语言的基本语法和常用算法,提升编程能力。
|
27天前
|
C语言 定位技术 API
【C语言】实践:贪吃蛇小游戏(附源码)(二)
【C语言】实践:贪吃蛇小游戏(附源码)
【C语言】实践:贪吃蛇小游戏(附源码)(二)
|
27天前
|
C语言
【C语言】实践:贪吃蛇小游戏(附源码)(三)
【C语言】实践:贪吃蛇小游戏(附源码)
|
27天前
|
存储 API C语言
【C语言】实践:贪吃蛇小游戏(附源码)(一)
【C语言】实践:贪吃蛇小游戏(附源码)
|
1月前
|
存储 编译器 C语言
【C语言篇】数组和函数的实践:扫雷游戏(附源码)
【C语言篇】数组和函数的实践:扫雷游戏(附源码)
34 0
|
1月前
|
程序员 编译器 数据处理
【C语言】深度解析:动态内存管理的机制与实践
【C语言】深度解析:动态内存管理的机制与实践
|
2月前
|
C语言
C语言程序设计核心详解 第四章&&第五章 选择结构程序设计&&循环结构程序设计
本章节介绍了C语言中的选择结构,包括关系表达式、逻辑表达式及其运算符的优先级,并通过示例详细解释了 `if` 语句的不同形式和 `switch` 语句的使用方法。此外,还概述了循环结构,包括 `while`、`do-while` 和 `for` 循环,并解释了 `break` 和 `continue` 控制语句的功能。最后,提供了两道例题以加深理解。
|
2月前
|
存储 C语言
C语言程序设计核心详解 第十章:位运算和c语言文件操作详解_文件操作函数
本文详细介绍了C语言中的位运算和文件操作。位运算包括按位与、或、异或、取反、左移和右移等六种运算符及其复合赋值运算符,每种运算符的功能和应用场景都有具体说明。文件操作部分则涵盖了文件的概念、分类、文件类型指针、文件的打开与关闭、读写操作及当前读写位置的调整等内容,提供了丰富的示例帮助理解。通过对本文的学习,读者可以全面掌握C语言中的位运算和文件处理技术。
|
2月前
|
存储 C语言
C语言程序设计核心详解 第七章 函数和预编译命令
本章介绍C语言中的函数定义与使用,以及预编译命令。主要内容包括函数的定义格式、调用方式和示例分析。C程序结构分为`main()`单框架或多子函数框架。函数不能嵌套定义但可互相调用。变量具有类型、作用范围和存储类别三种属性,其中作用范围分为局部和全局。预编译命令包括文件包含和宏定义,宏定义分为无参和带参两种形式。此外,还介绍了变量的存储类别及其特点。通过实例详细解析了函数调用过程及宏定义的应用。
|
2月前
|
C语言
C语言程序设计核心详解 第三章:顺序结构,printf(),scanf()详解
本章介绍顺序结构的基本框架及C语言的标准输入输出。程序从`main()`开始依次执行,框架包括输入、计算和输出三部分。重点讲解了`printf()`与`scanf()`函数:`printf()`用于格式化输出,支持多种占位符;`scanf()`用于格式化输入,需注意普通字符与占位符的区别。此外还介绍了`putchar()`和`getchar()`函数,分别用于输出和接收单个字符。