C语言刷题----循环输出图形

这篇具有很好参考价值的文章主要介绍了C语言刷题----循环输出图形。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

从12月开始,阿崽就没更新啦,阿崽刷了一波题

接下来的一段时间,准备更新我的刷题的文,有的题有不同思路,欢迎各位宝子和我一起交流

牛客网-----循环输出图形

  • BC98 线段图案
  • BC99 正方形图案
  • BC100 直角三角形图案
  • BC101 翻转直角三角形图案
  • BC102 带空格直角三角形图案
  • BC103 金字塔图案
  • BC104 翻转金字塔图案
  • BC105 菱形图案
  • BC106 K形图案
  • BC107 箭形图案
  • BC108 反斜线形图案
  • BC109 正斜线形图案
  • BC110 X形图案
  • BC111 空心正方形图案
  • BC112 空心三角形图案
  • BC113 数字三角形

BC98 线段图案

c语言用循环打印图案,c语言刷题,c语言,算法

 

分析:1.多组输入应该使用循环(即while(scanf("%d",x)!=EOF)2.输入的数字和*相对应

代码实现

#include <stdio.h>
​
int main() {
    int a;
    while (scanf("%d", &a) != EOF) {
        for (int i = 0; i < a; i++) {
            printf("*");
        }
        printf("\n");
    }
​
    return 0;
}

BC99 正方形

c语言用循环打印图案,c语言刷题,c语言,算法

 

分析:1.和BC98一样需要我们循环输入,还是使用while(scanf("%d",x)!=EOF);

2.该图像涉及行和列,所以二重循环可以解决,变量i控制行的变化,变量j控制列的变化,由于每一行结束要换行,所以我们在列的值达到我们输入的值后,输入printf("\n");

代码实现

#include <stdio.h>
int main()
{
    int x;
    while (scanf("%d", &x)!=EOF)    //连续输入
    {
        for (int i = 1; i <= x; i++)   //控制行数
        {
            for (int j = 1; j <= x; j++)  //控制列数
            {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}

BC100 直角三角形图案

c语言用循环打印图案,c语言刷题,c语言,算法

 

分析:

1.和BC99一样都涉及到行和列的变化,所以仍是使用双重循环,变量i控制行,变量j控制列。2.当i==1是只有一列,i==2时有两列,所以for循环中控制语句有j<=i,列数的变化要小于行的变化

#include <stdio.h>
​
int main() {
    int a;
    while (scanf("%d", &a) != EOF) { 
       for(int i=1;i<=a;i++){
           for(int j=1;j<=i;j++){
               printf("* ");
           }
           printf("\n");
       }
    }
    return 0;
}

BC101 翻转直角三角形图案

c语言用循环打印图案,c语言刷题,c语言,算法

 

思路一:从行的角度

分析:1.和BC99一样涉及到行和列的变化,仍是使用双重循环

2.换一种思路:我们把第一行看做是第五行,也就是第五行有五列,第一行有一列,所以i从输入的值开始减到1,而列j仍然是从1开始,只要j小于等于i就行,比如i==5,j从1到5;i==4,j从1到4;

代码实现

#include<stdio.h>
int main() {
    int a;
    scanf_s("%d", &a);
    for (int i = a; i > 0; i--) {
        for (int j = 1; j <= i; j++) {
            printf("* ");
        }
        printf("\n");
    }
    return 0;
}

思路二:从列的角度

分析:1.和BC99一样涉及到行和列的变化,仍是使用双重循环

2.与BC100不一样的:第一行的时候有5列,最后一行只有一列,所以j的一层for循环只需从(输入的值)变到1即可,并且j的值要>=i的值,而i还是从1开始到输入的值

代码实现

#include <stdio.h>
​
int main() {
    int a;
    while (scanf("%d", &a) != EOF) { 
        for(int i=1;i<=a;i++){
            for(int j=a;j>=i;j--){
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}

BC102 带空格直角三角形图案

c语言用循环打印图案,c语言刷题,c语言,算法

分析:仍是使用双重循环(以四行四列为例)

当i==1时 前三列是空格,第四列是*

当i==2时,前两列是空格,第三列往后是*

当i==3时,前一列是空格,第二列往后是*

。。。

c语言用循环打印图案,c语言刷题,c语言,算法

所以是一个三角(全是空格),一个三角(带*)

于是一个for循环用来打印空格三角,另外一个打印带*

第一列有三个空格(输入的值是4,所以空格变化范围是从1到4-1)后面的*就是从1开始,小于等于输入的值即可

#include <stdio.h>
​
int main() {
    int a;
    while (scanf("%d", &a) != EOF) {
        for (int i = 1; i <= a; i++) {
            for (int j = a - 1; j >= i; j--) {
                printf("  ");
            }
            for (int h = 1; h <= i; h++) {
                printf("* ");
            }
            printf("\n");
        }
​
    }
    return 0;
}

BC103 金字塔图案

c语言用循环打印图案,c语言刷题,c语言,算法

 

分析:以输入4为例

c语言用循环打印图案,c语言刷题,c语言,算法

 

当你把这两个完全不同的图案放到一起的时候,可能还有点错觉,只需要第二个图的代码在输出*后面加个空格就是第一个图

代码实现:

#include <stdio.h>
​
int main() {
    int a;
    while(scanf("%d",&a)!=EOF){
        for (int i = 1; i <= a; i++) {
            for (int j = a; j > i; j--) {
                printf(" ");
            }
            for(int h=1;h<=i;h++){
                printf("* ");
            }
            printf("\n");
        }
       
    }
    return 0;
}

BC104翻转金字塔图案

c语言用循环打印图案,c语言刷题,c语言,算法

 

c语言用循环打印图案,c语言刷题,c语言,算法                          c语言用循环打印图案,c语言刷题,c语言,算法   

分析:只需要第二个图中*后面加个空格即可

思路一:从行出发

i==1,j==5;空格:0个

i==2,j==4;空格:1个

i==3,j==3;空格:2个

i==4;j==2;空格:3个

i==5,j==1;空格:4个

代码实现

#include<stdio.h>
int main() {
    int a;
    scanf("%d", &a);
    for (int i = 1; i <= a; i++) {
        for (int h = 1; h <= i-1; h++) {
            printf(" ");
        }
        for (int j = a; j >=i; j--) {
            printf("* ");
        }
        
        printf("\n");
    }
}

思路二:从列出发

分析:把第一行看成第五行

即i==5;j==5;空格数为0

i.....

i==1;j==5;空格数为4

代码实现:

#include <stdio.h>
​
int main() {
    int a;
    while (scanf("%d", &a) != EOF) {
        for (int i = a; i >0; i--) {
            for (int j = a - 1; j >=i; j--) {
                printf(" ");
            }
            for (int h = 1; h <= i; h++) {
                printf("* ");
            }
            printf("\n");
        }
​
    }
    return 0;
}

BC105 菱形图案

c语言用循环打印图案,c语言刷题,c语言,算法

 

分析:图形由两部分组成:上半部分是金字塔图案,下半部分是翻转金字塔图案

即就是BC103和BC104的结合,唯独有一点不同就是下半部分要比输入的值少一层

代码实现

#include <stdio.h>
​
int main() {
    int a;
    while (scanf("%d", &a) != EOF) {
        for (int i = 1; i <= a+1; i++) {
            for (int j = a+1; j > i; j--) {
                printf(" ");
            }
            for (int h = 1; h <= i; h++) {
                printf("* ");
            }
            printf("\n");
        }
        for (int i = 1; i <= a; i++) {
            for (int j = 1; j <=i; j++) {
                printf(" ");
            }
            for (int h = a; h >= i; h--) {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}

同理,这里的代码也可以用上面提到的两种思路来实现

BC106 K形图案

c语言用循环打印图案,c语言刷题,c语言,算法

 

分析:该图形由两部分组成,一个是直角三角形图案另外一个是翻转直角三角形,但是:上半部分要比输入的值多一层,下半部分没有第一层;

代码实现

#include <stdio.h>
​
int main() {
    int a;
    while(scanf("%d", &a)!=EOF){
    for (int i = a + 1; i >= 1; i--) {
        for (int j = 1; j <= i; j++) {
            printf("* ");
             
        }
        printf("\n");
       
    }
    for (int i = 2; i <= a + 1; i++) {
        for (int j = 1; j <= i; j++) {
                printf("* ");
         
        }
        printf("\n");
    }}
    return 0;
}

当然也可以使用我们上面说的行和列两种不同的思路来实现

BC107 箭形图案

c语言用循环打印图案,c语言刷题,c语言,算法

 

分析:当我们把这个图案加一个空格后就变成了

c语言用循环打印图案,c语言刷题,c语言,算法

 

这样我们就有了这个题的思路了

将图案分成两部分,一个是我们旋转我们的直角三角形图案

另外一个是我们旋转我们的翻转直角三角形图案

代码实现

#include<stdio.h>
int main()
{
    int num;
    int i,j,k;
    while(scanf("%d",&num)!=EOF)
        //将火箭图案从中间分开 上部分一个大循环 下部分一个循环
    {
        for(i=0;i<=num;i++)//上部分循环从此开始  此处确定了上部分循环的行数
        {
            for(j=0;j<num-i;j++)//此处为先开始打印空格
            {
                printf("  ");
            }
            for(k=0;k<=i;k++)//此处打印图案*
            {
                printf("*");
            }
            printf("\n");//至此一次大循环完成 打印了一行的图形 在此换行
        }
        for(i=0;i<num;i++)
        {
            for(j=0;j<=i;j++)
            {
                printf("  ");
            }
            for(k=0;k<num-i;k++)
            {
                printf("*");
            }
            printf("\n");
        }
    }
    return 0;
}
​

BC108 反斜线形图案

c语言用循环打印图案,c语言刷题,c语言,算法

 

分析:

c语言用循环打印图案,c语言刷题,c语言,算法

 

以4行4列为例:我们发现*所在的行和列都相等;

由此得出本题

代码实现:

#include<stdio.h>
int main() {
    int a;
    while(scanf("%d", &a)!=EOF){
    for (int i = 1; i <= a; i++) {
        for (int j = 1; j <=i; j++) {
            if (i == j) {
                printf("*");
            }
            else {
                printf(" ");
            }
        }
        printf("\n");
    }
    }
    return 0;
}

BC109 正斜线形图案

c语言用循环打印图案,c语言刷题,c语言,算法

 

分析:

c语言用循环打印图案,c语言刷题,c语言,算法

 

由图得出:带*的行和列加起来都是4(输入的值)+1

代码实现

#include<stdio.h>
int main()
{
    int ch = 0;
    while(scanf("%d", &ch)!=EOF){
    for (int i = 1; i <= ch; i++) {
        for (int j = 1; j <=ch; j++) {
            if (i + j == ch+1) {
                printf("*");
            }
            else {
                printf(" ");
            }
        }
            printf("\n");
    }
    }
    return 0;
}

BC110 x形图案

c语言用循环打印图案,c语言刷题,c语言,算法

 

分析:c语言用循环打印图案,c语言刷题,c语言,算法

 

该图由反斜线形和正斜线形图案构成

条件为行数等于列数,或者行数加列数=输入数+1;

代码实现

#include <stdio.h>
​
int main() {
    int a;
    while (scanf("%d", &a) != EOF) { 
        for(int i=1;i<=a;i++){
            for(int j=a;j>=1;j--){
                if((i+j==a+1)||(i==j)){
                    printf("*");
                }else{
                    printf(" ");
                }
            }
            printf("\n");
        }
       
    }
    return 0;
}

BC111 空心正方形图案

c语言用循环打印图案,c语言刷题,c语言,算法

 

分析:

c语言用循环打印图案,c语言刷题,c语言,算法

 

以4*4为例 ,先看第一行和最后一行是全输出,中间两行第一列和最后一列需要输出 *,由此得出代码

代码实现

#include <stdio.h>
int main()
{
  int n = 0;
  while(scanf("%d", &n) != EOF)
  {
      for(int i=0; i<n; i++)  
      {
         for(int j=0; j<n; j++)
         {
            if(i==0||i==n-1||j==0||j==n-1)
                 printf("* ");
             else
                 printf("  ");
         }
         printf("\n"); 
      }
  }
}
​
​

BC112 空心三角形图案

c语言用循环打印图案,c语言刷题,c语言,算法

分析

c语言用循环打印图案,c语言刷题,c语言,算法

以4*4为例,先看前三行:第一列是全打印,后面两列 *所在位置的行和列是相等的,然后再看第四行是全输出,由此得出代码

#include <stdio.h>
​
int main() {
    int a;
    while (scanf("%d", &a) != EOF) {
        for (int i = 1; i <= a; i++) {
            for (int j = 1; j <= a; j++) {
                if (j == 1 || i == j) {
                    printf("* ");
                }
                else if (i == a) {
                    printf("* ");
                }
                else {
                    printf("  ");
                }
            }
            printf("\n");
        }
    }
    return 0;
}

BC113 数字三角形

c语言用循环打印图案,c语言刷题,c语言,算法

分析:以4*4为例

i==1,j==1,数字:1

i==2,j==2,数字:1,2

。。。。

所以类似于九九乘法表,列数小于等于行数

然后打印列数即可

代码实现

#include<stdio.h>
int main() {
    int a;
    scanf_s("%d", &a);
    for (int i = 1; i <= a; i++) {
        for (int j = 1; j <= i; j++) {
            printf("%d ", j);
        }
        printf("\n");
    }
}

今天阿崽就写到这吧,以上几道题都是找规律的题,善于画图和观察就能解出来,方法还有很多,大家可以思考。剩余了一个圣诞树,我们下期再更。文章来源地址https://www.toymoban.com/news/detail-771011.html

到了这里,关于C语言刷题----循环输出图形的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言 打印图形(三角形)

    1.打印直角三角形 运行结果:   2.打印等边三角形 结果:   3.打印等腰三角形 结果如下:  

    2024年02月05日
    浏览(50)
  • Java中打印图案最常用的25个图案程序

    Java是公认的最流行的编程语言,因为它的简单性和多功能性。还可以使用它开发各种应用程序,包括Web、移动和桌面应用程序。此外,Java为开发人员提供了强大的工具来轻松高效地创建复杂的程序。Java最有前途的特性之一是它能够创建可以以特定格式打印数字的图案程序。

    2024年01月20日
    浏览(30)
  • 【C语言必刷题】1.打印1~100之间的奇数

    📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢迎各位大佬指点,相互学习进步! 使用C语言写一个程序打印1~100之间的奇数,要

    2024年02月21日
    浏览(66)
  • 用python打印出菱形图案

    你可以使用Python编写一个简单的函数来打印菱形图案。下面是一个例子,这个函数接受一个参数 n ,表示菱形的高度,然后打印出一个菱形图案: def print_diamond(n):     # 上半部分     for i in range(n):         print(\\\" \\\" * (n - i - 1) + \\\"*\\\" * (2 * i + 1))     # 下半部分     for

    2024年02月05日
    浏览(29)
  • C语言循环打印空心正方形代码实现

    该程序实现了一个循环打印空心正方形的功能。用户输入正方形的边长,然后程序使用嵌套循环逐行逐列打印正方形的图案。 注释已经对代码进行了详细解释,包括输入边长、边长验证、外层循环控制行、内层循环控制列、判断边界位置并打印相应的字符。 在边界位置,打

    2024年02月08日
    浏览(68)
  • 【C语言编程之旅 6】刷题篇-for循环

    思路: 两个循环进行控制 外层循环控制打印多少行 内部循环控制每行打印多少个表达式以及表达式内容, 比较简单,具体参考代码 思路: 采用循环的方式输入一个数组 使用max标记数组中的最大值,采用循环的方式依次获取数组中的每个元素,与max进行比较,如果arr[i]大于

    2024年01月21日
    浏览(37)
  • C语言打印输出星号三角形案例讲解

    我们先看一个星号三角形的例图: 星号三角形的特点如下 以打印输出和例图一模一样的图案为例进行代码编写。  思路分析 1)先打印输出星星前没有空格的星号三角形 。  代码如下: 代码运行结果如下:  2)在原来代码的前提下,加上控制打印输出每一行第一个星星前空

    2024年02月11日
    浏览(39)
  • 【C语言】【典例详解】【刷题】猜名次&&猜凶手【循环练习】

    目录 猜名次问题 典例题目 题目分析: 代码实现: 运行结果: 猜凶手问题  典例题目 题目分析 代码实现: 运行结果: 猜名次: 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果: A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二;

    2024年02月07日
    浏览(26)
  • Java代码输出心形图案

    初学编程的小伙伴肯定有过这样一个想法,就是我能不能利用代码来输出一个特定的图案呢?比如一个爱心?那必然是可以的,代码能实现的功能很多,这只是其中的一小小用法。以下是思路与代码。 暴力解法 : 我们可以先画出一个正方形,然后,随后我们可以在这个正方

    2024年02月02日
    浏览(33)
  • C语言刷题系列——6.(递归)实现顺序输出整数

    ) 函数printdigits应将n的每一位数字从高位到低位顺序打印出来,每位数字占一行。 输入一个数(比如12345),想要打印出每一位,可以拆解成: 先打印1,再用函数printdigits()对2345执行相同的操作 打印2,再用函数printdigits()对345执行相同的操作 打印3,再用函数printdigits()对45执

    2024年02月02日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包