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

文章目录

    • [BASIC-9 特殊的回文数](http://lx.lanqiao.cn/problem.page?gpid=T48)
    • [BASIC-8 回文数](http://lx.lanqiao.cn/problem.page?gpid=T47)
    • [BASIC-7 特殊的数字](http://lx.lanqiao.cn/problem.page?gpid=T46)
    • [BASIC-6 杨辉三角形](http://lx.lanqiao.cn/problem.page?gpid=T10)
    • [BASIC-5 查找整数](http://lx.lanqiao.cn/problem.page?gpid=T9)
    • [BASIC-4 数列特征](http://lx.lanqiao.cn/problem.page?gpid=T8)

BASIC-9 特殊的回文数

#include
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 
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
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
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 
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  
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循环累加得出这组数据的和即可。

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

你可能感兴趣的:(蓝桥杯,蓝桥杯,算法,c语言,职场和发展)