您好,欢迎访问三七文档
时间限制:1.0s内存限制:256.0MB1闰年判断问题描述给定一个年份,判断这一年是不是闰年。当以下情况之一满足时,这一年是闰年:1.年份是4的倍数而不是100的倍数;2.年份是400的倍数。其他的年份都不是闰年。输入格式输入包含一个整数y,表示当前的年份。输出格式输出一行,如果给定的年份是闰年,则输出yes,否则输出no。说明:当试题指定你输出一个字符串作为结果(比如本题的yes或者no,你需要严格按照试题中给定的大小写,写错大小写将不得分。样例输入2013样例输出no样例输入2016样例输出yes数据规模与约定1990=y=2050。本题的C参考代码如下:1.#includestdio.h2.intmain()3.{4.inty;5.scanf(%d,&y);6.if(y%4==0&&y%100!=0||y%400==0)7.printf(yes);8.else9.printf(no);10.return0;11.}2.01字串问题描述对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:0000000001000100001100100请按从小到大的顺序输出这32种01串。输入格式本试题没有输入。输出格式输出32行,按从小到大的顺序每行一个长度为5的01串。样例输出00000000010001000011以下部分省略本题的C参考代码如下:1.#includestdio.h2.intmain()3.{4.inti,j,k,l,m;5.for(i=0;i=1;++i)6.for(j=0;j=1;++j)7.for(k=0;k=1;++k)8.for(l=0;l=1;++l)9.for(m=0;m=1;++m)10.printf(%d%d%d%d%d\n,i,j,k,l,m);11.return0;12.}3.字母图形问题描述利用字母可以组成一些美丽的图形,下面给出了一个例子:ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。输入格式输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。输出格式输出n行,每个m个字符,为你的图形。样例输入57样例输出ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC数据规模与约定1=n,m=26。本题的C参考代码如下:1.#includestdio.h2.#includestdlib.h3.#defineMAXSIZE264.5.//输出6.voidPrint(charmatrix[MAXSIZE][MAXSIZE],intn,intm)7.{8.inti,j;9.for(i=0;in;i++)10.{11.for(j=0;jm;j++)12.{13.printf(%c,matrix[i][j]);14.}15.printf(\n);16.}17.}18.19.//实现字母图形20.voidDrawing(intn,intm)21.{22.inti,j;23.intpoint=0;24.charstr;25.charmatrix[MAXSIZE][MAXSIZE];26.for(i=0;in;i++)27.{28.str='A';29.for(j=i;jm;j++)30.{31.matrix[i][j]=str++;32.}33.str='A';34.for(j=i-1;j=0;j--)35.{36.matrix[i][j]=++str;37.}38.}39.Print(matrix,n,m);40.}41.intmain()42.{43.intn,m;44.scanf(%d%d,&n,&m);45.Drawing(n,m);46.return0;47.}4.数列特征问题描述给出n个数,找出这n个数的最大值,最小值,和。输入格式第一行为整数n,表示数的个数。第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。输出格式输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。样例输入513-245样例输出5-23数据规模与约定1=n=10000。本题的C参考代码如下:1.#includestdio.h2.#includestdlib.h3.#defineMAXSIZE100004.5.intmain()6.{7.inti;8.intn;9.intvalue;10.intmax=-MAXSIZE;11.intmin=MAXSIZE;12.intsum=0;13.scanf(%d,&n);14.for(i=0;in;i++)15.{16.scanf(%d,&value);17.if(valuemax)max=value;18.if(valuemin)min=value;19.sum+=value;20.}21.printf(%d\n,max);22.printf(%d\n,min);23.printf(%d\n,sum);24.return0;25.}5.查找整数问题描述给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。输入格式第一行包含一个整数n。第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。第三行包含一个整数a,为待查找的数。输出格式如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。样例输入61948399样例输出2数据规模与约定1=n=1000。本题的C参考代码如下:1.#includestdio.h2.#defineMAXN100013.intn,a,ans;4.ints[MAXN];5.intmain()6.{7.inti;8.scanf(%d,&n);9.for(i=0;in;++i)10.scanf(%d,&s[i]);11.scanf(%d,&a);12.ans=-1;13.for(i=0;in;++i)14.{15.if(s[i]==a)16.{17.ans=i+1;18.break;19.}20.}21.printf(%d,ans);22.return0;23.}6.杨辉三角形问题描述杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。下面给出了杨辉三角形的前4行:1111211331给出n,输出它的前n行。输入格式输入包含一个数n。输出格式输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。样例输入4样例输出1111211331数据规模与约定1=n=34。本题的C参考代码如下:1.#includestdio.h2.#defineMAXN403.intn;4.inta[MAXN][MAXN];5.intmain()6.{7.inti,j;8.scanf(%d,&n);9.a[0][0]=1;10.for(i=0;in;++i)11.{12.a[i][0]=a[i][i]=1;13.for(j=1;ji;++j)14.a[i][j]=a[i-1][j-1]+a[i-1][j];15.}16.for(i=0;in;++i)17.{18.for(j=0;j=i;++j)19.printf(%d,a[i][j]);20.printf(\n);21.}22.return0;23.}7.特殊的数字时间限制:1.0s内存限制:512.0MB问题描述153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。输出格式按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。1.#includestdio.h2.intmain()3.{4.inti,j,k,n;5.for(n=100;n1000;n++)6.{7.i=n/100;8.j=n/10%10;9.k=n%10;10.if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)11.printf(%d\n,n);12.}13.return0;14.}8.回文数问题描述1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。输出格式按从小到大的顺序输出满足条件的四位十进制数。本题的C参考代码如下:1.#includestdio.h2.intmain()3.{4.inta,b,c,d,i;5.for(i=1000;i=9999;i++)6.{7.a=i/1000;8.b=i/100%10;9.c=i/10%10;10.d=i%10;11.if(a==d&&b==c)12.printf(%d\n,i);13.}14.return0;15.}9.特殊回文数问题描述123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n,编程求所有这样的五位和六位十进制数,满足各位数字之和等于n。输入格式输入一行,包含一个正整数n。输出格式按从小到大的顺序输出满足条件的整数,每个整数占一行。样例输入52样例输出899998989989998899数据规模和约定1=n=54。本题的C参考代码如下:1.#includestdio.h2.intmain()3.{4.inta,b,c,d,e,f,t,all;5.scanf(%d,&t);6.for(a=1;a10;a++)7.for(b=0;b10;b++)8.for(c=0;c10;c++)9.for(d=0;d10;d++)10.for(e=0;e10;e++)11.{12.if(a==e)13.if(b==d)14.{15.all=a+b+c+d+e;16.if(all==t)17.printf(%d\n,a*10000+b*1000+c*100+d*10+e);18.}19.}20.for(a=1;a10;a++)21.for(b=0;b10;b++)22.for(c=0;c10;c++)23.for(d=0;d10;d++)24.for(e=0;e10;e++)25.for(f=0;f10;f++)26.{27.if(a==f)28.if(b==e)29.if(c==d)30.{31.all=a+b+c+d+e+f;32.if(all==t)33.printf(%d\n,a*100000+b*10000+c*1000+d*100+e*10+f);34.}35.}36.37.return0;38.}10.十进制转十六进制问题描述十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。给出一个非负整数,将它表示成十六进制的形式。输入格式输入包含一个非负整数a,表示要转换的数。0=a=2147483647输出格式输出这个整数的16进制表示样例输入30样例输出1E本题的C参考代码如下:1.#includestdio.h2.#includestdlib.h3.chardata[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};4.5.//输出6.voidPrint(char*num,intn)7.{8.inti;9.for(i=n-1;i=0;i--)printf(%c,num[i]);10.printf(\0);11.printf(\n);12.}13.14
本文标题:蓝桥比赛练习C语言
链接地址:https://www.777doc.com/doc-2104340 .html