信息学奥赛培训目录信息学奥赛简介C语言入门信息学奥赛简介•NOIP:全国青少年信息学奥林匹克联赛(NationalOlympiadinInformaticsinProvinces简称NOIP)自1995年至今。每年由中国计算机学会统一组织。NOIP在同一时间、不同地点以各省市为单位由特派员组织。全国统一大纲、统一试卷。初、高中或其他中等专业学校的学生可报名参加联赛。联赛分初赛和复赛两个阶段。初赛考察通用和实用的计算机科学知识,以笔试为主。复赛为程序设计,须在计算机上调试完成。参加初赛者须达到一定分数线后才有资格参加复赛。联赛分普及组和提高组两个组别,难度不同,分别面向初中和高中阶段的学生。这即是我们通常所说的信息学奥赛。信息学奥赛简介•NOI:全国青少年信息学奥林匹克(NOI)是国内包括港澳在内的省级代表队最高水平的大赛,自1984年至今,在国内包括香港、澳门组织竞赛活动。每年经各省选拔产生5名选手(其中一名是女选手),由中国计算机学会在计算机普及较好的城市组织进行比赛。这一竞赛记个人成绩,同时记团体总分。这即是我们常说的全国总决赛。信息学奥赛简介•NOIP分为初试和复试,初试为笔试,复试为机试,共两场,每场3题。•具体时间安排–初赛(提高组):10月15日(周六)14:30-16:30;–复赛一试:11月12日(周六),提高组8:30-11:30,–复赛二试:11月13日(周日),提高组8:30-11:30。信息学奥赛简介•初试,以程序设计题目为主,加上计算机常识、计算机网络、算法和数据结构以及NOIP常识•复试,全为程序设计题目(要求编制出完整的程序),需要用到相关的算法和数据结构的知识从最简单的C程序开始例1#includestdio.hvoidmain(){printf(“ILoveNOIP!\n”);return0;}猜猜运行结果是什么?如果希望输出“ILoveNanNingSanZhong!”该怎么办?对程序的解释#includestdio.hvoidmain(){printf(“ILoveNOIP!\n”);return0;}表示换行回车语句必须以分号结束不管什么程序,都先写上。练习•安装好C语言编译程序,输入例子程序,并运行,观察运行结果。•试着输出两行文字:IamanoierIloveNOIP!再看一个程序例2#includestdio.hvoidmain(){printf(“%d\n”,1+2);return0;}练习•修改例子程序,分别输出3-4,5×6,8÷4和8÷5的结果。(×对应键盘上的*,÷对应键盘上的\)。#includestdio.hintmain(){printf(%.1lf\n,8.0/5.0);}最后看一个程序例3#includestdio.hintmain(){inta,b;scanf(“%d%d”,&a,&b);printf(%d\n,a+b);return0;}练习•输入3个整数,输出它们的平均值小结一下#includestido.hintmain(){return0;}每一个程序相同的部分,这即是C语言程序的基本结构小结一下printf(%d\n,a+b);scanf(“%d%d”,&a,&b);#includestido.h用于输出,一个%d对应一个整数,如果需要输出小数呢?用于接受用户输入,不要忘了“&”符号!printf、scanf就像一件件武器,stdio.h相当于一个武器库,存放着printf、scanf这些武器,如果要使用这些武器,必须告诉电脑你要使用它们,让电脑知道在stdio.h里面去找顺序结构程序设计•例1输入一个三位数,分离出它的百位、十位和个位,反转后输出样例输入:127样例输出:721#includestdio.hintmain(){intn;scanf(%d,&n);printf(%d%d%d\n,n%10,n/10%10,n/100);return0;}练习•交换变量输入两个整数a和b,交换二者的值,然后输出。样例输入:82416样例输出:16824#includestdio.hintmain(){inta,b,t;scanf(%d%d,&a,&b);t=a;a=b;b=t;printf(%d%d\n,a,b);return0;}分支结构程序设计•例2鸡兔同笼已经鸡和兔的总数量为n,总腿数为m。输入n和m,依次输出鸡的数目和兔的数目。如果无解,则输出“Noanswer”(不要引号)样例输入:1432样例输出:122样例输入:1016样例输出:Noanswer#includestdio.hintmain(){inta,b,n,m;scanf(%d%d,&n,&m);a=(4*n-m)/2;b=n-a;if(m%2==1||a0||b0)printf(Noanswer\n);elseprintf(%d%d,a,b);return0;}练习•三整数排序•输入3个整数,从小到大排序后输出•样例输入:20733•样例输出:72033#includestdio.hintmain(){inta,b,c;scanf(“%d%d%d”,&a,&b,&c);if(a=b&&b=c)printf(“%d%d%d\n”,a,b,c);elseif(a=c&&c=b)printf(“%d%d%d\n”,a,c,b);elseif(b=a&&a=c)printf(“%d%d%d\n”,b,a,c);elseif(b=c&&c=a)printf(“%d%d%d\n”,b,c,a);elseif(c=a&&a=b)printf(“%d%d%d\n”,c,a,b);elseif(c=b&&b=a)printf(“%d%d%d\n”,c,b,a);return0;}THEEND