C语言刷题(4)——“C”

简介: C语言刷题(4)——“C”

各位CSDN的uu们你们好呀,今天小雅兰的内容又到了我们的复习啦,那么还是刷题噢,话不多说,让我们进入C语言的世界吧


BC55 简单计算器


BC56 线段图案


BC57 正方形图案


BC58 直角三角形图案


BC59 翻转直角三角形图案


BC60 带空格直角三角形图案


BC61 金字塔图案


BC62 翻转金字塔图案


BC63 菱形图案


BC64 K形图案


BC65 箭形图案


BC66 反斜线形图案


BC67 正斜线形图案


BC68 X形图案


BC69 空心正方形图案


BC70 空心三角形图案


题目仍然来源于牛客网

编程语言初学训练营_在线编程+题解_牛客题霸_牛客网

752bac9df8a44c389dd116c602929465.png

#include <stdio.h>
//精度尽量保持高
//这个题使用float精度不满足要求
int main()
{
  double n1 = 0.0;
  double n2 = 0.0;
  char op = 0;
  while (scanf("%lf%c%lf", &n1, &op, &n2) != EOF)
  {
    switch (op)
    {
    case '+':
      printf("%.4lf+%.4lf=%.4lf", n1, n2, n1 + n2);
      break;
    case '-':
      printf("%.4lf-%.4lf=%.4lf", n1, n2, n1 - n2);
      break;
    case '*':
      printf("%.4lf*%.4lf=%.4lf", n1, n2, n1 * n2);
      break;
    case '/':
    {
      if (n2 == 0.0)
      {
        printf("Wrong!Division by zero!\n");
      }
      else
      {
        printf("%.4lf/%.4lf=%.4lf", n1, n2, n1 / n2);
      }
      break;
    }
    default:
      printf("Invalid operation!\n");
      break;
    }
  }
  return 0;
}

1. 多组输入

2. 按照格式接收,按照要求编写代码就行

3. switch语句

0ec9ff67f7cf4940bf026f9807f58d43.png

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

1. 多组输入

2. 每次打印一个*,按照输入的个数打印后换行就行

8917365dd59d49bdb79295248bf045d1.png

#include <stdio.h>
int main() {
    int n = 0;
    while (scanf("%d", &n) != EOF)
    {
        int i = 0;
         //确定行数
        for (i = 0; i < n; i++)
        {
            int j = 0;
            //每一行的打印,打印n组*+空格
            for (j = 0; j < n; j++)
            {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}

1. 多组输入

2. 每组是由n组*+空格组成

2e094c1487b549bfa1e905585f478865.png

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

1. 多组输入

2. 每一行的输出要计算清楚

c1d668f0e0c249f6b96bacc24777c498.png

#include <stdio.h>
int main()
{
  int n = 0;
  while (scanf("%d", &n) != EOF)
  {
    int i = 0;
    for (i = n; i >= 1; i--)
    {
      int j = 0;
      for (j = i; j >= 1; j--)
      {
        //这里注意空格
        printf("* ");
      }
      printf("\n");
    }
  }
  return 0;
}

1. 多组输入

2. 每两个*中间有空格,要注意

3. 控制好一行输出的内容

d0271a7251e1425abb5a69fa106ad8f6.png

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

另一种写法:

ad7a1b90233440178f8f8ced2d319b2c.png

在红色三角范围内的每个坐标上,横纵坐标之和小于n-1。

#include <stdio.h>
int main()
{
  int n = 0;
  while (scanf("%d", &n) != EOF)
  {
    int i = 0;
    int j = 0;
    //行数
    for (i = 0; i < n; i++)
    {
      //一行
      for (j = 0; j < n; j++)
      {
        //行和列的和
        //这里可以把行数和列数标出来就能看明白
        if (i + j < n - 1)
        {
          printf("  ");
        }
        else
        {
          printf("* ");
        }
      }
      printf("\n");
    }
  }
  return 0;
}

9c23e69ec96f4861a9eebe4ddbdf89fb.png

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

1. 多组输入

2. 每一行的前边应该是空格,后边是*+空格,控制好个数就行

e6972a191f6849f3818b67a980fe093b.png

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

1. 多组输入

2. 控制好行数,控制好每一行前面的空格数07e0d93f6d2a459580cf40d57261baac.png

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

1. 首先把菱形的打印分为上下2个部分

2. 上下分别控制好行数和空格的个数

3. 多组输入

1f68a092b74a44f0beec4d164bb8f966.png

#include <stdio.h>
//这个题好坑
int main()
{
  int n = 0;
  //如果输入的是n,其实每行打印n+1组字符(*和空格)
  while (scanf("%d", &n) != EOF)
  {
    int i = 0;
    for (i = n; i >= 0; i--)
    {
      int j = 0;
      for (j = 0; j <= i; j++)
      {
        printf("* ");
      }
      //*的后面还有空格-这个比较坑
      for (j = i; j < n; j++)
      {
        printf(" ");
      }
      printf("\n");
    }
    for (i = 1; i <= n; i++)
    {
      int j = 0;
      for (j = 0; j <= i; j++)
      {
        printf("* ");
      }
      //*的后边还有空格-这个比较坑
      for (j = i; j < n; j++)
      {
        printf(" ");
      }
      printf("\n");
    }
  }
  return 0;
}

1. 多行输入

2. 图形的打印分为上下2个部分

3. 每一行的打印完,后边还有空格,可能牛客网的题目处理不严谨,在题目中也没体现,怎么都做不出来,不过选中输出样例,会发现后边有空格。

3b4ba3819c154690b8510b94d3576f14.png

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

1. 多组输入

2. 图形分为上下2个部分打印

3. 每一行前面是空格,后边是*(前面2个空格为1组)

b5f71700175842ff8fa4f4a0099a7a7c.png

#include <stdio.h>
//方法1-传统求解方式
int main()
{
  int n = 0;
  while(scanf("%d",&n) !=EOF)
  {
    int i = 0;
    for(i=0;i<n;i++)
    {
      //空格
      int j = 0;
      for(j=0;j<i;j++)
      {
        printf(" ");
      }
      //*
            printf("*");
      //注意*后边的空格
            for(j=i+1;j<n;j++)
      {
        printf(" ");
      }
      printf("\n");
    }
  }
  return 0;
}

另一种方法:

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

ab661445e10948c4a3513b15d246b096.png

1. 多组输入

2. 控制好每行的打印,前面是空格,后边是*

3. *的后边还有空格,一行要打印够n和字符的

4. 方法2找出打印*的行号和列号的规律是 i==j

68421abe83744f4f8bdd169021f3ba02.png

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

另一种方法:

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

1. 多组输入

2. 控制好每行的打印,前面是空格,后边是*

3. *的后边还有空格,一行要打印够n和字符的

4. 方法2找出打印*的行号和列好的规律是i+j == n-1

93786f4ac8f44bbfa5ab9766a853dd68.png

#include <stdio.h>
int main()
{
  int n = 0;
  while (scanf("%d", &n) != EOF)
  {
    int i = 0;
    int j = 0;
    for (i = 0; i < n; i++)
    {
      for (j = 0; j < n; j++)
      {
        if (i == j)
          printf("*");
        else if (i + j == n - 1)//因为行和列是从0开始的
          printf("*");
        else
          printf(" ");
      }
      printf("\n");
    }
  }
  return 0;
}

1. 多组输入

2. 找出打印*的打印空格的规律,直接按照规律实现就行

42fda78914464bd2bdfac9e8d0b88d11.png

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

1. 多行输入

2. 找出打印*的规律,剩余的打印空格,直接打印就行

8189e82dadef46b494acc3fbd98522b1.png

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

1. 多组输入。

2. 找出打印*的规律,然后直接按照要求打印就行。


好啦,小雅兰今天的复习内容就到这里啦,今天做的一般都是图案题,之后还要继续加油呀!!!

197bd981436c4d008197d1373cadd901.jpg

相关文章
|
5月前
|
C语言
【C语言刷题系列】合并两个有序数组
【C语言刷题系列】合并两个有序数组
|
3月前
|
存储 C语言
【C语言】基础刷题训练4(含全面分析和代码改进示例)
【C语言】基础刷题训练4(含全面分析和代码改进示例)
|
5月前
|
C语言
【C语言刷题系列】删除公共元素
【C语言刷题系列】删除公共元素
|
5月前
|
存储 C语言
【C语言刷题系列】对数字添加逗号
【C语言刷题系列】对数字添加逗号
|
5月前
|
C语言
【C语言刷题系列】喝汽水问题
【C语言刷题系列】喝汽水问题
|
1月前
|
机器学习/深度学习 编译器 C语言
C语言刷题(中)(保姆式详解)
C语言刷题(中)(保姆式详解)
15 0
|
3月前
|
C语言
【C语言刷题训练】——第7节(含代码与分析思路)
【C语言刷题训练】——第7节(含代码与分析思路)
|
3月前
|
测试技术 C语言 C++
【C语言刷题训练——6】鹏哥C语言刷题训练营笔记,含代码讲解改进
【C语言刷题训练——6】鹏哥C语言刷题训练营笔记,含代码讲解改进
|
3月前
|
存储 C语言
【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)
【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)
|
5月前
|
C语言
C语言刷题(函数)
C语言刷题(函数)