蓝桥杯入门题
1.顺序输出这32种01串。
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
# include <stdio.h>
int main ( )
{
int a, b, c, d, e;
for ( a= 0 ; a<= 1 ; a++ )
for ( b= 0 ; b<= 1 ; b++ )
for ( c= 0 ; c<= 1 ; c++ )
for ( d= 0 ; d<= 1 ; d++ )
for ( e= 0 ; e<= 1 ; e++ )
printf ( "%d%d%d%d%d\n" , a, b, c, d, e) ;
return 0 ;
}
2.n个数的最大值,最小值,和。
给出n个数,找出这n个数的最大值,最小值,和。
# include <stdio.h>
# define MaxSize 10000
main ( )
{
int n;
int sum= 0 , min= MaxSize, max= - MaxSize;
scanf ( "%d" , & n) ;
while ( n-- )
{
int temp, st;
scanf ( "%d" , & temp) ;
if ( temp> max)
{
max= temp;
}
if ( temp< min)
{
min= temp;
}
sum+= temp;
}
printf ( "%d\n%d\n%d\n" , max, min, sum) ;
return 0 ;
}
3.基础练习 查找整数
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
# include <stdio.h>
int main ( )
{
int n;
int m;
int sum;
int arr[ n] ;
scanf ( "%d" , & n) ;
for ( int i= 0 ; i< n; i++ ) {
scanf ( "%d" , & arr[ i] ) ;
}
scanf ( "%d" , & m) ;
for ( int i= 0 ; i< n; i++ ) {
if ( m== arr[ i] ) {
printf ( "第%d" , i+ 1 ) ;
return 0 ;
}
}
return 0 ;
}
4.特殊的数字
153是一个非常特殊的数,它等于它的每位数字的立方和,
即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。
输出格式
按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。
# include <stdio.h>
int main ( )
{
int i, j, k;
int n;
for ( i= 1 ; i<= 9 ; i++ )
for ( j= 0 ; j<= 9 ; j++ )
for ( k= 0 ; k<= 9 ; k++ )
{
if ( i* 100 + j* 10 + k== i* i* i+ j* j* j+ k* k* k)
printf ( "%d%d%d\n" , i, j, k) ;
}
return 0 ;
}
5.回文数
1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位
# include <stdio.h>
int main ( )
{
int i, j, k, s;
int n;
for ( i= 1 ; i<= 9 ; i++ )
for ( j= 0 ; j<= 9 ; j++ )
for ( k= 0 ; k<= 9 ; k++ )
for ( s= 0 ; s<= 9 ; s++ )
{
if ( i== s&& j== k)
printf ( "%d%d%d%d\n" , i, j, k, s) ;
}
return 0 ;
}
6.数列排序
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式
输出一行,按从小到大的顺序输出排序后的数列。
# include <stdio.h>
int main ( )
{
int n, i, j, s, a[ 200 ] ;
scanf ( "%d" , & n) ;
for ( i= 1 ; i<= n; i++ )
{
scanf ( "%d" , & a[ i] ) ;
}
i= n+ 1 ;
while ( i-- )
for ( j= 1 ; j< i; j++ )
{
if ( a[ j] > a[ j+ 1 ] )
{
s= a[ j+ 1 ] ;
a[ j+ 1 ] = a[ j] ;
a[ j] = s;
}
}
for ( i= 1 ; i<= n; i++ )
printf ( "%d " , a[ i] ) ;
return 0 ;
}
7.日期转换
给定一个以秒为单位的时间t,要求用“<H>:<M>:<S>”的格式来表示这个时间。
<H>表示时间,<M>表示分钟,而<S>表示秒,它们都是整数且没有前导的“0”。
例如,若t=0,则应输出是“0:0:0”;若t=3661,则输出“1:1:1”。
输入格式
输入只有一行,是一个整数t(0<=t<=86399)。
输出格式
输出只有一行,是以“<H>:<M>:<S>”的格式所表示的时间,不包括引号。
# include <stdio.h>
int main ( )
{
int t, h, m, s;
scanf ( "%d" , & t) ;
h= n/ 3600 ;
m= n/ 60 % 60 ;
s= n% 60 ;
printf ( "%d:%d:%d" , h, m, s) ;
}
8.字符比较
给定两个仅由大写字母或小写字母组成的字符串
# include <stdio.h>
# include <string.h>
int main ( )
{
char arr1[ 100 ] ;
char arr2[ 100 ] ;
scanf ( "%s" , arr1) ;
scanf ( "%s" , arr2) ;
if ( strcmp ( arr1, arr2) == 0 ) {
printf ( "相同" ) ;
} else {
printf ( "不相同" ) ;
}
return 0 ;
}
9.数的读法
问题描述
Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染
色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿。
比如说,在对学生讲解第1234567009号位置上的碱基时,光看着数字是很难准确的念
出来的。
所以,他迫切地需要一个系统,然后当他输入12 3456 7009时,会给出相应的念法:
十二亿三千四百五十六万七千零九
用汉语拼音表示为
shi er yi san qian si bai wu shi liu wan qi qian ling jiu
这样他只需要照着念就可以了。
你的任务是帮他设计这样一个系统:给定一个阿拉伯数字串,你帮他按照中文读写的
规范转为汉语拼音字串,相邻的两个音节用一个空格符格开。
注意必须严格按照规范,比如说“10010”读作“yi wan ling yi shi”而不是“yi wan
ling shi”,“100000”读作“shi wan”而不是“yi shi wan”,“2000”读作“er qian”而
不是“liang qian”。
# include <stdio.h>
# include <string.h>
int main ( )
{
char a[ 100 ] ; int i, j, k, l;
char b[ 20 ] [ 10 ] = { "ling" , "yi" , "er" , "san" , "si" , "wu" , "liu" , "qi" , "ba" , "jiu" } ;
char c[ 20 ] [ 10 ] = { "" , "" , "shi" , "bai" , "qian" , "wan" , "shi" , "bai" , "qian" , "yi" , "shi" } ;
gets ( a) ;
l= strlen ( a) ;
for ( i= 0 ; i< l; i++ ) {
j= a[ i] - 48 ;
if ( j== 0 ) { if ( i< l- 1 ) if ( a[ i+ 1 ] != 48 ) printf ( "%s " , b[ j] ) ; }
else
if ( ( l- i== 2 || l- i== 6 || l- i== 10 ) && j== 1 ) printf ( "%s " , c[ l- i] ) ;
else if ( a[ i- 1 ] == 48 && j== 1 ) printf ( "%s " , c[ l- i] ) ;
else printf ( "%s %s " , b[ j] , c[ l- i] ) ;
}
printf ( "\n" ) ;
return 0 ;
}
10.阶乘计算
问题描述
输入一个正整数n,输出n!的值。
其中n!=1*2*3*…*n。
# include <stdio.h>
# include <string.h>
# define MaxSize 3000 + 5
void resultProduct ( int P[ ] , int num)
{
int i, tp= 0 , st= 0 ;
for ( i= 0 ; i< MaxSize; i++ )
{
st= tp;
tp= ( P[ i] * num+ st) / 10 ;
P[ i] = ( P[ i] * num+ st) % 10 ;
}
return 0 ;
}