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

BC7 缩短二进制

在这里插入图片描述

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

BC64 K形图案

C语言初阶 牛客网刷题笔记(将持续更新..)_第1张图片

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

C语言初阶 牛客网刷题笔记(将持续更新..)_第2张图片

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

    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形图案

C语言初阶 牛客网刷题笔记(将持续更新..)_第3张图片

C语言初阶 牛客网刷题笔记(将持续更新..)_第4张图片

打印 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状态码

C语言初阶 牛客网刷题笔记(将持续更新..)_第5张图片

1. if 条件判断语句

2. switch 语句


BC77 有序序列插入一个数

C语言初阶 牛客网刷题笔记(将持续更新..)_第6张图片
C语言初阶 牛客网刷题笔记(将持续更新..)_第7张图片

	#include
	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 序列中整数去重

C语言初阶 牛客网刷题笔记(将持续更新..)_第8张图片

两个思路:

#include
#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 小乐乐走台阶

C语言初阶 牛客网刷题笔记(将持续更新..)_第9张图片

//分析1,2阶台阶的走法
//1:(1) —— 1
//2:(1,1) , (2) —— 2

//n阶台阶
//第一步可以选择走1阶或2阶,则剩下n-1 或 n-2 阶
//eg: 3阶
//走1阶,剩2阶
//走2阶,剩1阶

本质上是 斐波那契数列 的变形;

#include

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 小乐乐与序列

C语言初阶 牛客网刷题笔记(将持续更新..)_第10张图片

题中隐藏一个重要信息:

在这里插入图片描述

	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;
	}

你可能感兴趣的:(C语言初阶,c语言,算法,开发语言)