蓝桥练习系统试题笔记C++——基础练习
1.闰年判断
给定一个年份,判断这一年是不是闰年。
当以下情况之一满足时,这一年是闰年:
1. 年份是4的倍数而不是100的倍数;
2. 年份是400的倍数。
其他的年份都不是闰年。
#include<stdio.h> bool isLeap(int y) { if ( (y%4==0 && y%100!=0) || y%400==0 ) return true; else return false; } int main() { int y; scanf("%d",&y); if(isLeap(y)) printf("yes"); else printf("no"); }
2.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; }
3.字母图形
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
笔者找到的规律是以A为对称点向两边发#include<stdio.hint main()
{ int n,m; char a[26][26]={0}; scanf("%d%d",&n,&m); for(int i=0;i<n;i++) { int str='A'; for(int j=i;j<m;j++) { a[i][j]=str++; } str='A'; for(int j=i-1;j>=0;j--) { a[i][j]=++str; } }
/*下面这个循环本来写的是单层输出,效果一样,但是蓝桥系统不通过,改双层就过了
for(int i=0;i<n;i++)
{
printf("%s\n",a[i]);
}
*/
for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { printf("%c",a[i][j]); } printf("\n"); } return 0; }
4.数列特征
给出n个数,找出这n个数的最大值,最小值,和
#include<stdio.h> int main() { int n,a[10000],sum=0; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&a[i]); sum=sum+a[i]; } int max=a[0],min=a[0]; for(int i=1;i<n;i++) { if(a[i]>max) max=a[i]; if(a[i]<min) min=a[i]; } printf("%d\n",max); printf("%d\n",min); printf("%d",sum); return 0; }
5.查找整数
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
#include<stdio.h> int main() { int n,str[10000],a; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&str[i]); } scanf("%d",&a); int flag=0; for(int i=1;i<=n;i++) { if(str[i]==a) { flag=i; break; } } if(flag==0) printf("-1"); else printf("%d",flag); return 0; }
6.杨辉三角形
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行:
1
1 1
1 2 1
1 3 3 1
给出n,输出它的前n行。
基本思想:第一个循环输出行数(1 <= n <= 34)
第二个循环输出改行里的数(n行有n个数)
n>=3时,a[i][j]=a[i-1][j-1]+a[i-1][j]
n<3时,a[i][j]=1
#include<stdio.h> int main() { int n; scanf("%d",&n); int a[35][35]={0}; a[1][1]=1,a[2][1]=1,a[2][2]=1; for(int i=1;i<=n;i++) { for(int j=1;j<=i;j++) { if(i==1 || i==2) printf("%d ",a[i][j]); else { a[i][j]=a[i-1][j-1]+a[i-1][j]; printf("%d ",a[i][j]); } } printf("\n"); } return 0; }
7.特殊的数字
153是一个非常特殊的数,它等于它的每位数字的立方和,即
153=1*1*1+5*5*5+3*3*3。
编程求所有满足这种条件的三位十进制数。
#include<stdio.h> int main() { int g,s,b; for(int i=100;i<1000;i++) { g=i%10; s=(i/10)%10; b=i/100; if(i==g*g*g+s*s*s+b*b*b) printf("%d\n",i); } return 0; }
8.回文数
1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
#include<stdio.h> int main() { int g,s,b,q; for(int i=1000;i<10000;i++) { g=i%10; s=(i/10)%10; b=(i/100)%10; q=i/1000; if(g==q && s==b) printf("%d\n",i); } return 0; }
9.特殊回文数
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
基本思想:for(i从10000到1000000)
{
假设i是回文数
sum=i各个位的数字之和
判断sum是否等于且i是否是回文数
是就输出
}
#include<stdio.h> int main() { int n; scanf("%d",&n); for(int i=10000;i<1000000;i++) { int sum=0,ishuiwen=0,ti=i; while(ti>0) { ishuiwen=ishuiwen*10+ti%10; sum=sum+ti%10; ti=ti/10; } if(sum==n && ishuiwen==i) { printf("%d\n",i); } } return 0; }
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),将它表示成十六进制的形式。
#include<stdio.h> int main() { int a,yu; scanf("%d",&a); char cun[20]; if(a==0) printf("%d\n",a); int i=0; while(a>0) { yu=a%16; a=a/16; if(yu==0) cun[i++]='0'; if(yu==1) cun[i++]='1'; if(yu==2) cun[i++]='2'; if(yu==3) cun[i++]='3'; if(yu==4) cun[i++]='4'; if(yu==5) cun[i++]='5'; if(yu==6) cun[i++]='6'; if(yu==7) cun[i++]='7'; if(yu==8) cun[i++]='8'; if(yu==9) cun[i++]='9'; if(yu==10) cun[i++]='A'; if(yu==11) cun[i++]='B'; if(yu==12) cun[i++]='C'; if(yu==13) cun[i++]='D'; if(yu==14) cun[i++]='E'; if(yu==15) cun[i++]='F'; } for(int j=i-1;j>=0;j--) printf("%c",cun[j]); printf("\n"); return 0; }
11.十六进制转十进制
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
#include<stdio.h> #include<string.h> int main() { char str[9]; long long num=0; scanf("%s",&str); for(int i=0;i<strlen(str);i++) { if(str[i]>='0' && str[i]<='9') num=num*16+str[i]-'0'; if(str[i]>='A' && str[i]<='F') num=num*16+str[i]-'A'+10; } printf("%lld",num); return 0; }
12.16进制转8进制
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
16转10转8(系统不通过,可能和数类型有关)
#include<stdio.h> #include<string.h> int main() { int n; char str[11][100000]; int sum; int yu; int ei[200000]; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%s",str[i]); } for(int i=0;i<n;i++) { sum=0; for(int j=0;j<strlen(str[i]);j++) { if(str[i][j]>='0' && str[i][j]<='9') sum=sum*16+str[i][j]-'0'; if(str[i][j]>='A' && str[i][j]<='F') sum=sum*16+str[i][j]-'A'+10; } int k=0; while(sum!=0) { ei[k++]=sum%8; sum=sum/8; } for(int m=k-1;m>=0;m--) { printf("%d",ei[m]); } printf("\n"); } return 0; }
16转2转8(输出不符合题目要求,可添加一个二维数组过度,笔者没有耐心了,暂时不改了)
#include<stdio.h> #include<string.h> #include<stack> #include<math.h> using namespace std; int main() { int n; char str[100000]; stack<int> two1; int two2[400000]; stack<int> eight; scanf("%d",&n); int k=0; while(n!=0) { scanf("%s",str); for(int i=0;i<strlen(str);i++) //16进制改2进制 { int temp; if(str[i]>='0' && str[i]<='9') temp=str[i]-'0'; if(str[i]>='A' && str[i]>='F') temp=str[i]-'A'+10; int flag; for(int j=0;j<4;j++) { flag=temp%2; temp=temp/2; two1.push(flag); } for(int m=0;m<4;m++) { two2[k++]=two1.top(); two1.pop(); } } int quan=0,sum=0; for(int i=k-1;i>=0;i--) //2进制转8进制 { sum+=two2[i]*pow(2,quan); while((quan+1)%3==0) { eight.push(sum); quan=-1; sum=0; } quan++; } n--; } while(eight.empty()!=true){ printf("%d",eight.top()); eight.pop(); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」