蓝桥杯训练系统答案2|CSDN创作打卡

BASIC-9 特殊的回文数

#include<stdio.h>
int main()
 {
     int n,a,b,c;
     scanf("%d",&n);
 
     for(a=1;a<=9;a++)
     for(b=0;b<=9;b++)
     for(c=0;c<=9;c++)
     {
         if(n==2*a+2*b+c)
         printf("%d%d%d%d%d\n",a,b,c,b,a);
     }
     for(a=1;a<=9;a++)
     for(b=0;b<=9;b++)
     for(c=0;c<=9;c++)
     {
         if(n==2*a+2*b+2*c)
        printf("%d%d%d%d%d%d\n",a,b,c,c,b,a);
     }
 
     return 0;
 }

注意:
1.从小到大输出,先用循环找出五位的数,再找出六位数
2.用三个变量去遍历循环会比设置五个或六个要快很多

思路:
这里设置了a,b,c三个变量,用if来筛选出符合条件的数。会比直接六个变量六个循环快

BASIC-8 回文数

#include <stdio.h>
int main()
{
	int a,b,c,d;
	for(a=1;a<=9;a++)
	{
		for(b=0;b<=9;b++)
		{
			for(c=0;c<=9;c++)
			{
				for(d=0;d<=9;d++)
				{
					if(a==d&&b==c)
					{
						printf("%d%d%d%d",a,b,c,d);
						putchar('\n'); 
						
					}
				}
			}
		}
	}
	return 0;	
} 

注意:
a最高位不能为0

思路:
这题需要找出四位数中的回文数。我使用了设置四个变量,然后循环相加,判断对称。如果用两个变量,采用上题的方法,应该也是可行的。

BASIC-7 特殊的数字

#include<stdio.h>
int main()
{
	int a,b,c;
	for(a=1;a<=9;a++)
	{
		for(b=0;b<=9;b++)
		{
			for(c=0;c<=9;c++)
			{
				if(a*100+b*10+c==a*a*a+b*b*b+c*c*c)
				{
					printf("%d",a*100+b*10+c);
					putchar('\n');
				}	
			}
		}
	}
	return 0;
}

思路:
这题就是按照题目要求,设置三个变量,分别代表个位,十位,百位,然后列出式子即可。

BASIC-6 杨辉三角形

#include<stdio.h>
int main()
{
	int i,j,n;
	int num[35][35];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		for(j=0;j<=i;j++)
		{
			if(i==0||j==0||j==i)
				num[i][j]=1;
			else
				num[i][j]=num[i-1][j-1]+num[i-1][j];		
		}
	}
	
		for(i=0;i<n;i++)
		{
			for(j=0;j<=i;j++)
			{
				printf("%d ",num[i][j]);
			}	
			putchar('\n');
		}
	return 0; 
} 

注意:
1.1 <= n <= 34。,因为本题使用数组来实现,为了反正出现数组越界的情况,这里我们把数组的大小给到35。

思路:
定义二维数组,根据规律来输出一个杨辉三角。第0列和第i==j的时候都是1,其余是上一行的数相加。

BASIC-5 查找整数

#include <stdio.h>
int main()
{
	int n,i,a,flag=0;
	int num[1001];
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%d",&num[i]);
	
	scanf("%d",&a);
	
	for(i=0;i<n;i++)
	{
		if(a==num[i])
		{
			flag+=1;
			break;
		}
		
		else
			flag=0;
	}
	if(flag)
		printf("%d",i+1);
	else
		printf("-1");
	
	return 0;
}

注意:
1.1 <= n <= 1000。因为本题使用数组来实现,为了反正出现数组越界的情况,这里我们把数组的大小给到1001。
2.输入的每个数不大于10000,使用%d输入即可

思路:
按照题目要求输入,然后从数组的开头开始搜索,一旦发现成功,就结束循环,并输出他出现的位数(出现的位数=下标+1),如果没有找到,就输出-1.

BASIC-4 数列特征

#include<stdio.h>  
int MAX(int num[],int n);
int MIN(int num[],int n);
int main()
{
	int n,i,max,min,sum=0;
	int num[10000];
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%d",&num[i]);
	for(i=0;i<n;i++)
		sum=sum+num[i];
	max=MAX(num,n);	
	min=MIN(num,n);
	printf("%d\n",max);
	printf("%d\n",min);
	printf("%d\n",sum);
}
int MAX(int num[],int n)
{
	int max,i;
	max=num[0];
	for(i=0;i<n;i++)
	{
		if(max<num[i])
			max=num[i];
	}
	return max;
}

int MIN(int num[],int n)
{
	int min,i;
	min=num[0];
	for(i=0;i<n;i++)
	{
		if(min>num[i])
			min=num[i];
	}
	return min;
}

注意:
1.每个数的绝对值都小于10000,因此可以用%d输入。

思路:
这里我采用了函数的做法来完成。MAX函数和MIN函数来找出数当中的最大值和最小值。for循环累加得出这组数据的和即可。

如果大家有什么更好的方法,欢迎留言评论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

让记忆定格1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值