BASIC-1 闰年判断 给定一个年份,判断这一年是不是闰年。当以下情况之一满足时,这一年是闰年: ①年份是4的倍数而不是100的倍数; ②年份是400的倍数。
#include<iostream> using namespace std; int main() { int year; cin>>year; if(year%4==0&&year%100!=0||year%400==0) cout<<"yes"<<endl; else cout<<"no"<<endl; return 0; }BASIC-2 01字串 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是: 00000 00001 00010 00011 00100 请按从小到大的顺序输出这32种01串。
由于只有0、1两种字符,可采用循环的方式对其进行遍历,从而获得00000-11111按顺序排列的01字串。
#include<stdio.h> int main() { char a[6]; for(a[0]='0';a[0]<='1';a[0]++) for(a[1]='0';a[1]<='1';a[1]++) for(a[2]='0';a[2]<='1';a[2]++) for(a[3]='0';a[3]<='1';a[3]++) for(a[4]='0';a[4]<='1';a[4]++) puts(a); return 0; }或者,通过对每一行的每个下标的值进行处理。 index为数组下标,每一行以a[4]-a[0]的顺序,将应置为1的数组元素置1,其余为默认元素0. temp想当于每一行的十进制数,“为获得其二进制数,可采用除2的方式”(相当于十进制转二进制时的方法),从而获得每一行的01字符序列。
#include<iostream> using namespace std; int main() { int i,j,n=32; int temp; for(i=0;i<n;i++) { int a[5]={0}; int index=4; temp=i; while(index>=0) { a[index]=temp%2; index--; temp=temp/2; } for(j=0;j<5;j++) cout<<a[j]; cout<<endl; } return 0; }BASIC-3 字母图形 利用字母可以组成一些美丽的图形,下面给出了一个例子: ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
这道题容易作,但想拿满分还是有一定难度的,需要考虑的十分全面。 我看了网上大多数方法仅局限于此题的数据规模与约定(1 <= n, m <= 26) 而下述程序不仅满足改题目要求,并且其数据规模的范围更大。
字符数组a是将其按输出顺序排列,便于后续按顺序访问。 当n=5,m=7时,第一行为:ABCDEFG,而第二行为:BABCDEF… 由此可见,第一行从a[0]开始往后m个字母,第二行第一个字符为a[49](相当于i=-1时,j=-1,因为x=j,所以x=-1。因为当x<0时会进行x+=50的操作,所以转到了a[49]处)依次输出a[49]后面字符,(他的后面没有了,所以又回到a[0]了)。 以此类推,第三行为:CBABCDE。按上述方法可求得。 因为获得如下程序。
#include<iostream> using namespace std; int main() { int n,m; cin>>n>>m; char a[50]= {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','Y','X','W','V','U','T','S','R','Q','P','O','N','M','L','K','J','I','H','G','F','E','D','C','B'}; int i,j,x; for(i=0;i>-n;i--) { for(j=i;j<m+i;j++) { x=j; if(x>49) x-=50; if(x<0) x+=50; cout<<a[x]; } cout<<endl; } return 0; }