C语言编程基础入门经典100题(1-10)-简书_c语言简单代码

C语言编程基础入门经典100题(1-10)-简书_c语言简单代码今天我们先来讲解一道C语言的经典例题,也是从零开始系列中的一道课后练习题。请用控制台程序绘制如下图案。循环经典例题分析情况这个题目是要求打印30行"*",每行打印的个数不同

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

今天我们先来讲解一道C语言的经典例题,也是从零开始系列中的一道课后练习题。

请用控制台程序绘制如下图案。

C语言编程基础入门经典100题(1-10)-简书_c语言简单代码

 

循环经典例题

分析情况

这个题目是要求打印30行”*”,每行打印的个数不同。通过这个信息,我们应该立刻反映出运用循环来完成。那么我们想想,在循环部分我们都学到了什么。

关于循环,我首先会想到一些例题:

例题1

打印30个”*”,每个”*”占一行。

int i;for (i = 0; i < 30; i++) {    printf("*\n"); }

例题2

打印一行”*”,个数为30

int i;for (i = 0; i < 30; i++) {    printf("*"); }

这两个题目的代码只差一个\n,结果却完全不同。掌握了这两个例题,我们自然能够完成下面这个例题了。

例题3

打印一个由”*”组成的30行30列的矩阵。

int main(){    int i, j;    for (i = 0; i < 30; i++)    {        for (j = 0; j < 30; j++)        {            printf("*");        }        printf("*\n");    }    return 0; }

执行结果如下:

C语言编程基础入门经典100题(1-10)-简书_c语言简单代码

 

30*30矩阵

我们再把例3的要求改一改,要求如下

例题4

打印30行“*”。第一行打印1个“*”,第二行打印3个“*”,第三行打印5个“*”,… ,第三十行打印59个“*”。

在前面的程序中,我们用变量i控制行的循环,变量j控制列的循环。i的范围0~29,j的范围0~29。那么在例题4中,i和j有什么样的关系呢?

  • 第一行:i = 0; j循环1次

  • 第二行:i = 1; j循环3次

  • 第三行:i = 2; j循环5次

  • 第三十行:i = 29; j循环59次

于是得到这样一个关系:

第n行:i = n – 1; j循环2i + 1次

那么如何实现循环2i + 1次呢,就是让j从0到2i + 1。

按照这个思路,可以得到下面的代码:

#include <stdio.h>#define LINE 30int main(){    int i, j;    for (i = 0; i < LINE; i++)    {        for (j = 0; j < 2 * i + 1; j++)        {            printf("*");        }        printf("\n");    }    return 0; }

执行结果如下:

C语言编程基础入门经典100题(1-10)-简书_c语言简单代码

 

例题4

这里要说一个问题,其实for循环有两种常见形式:

for (i = 0; i < n; i++)

for (i = 1; i <= n; i++)

这种写法执行的次数相同,可以相互代替。大部分C语言程序员喜欢第一种方式,因为数组的下标访问是从0开始的,这样写更方便。目前大家可以选择自己喜欢的方法。

好了,回到例题中来。现在我们的代码距离目标输出已经很接近了,缺少的是在每行“*”之前需要输入不同数量的空格。我们分析i和空格数量,可以得到如下关系:

每行输出LINE – i个空格

于是,我们得到了最终的实现程序。

答案

#include <stdio.h>#define LINE 30int main(){    int i, j;    for (i = 0; i < LINE; i++)    {        for (j = 0; j < (LINE - i); j++)        {            printf(" ");        }        for (j = 0; j < 2 * i + 1; j++)        {            printf("*");        }        printf("\n");    }     return 0; }

运行一下这段代码,你会看到打印结果就是最前面的那张图。

课后练习

自己编写代码,打印出下面这张图。

C语言编程基础入门经典100题(1-10)-简书_c语言简单代码

 

菱形   更多的题型请点击这里

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167860.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • window10编译器_windows shell编程

    window10编译器_windows shell编程原文地址http://www.cctry.com/forum.php?mod=viewthread&tid=250698&extra=page%3D1&page=1&如何让我们的c++程序可以支持脚本,尤其是支持JavaScript是件很有意思的事情的,那样可以为软件的灵活性,扩展性提供可能。你可能会说用JavaScript引擎,对,JavaScript引擎有很多,有Googlev8,s

    2022年10月10日
    5
  • 【腾讯Bugly干货分享】React Native项目实战总结

    【腾讯Bugly干货分享】React Native项目实战总结

    2021年9月16日
    66
  • ES6数组常用方法总结[通俗易懂]

    ES6数组常用方法总结[通俗易懂]这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Mar

    2022年6月3日
    46
  • 安装AIC准则使用前进法后退法和逐步回归法进行变量选择的r语言代码

    安装AIC准则使用前进法后退法和逐步回归法进行变量选择的r语言代码setwd(“C:/Users/IBM/Desktop/研一课程/2.2回归分析/回归作业”) #设定当前的工作目录shuju=read.table(“shuju.txt”,header=T)shuju #读取数据#采用AIC原则自动选择模型-前进法shuju.reg1shuju.regforward2summary(shuju.regforward2)#采用A

    2022年5月23日
    62
  • activity生命周期_activity的生命周期有哪些状态

    activity生命周期_activity的生命周期有哪些状态在我的Android四大组件详解一文中已经对Activity的生命周期进行过一个比较详细的介绍。这篇文章我们再来更加深入地介绍Activity的生命周期。一、Activity的生命周期方法如下:onCreate、onStart、onRestart、onResume、onPause、onStop、onDestroy依次介绍:onCreate:表示Activity正在被创建,这是生命周

    2022年8月16日
    11
  • java运行环境_如何搭建Java运行环境?

    java运行环境_如何搭建Java运行环境?前言对于运行一个Java程序,我们首先需要有一个运行Java程序的平台程序,这个平台程序就是Java虚拟机。本篇文章将介绍如何在Windows系统上搭建一个Java程序的运行环境,主要分为两个步骤:安装JDK,配置环境变量。Windows系统Java运行环境配置下载JDK并安装首先我们需要下载java开发工具包JDK,JDK中包含了JRE(Java运行环境)和一些官方提供给我们的工具,在oracl…

    2022年7月7日
    22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号