蓝桥杯基础练习超全习题题解——BASIC-1~9题(闰年判断、01字串*、字母图形*、数列特征、查找整数、杨辉三角形、特殊的数字、回文数、特殊回文数)

每日刷题(二十九)

BASIC-1、闰年判断

在这里插入图片描述
在这里插入图片描述

#include<stdio.h>

void f(int n)
{
	if(n % 4 == 0 && n % 100 != 0)
		printf("yes\n");
	else if(n % 400 == 0)
		printf("yes\n");
	else
		printf("no\n");
}

int main()
{
	int n;
	scanf("%d", &n);
	f(n);
	return 0;
}

这题太简单,就不具体讲解了

BASIC-2、01字串*

在这里插入图片描述
在这里插入图片描述
这题看起来很简单,实质上还是有一点难度的,这里我提供两种解法

第一种方案,也是大多数人都能想到的,不难发现01字串的大小排列可以联想到二进制数,逢二进一,就是这样的本质

#include<stdio.h>

int main()
{
	int a, b, c, d, e;
	for(a = 0; a < 2; a++)
		for(b = 0; b < 2; b++)
			for(c = 0; c < 2; c++)
				for(d = 0; d < 2; d++)
					for(e = 0; e < 2; e++)
						printf("%d%d%d%d%d\n", a, b, c, d, e);
	return 0;
}

第二种方案,比较难想出来,除非你经常做题

#include<stdio.h>
 
int main()
{
    int arr[5] = { 0 };
    int k;
    int n, j, i;
    for(n = 0; n < 32; n++)
    {
        k = n;
        for(i = 0; i < 5; i++)
        {
            if (k % 2)
                arr[i] = 1;
            else
                arr[i] = 0;
            k = k / 2;
        }
        for(j = 4; j >= 0; j--)
        {
            printf("%d", arr[j]);
        }
        printf("\n");
    }
 
    return 0;
}

在这里插入图片描述

BASIC-3、字母图形*

在这里插入图片描述
在这里插入图片描述
经过观察,可以发现,A一直处于对角线上,而其他沿着A延伸的字母都是越来越大,它们都关于A这条对角线对称,随着行数的增加,同一列的元素也会慢慢变大,说明行与列的绝对值和元素所在位置的值有关。详细C代码如下:

#include<stdio.h>
#include<math.h>

int main()
{
	int n, m, i, j;
	scanf("%d %d", &n, &m);
	char a[n][m];

	for(i = 0; i < n; i++)
	{
		for(j = 0; j < m; j++)
		{
			printf("%c", 65 + abs(j - i));
		}
		printf("\n");
	}
	return 0;
}

BASIC-4、数列特征

在这里插入图片描述
在这里插入图片描述
这题也不难,这里直接上代码,你能看懂的

#include<stdio.h>
int n;

void f(int a[])
{
	int i, j;
	int tmp;
	int k;
	for(i = 0; i < n - 1; i++)
	{
		k = i;
		for(j = i + 1; j < n; j++)
		{
			if(a[k] > a[j])
			{
				tmp = a[j];
				a[j] = a[k];
				a[k] = tmp;
			}
			
		}
	}
}


int main()
{
	scanf("%d", &n);
	int a[n];
	int i;
	int sum = 0;
	for(i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
		sum += a[i];
	}
	f(a);
	printf("%d\n%d\n%d\n", a[n - 1], a[0], sum);
	return 0;
}

BASIC-5、查找整数

在这里插入图片描述
在这里插入图片描述
因为都是基础题,代码思路清晰,这里不作讲解

#include<stdio.h>

int main()
{
	int n;
	scanf("%d", &n);
	int a[n];
	int i;
	for(i = 0; i < n; i++)
		scanf("%d", &a[i]);
	int s;
	scanf("%d", &s);
	int cnt = 1;
	for(i = 0; i < n; i++)
	{
		
		if(a[i] == s)
		{
			printf("%d\n",  cnt);
			return 0;
		}
		cnt++;
	}
	printf("-1\n");
	return 0;
}

BASIC-6、杨辉三角形

在这里插入图片描述
在这里插入图片描述

#include<stdio.h>

int main()
{
	int i, j;
	int n;
	scanf("%d", &n);
	int a[n][n];
	if(n == 1)
	{
		printf("1\n");
		return 0;
	}
		
	else
	{
		a[0][0] = 1;
		a[1][0] = 1;
		a[1][1] = 1;
		for(i = 2; i < n; i++)
		{
			for(j = 0; j <= i; j++)
			{
				if(j == 0 || j == i)
					a[i][j] = 1;
				else
				{
					a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
				}
			}
		}
	}
	for(i = 0; i < n; i++)
	{
		for(j = 0; j <= i; j++)
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}

BASIC-7、特殊的数字

在这里插入图片描述

#include<stdio.h>

int main()
{
	int i;
	int h, d, b;
	for(i = 100; i < 1000; i++)
	{
		h = i / 100;
		d = i / 10 % 10;
		b = i % 10;
		if(i == h * h * h + d * d * d + b * b * b)
			printf("%d\n", i);
	}
	return 0;
}

部分运行结果如下:
在这里插入图片描述

BASIC-8、回文数

在这里插入图片描述

#include<stdio.h>

int main()
{
	int i;
	for(i = 1001; i < 10000; i++)
	{
		int th, hu, de, bi;
		th = i / 1000;
		hu = i / 100 % 10;
		de = i / 10 % 10;
		bi = i % 10;
		if(th == bi)
			if(hu == de)
				printf("%d\n", i);
	}
	return 0;
}

部分运行结果如下:
在这里插入图片描述

BASIC-9、特殊回文数

在这里插入图片描述
在这里插入图片描述

#include<stdio.h>

int main()
{
	int n;
	scanf("%d", &n);
	int i, j, k;
	for(i = 1; i < 10; i++)			//先求五位数外层数字
	{
		for(j = 0; j < 10; j++)		//遍历第二层数字
		{
			for(k = 0; k < 10; k++)		//遍历内层数字 
			{
				int num = 0;			//正整数 
				int cnt = 0; 			//各位之和
				cnt = 2 * i + 2 * j + k;
				num = i * 10000 + i + j * 1000 + j * 10 + k * 100;
				if(cnt == n)
					printf("%d\n", num); 
			} 
		}	
	} 
	for(i = 1; i < 10; i++)
	{
		for(j = 0; j < 10; j++)
		{
			for(k = 0; k < 10; k++)
			{
				int num = 0;
				int cnt = 0;
				cnt = 2 * (i + j + k);
				num = i * 100000 + i + j * 10000 + j * 10 + k * 1000 + k * 100;
				if(cnt == n)
					printf("%d\n", num);
			}
		}
	 } 
	return 0;
}

如果喜欢我的文章,请记得三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持,下期更精彩!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值