@[toc]
蓝桥杯入门题
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;
}