C语言初阶 牛客网刷题笔记(将持续更新..)

简介: C语言初阶 牛客网刷题笔记(将持续更新..)

BC7 缩短二进制

printf 格式控制符 “%o” —— 八进制整数 、“%x” —— 十六进制整数 ;
修饰符 “#” —— 控制前导显示

BC64 K形图案

错因:把图形分成两部分,下半部分打印错误

先把下半部分作为一个完整三角形:

int n=0;
  scanf("%d",&n);
    int i=0;
    for(i=0;i<n;i++)//i=0 —— 可以打印一个完整的三角形
    {
      int j=0;
        for(j=0;j<=i;j++)
        {
          printf("* ");
    }
        printf("\n");
    }
  //将i=0 —> i=1 就可以控制从完整三角形的第二行开始打印,从而完成题目效果

BC68 X形图案

打印 n 方形的两条对角线 —— 核心思想:分析图形中元素的行列关系
int n=0;
  scanf("%d",&n);
  for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(i==j || i+j==n-1)
                printf("*");
            else
                printf(" ");
    }
        printf("\n");
  }
//行:0,1,2,... ;列:0,1,2,...
//对角线上元素 行列满足: **1. i == j ;  2. i + j == n-1**

BC74 HTTP状态码

1. if 条件判断语句
2. switch 语句

BC77 有序序列插入一个数

#include<stdio.h>
  int main()
    {
        int n=0;
        scanf("%d",&n);//有序数组元素的个数
        int arr[50]={0};
        int i=0;
        for(i=0;i<n;i++)//输入有序数组
        {
            scanf("%d",&arr[i]);
        }
        int m=0;
        scanf("%d",&m);//插入值
        for(i=n;arr[i-1]>m;i--)//将所有比m大的元素向右移一位
            arr[i]=arr[i-1];
        arr[i]=m;//插入
        for(i=0;i<n+1;i++)
            printf("%d ",arr[i]);
        return 0;
  }

BC99 序列中整数去重

两个思路:
#include<stdio.h>
#define N 1000
//1.将完整数组输入后,再进行去重
int main()
{
    int n = 0;
    scanf("%d", &n);
    int arr[N] = { 0 };
    int i = 0;
    for (i = 0; i < n; i++)
        scanf("%d", &arr[i]);
    //去重
    for (i = 0; i < n - 1; i++)
    {
        int j = 0;
        for (j = i + 1; j < n; j++)
        {
            if (arr[j] == arr[i])
                arr[j] = 0;
        }
    }
    //打印
    for (i = 0; i < n; i++)
    {
        if (arr[i])
            printf("%d ", arr[i]);
    }
    return 0;
}
//2.定义arr[N] arr2[N],
//arr中每输入一个值就与已经输入的值进行比较,没有重复则放入arr2
int main()
{
    int n = 0;
    scanf("%d", &n);
    int arr[N] = { 0 };
    int arr2[N] = { 0 };
    int i = 0;
    for (i = 0; i < n; i++)
    {
        int flag = 1;
        scanf("%d", &arr[i]);
        for (int j = 0; j < i; j++)
        {
            if (arr2[j] == arr[i])
            {
                flag = 0;
                break;
            }
        }
        if (flag == 1)
            arr2[i] = arr[i];
    }
    //打印arr2
    for (i = 0; i < n; i++)
    {
        if (arr2[i])
            printf("%d ", arr2[i]);
    }
    return 0;
}

BC117 小乐乐走台阶

//分析1,2阶台阶的走法
//1:(1) —— 1
//2:(1,1) , (2) —— 2
//n阶台阶
//第一步可以选择走1阶或2阶,则剩下n-1 或 n-2 阶
//eg: 3阶
//走1阶,剩2阶
//走2阶,剩1阶
本质上是 斐波那契数列 的变形;
#include<stdio.h>
int Fib(int n)
{
    if(n>2)
        return Fib(n-1)+Fib(n-2);
    else
        return n;
}
int main()
{
    int n=0;
    scanf("%d",&n);
    int step=Fib(n);
    printf("%d\n",step);
    return 0;
}

BC118 小乐乐与序列

题中隐藏一个重要信息:

int arr[100000]={0};
  int n=0;
  scanf("%d",&n);
  for(int i=0;i<n;i++)
    {
        int tmp=0;
        scanf("%d",&tmp);
        arr[tmp]=tmp;
  }
相关文章
|
5月前
|
C语言
【C语言刷题系列】合并两个有序数组
【C语言刷题系列】合并两个有序数组
|
3月前
|
存储 C语言
【C语言】基础刷题训练4(含全面分析和代码改进示例)
【C语言】基础刷题训练4(含全面分析和代码改进示例)
|
5月前
|
C语言
【C语言刷题系列】删除公共元素
【C语言刷题系列】删除公共元素
|
30天前
|
机器学习/深度学习 编译器 C语言
C语言刷题(中)(保姆式详解)
C语言刷题(中)(保姆式详解)
12 0
|
3月前
|
C语言
【C语言刷题训练】——第7节(含代码与分析思路)
【C语言刷题训练】——第7节(含代码与分析思路)
|
3月前
|
测试技术 C语言 C++
【C语言刷题训练——6】鹏哥C语言刷题训练营笔记,含代码讲解改进
【C语言刷题训练——6】鹏哥C语言刷题训练营笔记,含代码讲解改进
|
3月前
|
存储 C语言
【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)
【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)
|
4月前
|
编译器 C语言
【C语言初阶】指针篇—下
【C语言初阶】指针篇—下
|
4月前
|
存储 C语言
【C语言初阶】指针篇—上
【C语言初阶】指针篇—上
|
5月前
|
C语言
C语言刷题(函数)
C语言刷题(函数)