蓝桥杯c语言b组试题
Ⅰ 蓝桥杯省赛(c语言)一般考什么
蓝桥杯练习系统题目汇总:
入门训练
1. Fibonacci数列
问题描述
Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
输入格式
输入包含一个整数n。
输出格式
输出一行,包含一个整数,表示Fn除以10007的余数。
说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。
样例输入
10
样例输出
55
样例输入
22
样例输出
7704
数据规模与约定
1 <= n <= 1,000,000。
参考代码:c++
#include <stdlib.h>
#include <stdio.h>
#define MOD 10007
#define MAXN 1000001
int n, i, F[MAXN];
int main()
{
scanf("%d", &n);
F[1] = 1;
F[2] = 1;
for (i = 3; i <= n; ++i)
F[i] = (F[i-1] + F[i-2]) % MOD;
printf("%d\n", F[n]);
return 0;
}
java:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in) ;
int num = scanner.nextInt() ;
int[] a = new int[num+2] ;
a[1] = a[2] = 1;
if (num == 1) {
a[num] = 1 ;
}else if (num == 2) {
a[num] = 1 ;
}else {
for (int i = 3; i <= num; i++) {
a[i] = (a[i - 1] + a[i - 2]) % 10007 ;
}
}
System.out.println(a[num]);
}
}
2. 实数输出
问题描述
给定圆的半径r,求圆的面积。
输入格式
输入包含一个整数r,表示圆的半径。
输出格式
输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。
说明:在本题中,输入是一个整数,但是输出是一个实数。
对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误。
实数输出的问题如果没有特别说明,舍入都是按四舍五入进行。
样例输入
4
样例输出
50.2654825
数据规模与约定
1 <= r <= 10000。
提示
本题对精度要求较高,请注意π的值应该取较精确的值。你可以使用常量来表示π,比如PI=3.14159265358979323,也可以使用数学公式来求π,比如PI=atan(1.0)*4。
c++
#include <stdio.h>
#include <math.h>
int main()
{
int r;
double s, PI;
scanf("%d", &r);
PI = atan(1.0) * 4;
s = PI * r * r;
printf("%.7lf", s);
return 0;
}
java:
import java.util.Scanner;
public class Main{
private static final double PI = 3.14159265358979323;
public static void main(String[] args) {
int r = new Scanner(System.in).nextInt();
if(1 <= r && r <= 10000) {
double circular = PI*r*r;
String result = String.format("%.7f", circular);
System.out.println(result);
}
}
}
3. 求和公式
问题描述
求1+2+3+...+n的值。
输入格式
输入包括一个整数n。
输出格式
输出一行,包括一个整数,表示1+2+3+...+n的值。
样例输入
4
样例输出
10
样例输入
100
说明:有一些试题会给出多组样例输入输出以帮助你更好的做题。
一般在提交之前所有这些样例都需要测试通过才行,但这不代表这几组样例数据都正确了你的程序就是完全正确的,潜在的错误可能仍然导致你的得分较低。
样例输出
5050
数据规模与约定
1 <= n <= 1,000,000,000。
说明:请注意这里的数据规模。
本题直接的想法是直接使用一个循环来累加,然而,当数据规模很大时,这种“暴力”的方法往往会导致超时。此时你需要想想其他方法。你可以试一试,如果使用1000000000作为你的程序的输入,你的程序是不是能在规定的上面规定的时限内运行出来。
本题另一个要值得注意的地方是答案的大小不在你的语言默认的整型(int)范围内,如果使用整型来保存结果,会导致结果错误。
如果你使用C++或C语言而且准备使用printf输出结果,则你的格式字符串应该写成%I64d以输出long long类型的整数。
c++:
#include <iostream>
using namespace std;
int main()
{
long long n;
cin >> n;
cout << (1+n) * n / 2;
return 0;
}
c:
#include <stdio.h>
int main()
{
int n;
long long ret = 0, tmp;
scanf("%d", &n);
tmp = n;
printf("%I64d", (1+tmp) * tmp / 2);
return 0;
}
java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String args[]) throws NumberFormatException, IOException{
BufferedReader strin = new BufferedReader(new InputStreamReader(System.in));
long i = Integer.parseInt(strin.readLine());
long sum = (1+i)*i/2;
System.out.println(sum);
}
}
4. A+B问题
问题描述
输入A、B,输出A+B。
说明:在“问题描述”这部分,会给出试题的意思,以及所要求的目标。
输入格式
输入的第一行包括两个整数,由空格分隔,分别表示A、B。
说明:“输入格式”是描述在测试你的程序时,所给的输入一定满足的格式。
做题时你应该假设所给的输入是一定满足输入格式的要求的,所以你不需要对输入的格式进行检查。多余的格式检查可能会适得其反,使用你的程序错误。
在测试的时候,系统会自动将输入数据输入到你的程序中,你不能给任何提示。比如,你在输入的时候提示“请输入A、B”之类的话是不需要的,这些多余的输出会使得你的程序被判定为错误。
输出格式
输出一行,包括一个整数,表示A+B的值。
说明:“输出格式”是要求你的程序在输出结果的时候必须满足的格式。
在输出时,你的程序必须满足这个格式的要求,不能少任何内容,也不能多任何内容。如果你的内容和输出格式要求的不一样,你的程序会被判断为错误,包括你输出了提示信息、中间调试信息、计时或者统计的信息等。
样例输入
12 45
说明:“样例输入”给出了一组满足“输入格式”要求的输入的例子。
这里给出的输入只是可能用来测试你的程序的一个输入,在测试的时候,还会有更多的输入用来测试你的程序。
样例输出
57
说明:“样例输出”给出了一组满足“输出格式”要求的输出的例子。
样例输出中的结果是和样例输入中的是对应的,因此,你可以使用样例的输入输出简单的检查你的程序。
要特别指出的是,能够通过样例输入输出的程序并不一定是正确的程序,在测试的时候,会用很多组数据进行测试,而不局限于
Ⅱ 蓝桥杯 你有蓝桥杯历年的试题吗最好有参考答案啊。 高职高专组C语言的 有的话麻烦你发给我 万分感谢
我有真题。但是老师没给答案
Ⅲ 本人普通大学生一个,今年报了个蓝桥杯的c语言B组的比赛,请问有参加过或比较了解的给说说怎么准备吗
指导老师说的知识点得会
并在机器上能够编译通过
比如最基本的
冒泡排序法之类的
谭浩强的书
还有那个C语言第二版……
Ⅳ 蓝桥杯C语言题目
#include<stdio.h>
int main(){
char code[]={'Z','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'};
char num[10];
int sgln=0,sang,yu,len=0;
sang=2019/26;
yu=2019%26;
num[len]=code[yu];
len++;
while(sang!=0){
if(sang!=0&&yu==0)
yu=(sang-1)%26;
else
yu=sang%26;
sang=sang/26;
num[len]=code[yu];
len++;
}
len--;
for(;len>=0;len--){
printf("%c",num[len]);
}
}
Ⅳ 蓝桥杯练习题c语言
(1)检查 最大值 和 最小值 的时候, 循环终止条件应该是「 i < n ; 」,你上面的代码没有对比到最后一内个元容素啊!
(2)估计是没有对输入的值进行判断,是否合法,所以扣分了吧。比如 数组的个数 应该是 大于0 的整数吧。 然后, 要求 数组里的数的绝对值都小于10000,也应该需要 判断一下吧。
如有帮助,烦请点点赞,谢谢!
Ⅵ 跪求历届蓝桥杯决赛c语言B组真题哦!要是有解答更谢了!
祝贺楼主,可以网络到的。
Ⅶ 蓝桥杯本科b组c++题目结构是什么 是全是程序题吗还有又有程序题又有填空题
C本科组估计就是用C/C++来实现了,这个我觉得最好对C/C++支持要好,估计最好用GCC编译。至于编辑器应该都可以,c-free dev C++ UE等都可以吧。
Ⅷ 求2013蓝桥杯C语言本科组B的第七题错误票据的程序答案
楼上的网友说的很简单,实际上因为每一行不确定到底要放多少个数,很难计算。
我是一个字符一个字符输入的,如果是数字就储存,如果遇到\0就进行atoi(),如果遇到\n就结束
最后用判断\n是否与输入相等。
思路很简单,实现很复杂。。
考试的时候这道题我也没做出来。。
现在运行成功。
#include<stdio.h>
#include<stdlib.h>
const int N=10000;
int mysort(const void *a,const void*b)
{
return *(int*)a-*(int*)b;
}
int main()
{
int count=0;
int n,i=0,j=0,k=0;
int a[N];
char ch[7];
scanf("%d\n",&n);
for(count=0;count<n;)
{
scanf("%c",&ch[j]);
if(ch[j]<='9'&&ch[j]>='0')
j++;
else if(ch[j]==' ')
{
a[k++]=atoi(ch);
j=0;
}
else if(ch[j]=='\n')
{
count++;
a[k++]=atoi(ch);
j=0;
}
}
k--;
qsort(a,k,sizeof(int),mysort);
i=a[0];
for(j=1;j<k;j++)
{
if(a[j]==i||a[j]==i+2)
printf("%d",a[j]);
i=a[j];
}
return 0;
}
Ⅸ 今年刚参加蓝桥杯,发现分了本科A组和本科B组,我想知道这两组题目的难度有什么不同
第一、楼下说的不对。本一也是可以选择保A的,比如我们学校就是,我们老师给我们内报的是B。A组的题目容基本上有4道左右和B组一样,其他比B组难点。
第二、这不是歧视,是为了给更多人机会,如果都报A的话,基本上晋级的都是重点学校了。