天天看点

3.10 C/C++入门训练2:BASIC-1至6

蓝桥杯练习系统习题链接

1 闰年判断

问题描述

给定一个年份,判断这一年是不是闰年。

当以下情况之一满足时,这一年是闰年:

  1. 年份是4的倍数而不是100的倍数;
  2. 年份是400的倍数。

其他的年份都不是闰年。

输入格式

输入包含一个整数y,表示当前的年份。

输出格式

输出一行,如果给定的年份是闰年,则输出yes,否则输出no。

说明:当试题指定你输出一个字符串作为结果(比如本题的yes或者no,你需要严格按照试题中给定的大小写,写错大小写将不得分。

样例输入

2013

样例输出

no

样例输入

2016

样例输出

yes

数据规模与约定

1990 <= y <= 2050。

#include<stdio.h>
int runnian(int y) ;
int main()
{
	int y;
	scanf("%d",&y);
	if(runnian(y)==1)
	printf("yes");
	else
	printf("no");
	return 0;
}
int runnian(int y) 
{
	if(y%400==0||(y%4==0&&y%100!=0))
	return 1;
	else
	return 0;
}
           

2 01字串

问题描述

对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:

00000

00001

00010

00011

00100

请按从小到大的顺序输出这32种01串。

输入格式

本试题没有输入。

输出格式

输出32行,按从小到大的顺序每行一个长度为5的01串。

样例输出

00000

00001

00010

00011

<以下部分省略>

网上看到的一个大佬的算法,妙

原答案地址https://www.cnblogs.com/yym2013/p/3506681.html

#include<stdio.h>
int main()
{
	int j;
	for(j=0;j<32;j++)
	{
		printf("%d%d%d%d%d\n",j%32/16,j%16/8,j%8/4,j%4/2,j%2);
	}
	return 0;
}
           

3 字母图形

问题描述

利用字母可以组成一些美丽的图形,下面给出了一个例子:

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

输入格式

输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。

输出格式

输出n行,每个m个字符,为你的图形。

样例输入

5 7

样例输出

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

数据规模与约定

1 <= n, m <= 26。

AC代码:(法一)

自己写的,效率不高

#include<stdio.h>
int main()
{
	int m,n,j,t,i=0,k;
	char flag;
	scanf("%d %d",&n,&m);//n行m列
	flag='A';
	k=m;
	while(k--)
	{
		printf("%c",flag);
		flag++;
	}	
	printf("\n");//第一行	
	for(i=1;i<n;i++) 
	{	
		j=0;//之前的bug出于没有将for循环中的j重置
		flag='A'+i;
		while(flag!='A')
		{
			printf("%c",flag);	
			flag=flag-1;
			j++;
		}
		if(j!=m)
		{
			t=m-j;
			while(t!=0)
			{
			printf("%c",flag);
			flag=flag+1;
			t--;
			}
		}						
		printf("\n");
	}	 
	return 0;
}
           

AC代码(法二):

又是围观大佬的一天

原答案网址:

https://blog.csdn.net/qq_44867340/article/details/108953296

#include<stdio.h>
#include<math.h>
int main()
{
	int m,n,j,i;
	char flag,a;
	scanf("%d %d",&n,&m);//n行m列
	flag='A';
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		{
			a=flag+abs(i-j);
			printf("%c",a);	
		}
		printf("\n");
	 } 
	return 0;
}
           

4 数列特征

问题描述

给出n个数,找出这n个数的最大值,最小值,和。

输入格式

第一行为整数n,表示数的个数。

第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。

输出格式

输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。

样例输入

5

1 3 -2 4 5

样例输出

5

-2

11

数据规模与约定

1 <= n <= 10000。

#include<stdio.h>
#include<math.h>
int main()
{
	int max,min,n ,sum=0;
	int i,j,k,a[10000];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
		sum=sum+a[i];
	}
	for(i=0;i<n-1;i++)
	{
		for(j=i+1;j<n;j++)
		{
			if(a[i]>a[j])
			{
				k=a[i];
				a[i]=a[j];
				a[j]=k;
			}
			
		}		
	}//选择排序法,降序排列 
	/*for(i=0;i<n;i++)
	{
		for(j=0;j<n-i-1;j++)
		{
			if(a[j]>a[j+1])
			{
				k=a[j];
				a[j]=a[j+1];
				a[j+1]=k;
			}
		}
	}//冒泡排序 */
	max=a[n-1];
	min=a[0];
	printf("%d\n%d\n%d",max,min,sum);
	return 0;
}
           

5 查找整数

问题描述

给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

输入格式

第一行包含一个整数n。

第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。

第三行包含一个整数a,为待查找的数。

输出格式

如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。

样例输入

6

1 9 4 8 3 9

9

样例输出

2

数据规模与约定

1 <= n <= 1000。

#include<stdio.h>
#include<math.h>
int main()
{
	int i,j=0,a[10000],n,m;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	scanf("%d",&m);
	for(i=0;i<n;i++)
	{
		//查找a[n]中第一个等于a的数,统计i
		if(a[i]==m)
		{
			printf("%d",i+1);
		break; 
		}
		else
		j++;
		
	}
	if(j==n)
	printf("-1");
	return 0;
}
           

6 杨辉三角形

问题描述

杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。 

它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。

下面给出了杨辉三角形的前4行:  

1  

1 1  

1 2 1 

1 3 3 1

给出n,输出它的前n行。

输入格式

输入包含一个数n。

输出格式

输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。

样例输入

4

样例输出

1

1 1

1 2 1

1 3 3 1

数据规模与约定

1 <= n <= 34。

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

继续阅读