天天看點

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

繼續閱讀