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;
	}
  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值