⑴ 我高中才接触编程,想学习c语言一年然后参加奥赛,能够高考加分的可能性有多少
看你有多聪明,1年用多少功,还有老师牛不牛逼。反正我高中学校老师很牛逼,什么金牌老师,带的计算机竞赛我班里同学高二就拿了全省第7有保送清华了,每年拿一等奖的都起码十个。我觉得吧,看看叫你的老师怎么样,不行的话别报希望,你想一个省那么多人参加,大家肯定都用功的,也都不笨,为什么我们学校每年有十几个,别的学校没有。。主要就是老师要好,对历年考题了解,讲的清楚。
⑵ 高中计算机竞赛要掌握一门高级语言程序,应该学哪个好学。VBC语言
我不认为语言本身有什么可选性,楼上几位所说“c是基础性的东西;C#容易”之类,都不是他所关心的,
我的建议是,不选语言,只选老师,因为,这个竞赛靠自学太困难,老师是关键,老师在那个语言上是强项,你就该学什么。PASCAL和C选其一即可,因为C++\C#之类的,多了好多非算法的内容,容易迷失。
⑶ 用c语言写出n 的平方的累加和的过程。
n有范围吗?如果n是从1到100,程序如下:
main()
{int i,j;
j=0;
for(i=1;i<=100;i++)
{j=j+i*i;
}
printf("%d\n",j);
}
⑷ 求第十四届信息学奥赛联赛普及组c语言初赛试题 第三大题第2,3题的解析
2,3,1
递归一次,输入参数循环左移至第一个数小于等于第二个数然后输出
5 4 10 1 6 22 -59 -16 -11 -6
将数组中正数与负数分开排列,从数组起始开始检测非整数数,从数组末尾检测非负数,然后将这两个数调换位置
最后一个递归没时间分析了,下午有事要出门了
⑸ 只发高分:高一计算机奥林匹克竞赛 C语言 准备
第十二届全国青少年信息学奥林匹克联赛初赛试题
( 普及组 C++ 语言 二小时完成 )
● ● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●●
一、 单项选择题 (共20题,每题1.5分,共计30分。每题有且仅有一个正确答案.)。
1. 在下面各世界顶级的奖项中,为计算机科学与技术领域做出杰出贡献的科学家设立的奖项是( )。
A. 沃尔夫奖 B. 诺贝尔奖 C. 菲尔兹奖 D. 图灵奖
2. 在下列各软件中,不属于NOIP竞赛(复赛)推荐使用的语言环境有( )。
A. gcc/g++ B. Turbo Pascal
C. RHIDE D. free pascal
3. 以下断电之后仍能保存数据的有( )。
A. 寄存器 B. ROM C. RAM D. 高速缓存
4.Linux是一种( )。
A. 绘图软件 B. 程序设计语言 C. 操作系统 D. 网络浏览器
5. CPU是( )的简称。
A. 硬盘 B. 中央处理器 C. 高级程序语言 D. 核心寄存器
6. 在计算机中,防火墙的作用是( )。
A. 防止火灾蔓延 B.防止网络攻击
C. 防止计算机死机 D. 防止使用者误删除数据
7. 在下列关于计算机语言的说法中,不正确的是( )。
A. Pascal和C都是编译执行的高级语言
B. 高级语言程序比汇编语言程序更容易从一种计算机移植到另一种计算机上
C. C++是历史上的第一个支持面向对象的计算机语言
D. 与汇编语言相比,高级语言程序更容易阅读
8. 在下列关于计算机算法的说法中,不正确的是( )。
A. 一个正确的算法至少要有一个输入
B. 算法的改进,在很大程度上推动了计算机科学与技术的进步
C. 判断一个算法的好坏的主要标准是算法的时间复杂性与空间复杂性 1
D. 目前仍然存在许多涉及到国计民生的重大课题,还没有找到能够在计算机上实施的有效算法
9. 在下列各种排序算法中,不是以“比较”作为主要操作的算法是( )。
A. 选择排序 B. 冒泡排序 C. 插入排序 D. 基数排序
10.在编程时(使用任一种高级语言,不一定是C++),如果需要从磁盘文件中输入一个很大的二维数组(例如1000*1000的double型数组),按行读(即外层循环是关于行的)与按列读(即外层循环是关于列的)相比,在输入效率上( )。
A. 没有区别 B. 按行读的方式要高一些
C. 按列读的方式要高一些 D. 取决于数组的存储方式。
11.在C++ 中,表达式21^2的值是( )
A. 441 B. 42 C.23 D.24
12.在C++ 中,判断a不等于0且b不等于0的正确的条件表达式是( )
A. !a==0 || !b==0 B. !((a==0)&&(b==0))
C. !(a==0&&b==0) D. a && b
13.某个车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。已知某时刻该车站状态为空,从这一时刻开始的出入记录为:“进,出,进,进,进,出,出,进,进,进,出,出”。假设车辆入站的顺序为1,2,3,……,则车辆出站的顺序为( )。
A. 1, 2, 3, 4, 5 B. 1, 2, 4, 5, 7
C. 1, 4, 3, 7, 6 D. 1, 4, 3, 7, 2
14.高度为n的均衡的二叉树是指:如果去掉叶结点及相应的树枝,它应该是高度为n-1的满二叉树。在这里,树高等于叶结点的最大深度,根结点的深度为0,如果某个均衡的二叉树共有2381个结点,则该树的树高为( )。
A. 10 B. 11 C. 12 D. 13
15. 与十进制数1770 对应的八进制数是( )。
A. 3350 B. 3351 C. 3352 D. 3540
16.将5个数的序列排序,不论原先的顺序如何,最少都可以通过( )次比较,完成从小到大的排序。
A. 6 B. 7 C. 8 D. 9
17. 设A=B=D=true,C=false,以下逻辑运算表达式值为真的有( )。
A. (A∧B)∨(C∧D) B. ¬¬((A∨B∨D)∧C) 2
C. A∧(B∨C∨D) D. (A∧B∧C)∨¬¬D
18. (2010)16 + (32)8的结果是( )。
A. (8234)10 B. (202B)16
C. (20056)8 D. (100000000110)2
19. 设栈S的初始状态为空,元素a, b, c, d, e 依次入栈,以下出栈序列不可能出现的有( )。
A. a, b, c, e, d B. b, c, a, e, d
C. a, e, c, b, d D. d, c, e, b, a
20. 已知6个结点的二叉树的先根遍历是1 2 3 4 5 6(数字为结点的编号,以下同),后根遍历是3 2 5 6 4 1,则该二叉树的可能的中根遍历是( )
A. 3 2 1 4 6 5 B. 3 2 1 5 4 6
C. 2 1 3 5 4 6 D. 2 3 1 4 6 5
二.问题求解(共2题,每题5分,共计10分)
1.(寻找假币) 现有80枚硬币,其中有一枚是假币,其重量稍轻,所有真币的重量都相同,如果使用不带砝码的天平称重,最少需要称几次,就可以找出假币?你还要指出第1次的称重方法。请写出你的结果:_________________________________________________。
2.(取石子游戏) 现有5堆石子,石子数依次为3,5,7,19,50,甲乙两人轮流从任一堆中任取(每次只能取自一堆,不能不取), 取最后一颗石子的一方获胜。甲先取,问甲有没有获胜策略(即无论乙怎样取,甲只要不失误,都能获胜)?如果有,甲第一步应该在哪一堆里取多少?请写出你的结果:
_________________________________________________。
三.阅读程序写结果(共4题,每题8分,共计32分)
1. #include <iostream.h>
void main()
{int i,u[4],a,b,x,y=10;
for(i=0;i<=3;i++)
cin >>u[i];
a=(u[0]+u[1]+u[2]+u[3])/7;
b=u[0]/((u[1]-u[2])/u[3]);
x=(u[0]+a+2)-u[(u[3]+3)%4];
if(x>10)
y+= (b*100-u[3])/(u[u[0]%3]*5);
3
else
y+=20+(b*100-u[3])/(u[u[0]%3]*5);
cout <<x<<","<<y<<endl;
} // 注:本例中,给定的输入数据可以避免分母为0或下标越界。
输入:9 3 9 4
输出:_______________
2.#include <iostream.h>
void main()
{int i,j,m[]={2,3,5,7,13};
long t;
for (i=0;i<=4;i++)
{t=1;
for(j=1;j<m[i];j++) t*=2;
cout <<(t*2-1)*t<<" ";
}
cout <<endl;
}
输出:____________________
3. #include "iostream.h"
#define N 7
int fun(char s[],char a,int n)
{int j;
j=n;
while(a<s[j] && j>0) j--;
return j;
}
void main()
{char s[N+1];
int k;
for(k=1;k<=N;k++)
s[k]='A'+2*k+1;
cout <<fun(s,'M',N)<<endl;
}
输出:_____________
4. #include <iostream.h>
4
#include <iomanip.h>
void digit(long n,long m)
{if(m>0)
cout <<setw(2)<<n%10;
if(m>1)
digit(n/10,m/10);
cout <<setw(2)<<n%10;
}
void main()
{long x,x2;
cout <<"Input a number:"<<endl;
cin >>x;
x2=1;
while(x2<x) x2*=10;
x2/=10;
digit(x,x2);
cout <<endl;
}
输入:9734526
输出:______________________________
四.完善程序 (前4空,每空2.5分,后6空,每空3分,共28分)
1.(全排列)下面程序的功能是利用递归方法生成从1到n(n<10)的n个数的全部可能的排列(不一定按升序输出)。例如,输入3,则应该输出(每行输出5个排列):
123 132 213 231 321
312
程序:
#include <iostream.h>
#include <iomanip.h>
int n,a[10]; // a[1],a[2],…,a[n]构成n个数的一个排列
long count=0; // 变量count记录不同排列的个数,这里用于控制换行
void perm(int k)
{int j,p,t;
if( ① )
{count++;
for(p=1;p<=n;p++)
cout <<setw(1)<<a[p]; 5
cout <<" ";
if( ② ) cout <<endl;
return;
}
for(j=k;j<=n;j++)
{t=a[k];a[k]=a[j];a[j]=t;
③ ;
t=a[k]; ④ ;
}
}
void main()
{int i;
cout <<"Entry n:"<<endl;
cin >>n;
for(i=1;i<=n;i++) a[i]=i;
⑤ ;
}
2. 由键盘输入一个奇数 P (P<100,000,000),其个位数字不是5,求一个整数 S,使 P×S = 1111...1 ( 在给定的条件下,解 S 必存在)。要求在屏幕上依次输出以下结果:
(1)S 的全部数字。除最后一行外,每行输出 50 位数字。 (2) 乘积的数字位数。
例1:输入p=13,由于13*8547=111111,则应输出(1)8547,(2)6
例2:输入p=147,则输出结果应为(1)
(2)42,即等式的右端有42个1。
程序:
#include <iostream.h>
#include <iomanip.h>
void main()
{long p,a,b,c,t,n;
while (1)
{ cout <<"输入 p, 最后一位为 1 或 3 或 7 或 9:"<<endl;
cin >>p;
if ((p%2!=0)&&(p%5!=0)) // 如果输入的数符合要求,结束循环
⑥ ;
}
a=0; n=0;
while (a<p)
6
{a=a*10+1; n++; // 变量a存放部分右端项,n为右端项的位数
}
t=0;
do
{b=a/p;
cout <<setw(1)<<b;
t++;
if ( ⑦ )
cout <<endl;
c= ⑧ ; a= ⑨ ; n++;
} while (c>0);
cout<<endl<<"n="<< ⑩ <<endl;
}
7
答案
普及组(C++语言)参考答案与评分标准
一、单项选择题:(每题1.5分)
1. D 2. B 3. B 4. C 5. B 6.B 7. C 8. A 9. D 10. D
11. C 12. D 13. C 14. B 15. C 16. B 17. B 18. A 19. C 20. B
二、问题求解:(每题 5分)
1. 4次 (1分),
第一步:分成3组:27,27,26,将前2组放到天平上(4分)。
2.有获胜策略(1分),,第1次在第5堆中取32颗石子(4分),。
三、阅读程序写结果
1. 10,10 (对1个数给4分,无逗号扣1分)
2. 6 28 496 8128 33550336
(前2个对1个数给1分,后3个对1个数给2分)
3. 5
4. 6 2 5 4 3 7 9 9 7 3 4 5 2 6(数字之间无空格扣2分)
四、完善程序(前4空(①--④),每空2.5分,后6空(⑤--⑩),每空3分)
1.① k==n (或n==k)
② count%5==0
③ perm(k+1)
④ a[k]=a[j];a[j]=t (分号可以用逗号代替)
⑤ perm(1)
2.⑥ break
⑦ t%50==0
⑧ a-p*b (或a-b*p)
⑨ c*10+1 (或10*c+1)
⑩ --n (只写n 给1分)
⑹ 高中计算机奥赛(c语言)怎么考
用什么软件考,TURBO C ,VC++ 6.0都差不多的,你按照大纲掌握基础就行了.
高中计算机竞赛现在主要分为三块
一个是软件编程。
一个是这几年兴起的网站制作,就是运用各种工具去制作一个有特色的网站,这个入门简单,学习也很快捷,但是学到后来同样需要高深的程序来支撑,而且需要较好的美术功底
还有一个是计算机应用,又称的机器人比赛
不管是哪一个都是需要系统的学习的。你可以先报一个入门的基础班,比如VB基础班啊,C++基础班等,循序渐进,需要的网站什么,到时候都有专业的老师给你提供。自学不是不好,但是容易走偏或者说是一知半解,基础是一定要打好的,到后面可以自己探索 .
建议:
你去看几本书《奥赛经典——信息学奥林匹克教程——基础篇》,《奥赛经典——信息学奥林匹克教程——语言篇》等辅导书籍.
⑺ 高中计算机奥林匹克竞赛考什么
一、考试内容主要有:
NOI 竞赛的题目以考查选手对算法和编程能力的掌握为主。题目类型有以下三种:
1、传统型:
传统型题目要求选手提交答案程序的源文件。该程序从一个正文文件中读入数据,并向指定的输出文件中写入计算结果。非交互式程序题的题面包括下列内容:
(1)求解问题的描述;
(2)输入文件名和输出文件名(可以是标准输入/输出);
(3)输入数据格式、输出数据格式、以及输入数据范围;
(4)对程序使用计算资源的限制,以及其它可能的限制。
2、交互型:
交互型题目要求选手提交答案程序的源文件。该程序通过调用所提供的库函数实现数据的输入和输出。交互式程序题的题面包括下列内容:
(1)求解问题的描述;
(2)库函数的功能、函数原型、以及获取和链接方式;
(3)输入数据格式、输出数据格式、以及输入数据范围;
(4)对程序使用计算资源的限制,以及其它可能的限制。
3、提交答案型:
提交答案型题目不要求选手提交程序的源文件。选手需要按题目要求,根据给定的输入数据文件生成一组输出数据文件。该组数据文件既可以是由选手的程序输出的,也可以是由选手手工构造的。当选手使用自行设计的程序生成题目答案时,其所使用的程序不应提交。答案提交题的题面包括下列内容:
(1)求解问题的描述;
(2)输入数据格式、输出数据格式;
(3)输入数据文件的获取方法。
二、报名地:
所有省市自治区都可以报名参加。
三、编译系统:
gcc ≥3.2.2, g++ ≥3.2.2, Free Pascal ≥2.0.1 ,主要用 C++ 和 Pascal 。
四、靠前复习应以考试内容为侧重,到达熟练掌握的程度,很有可能拿到好成绩。
(7)高中计算机奥赛c语言扩展阅读:
1、竞赛前的练习和标准化笔试题:
选手在正式竞赛前应有不少于2个小时的练习时间,以熟悉竞赛场地、设备和软件环境、以及答案提交方式。竞赛前的练习应安排在第一场竞赛的前一天。在赛前练习结束后,应安排不少于30分钟的时间进行标准化笔试题的测试。
标准化笔试题包含单选题、多选题和填空题,题目涉及的内容包括计算机和编程的基本知识、NOI竞赛所使用的操作系统、编程工具等的使用方法,以及基本竞赛规则。标准化笔试题的成绩计入选手竞赛的总成绩。
2、竞赛时间:
NOI 的竞赛分为两场,每场竞赛的时间为5小时。两场竞赛之间应间隔一天。
⑻ 全国青少年信息学奥林匹克竞赛有考C语言么 (中学的..)
可以用C
初赛的试卷有PASCAL和C两种,但内容是一样的,只是把语言转了一下。
复赛PASCAL和C都可以用,反正只是看结果。
⑼ 请问给参加信息学奥赛(提高组)的学生辅导是教他们C语言还是pascal语言好呢
作为一个同样是高中开始接触计算机、曾经取得过分区联赛一等奖、目前仍混迹于程序大海中的我,建议还是学pascal。理由有三点:
1、Pascal应该还是目前分区联赛的主流语言,更重要的是,大部分的竞赛辅导书、尤其是优秀的竞赛辅导书,都还是用pascal写的。
2、Turbo Pascal功能比较简单,容易上手,可以将学生的注意力集中于算法研究,而不是软件的应用。而竞赛考核的核心内容是算法,不是语言。
3、Pascal虽然非常古老,而且也不是很好用,但是她的语法、逻辑都非常的严密,对于新手而言,有助于形成良好的编程习惯,同时更好地理解编程的内涵。
⑽ 高中信息学奥赛学什么语言比较好
很高兴能看到LZ这样对编程感兴趣的同学
建议你用C作为高中竞赛编程语言
原因:
1.C目前仍是主流语言之一,以后写算法,做软件用到的机会会非常大。
而Pascal作为教学编程语言,尽管其有着非常优美和易懂的语言结构,但实际应用中使用较少
2.你以前学习过Pascal,过渡到C语言比较平滑,以后学习C++也比较方便
3.做算法用C效率较高。
4.C有很多优秀的的IDE,比如VS,这会让你在调试代码时如鱼得水
不过话又说回来,许多信息学竞赛书代码仍可能使用的PASCAL书写。
最后啰嗦一句,选什么编程语言很多时候不重要,算法才是程序的灵魂