法学全国青少年信息学竞赛培训教材_第1页
法学全国青少年信息学竞赛培训教材_第2页
法学全国青少年信息学竞赛培训教材_第3页
法学全国青少年信息学竞赛培训教材_第4页
法学全国青少年信息学竞赛培训教材_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

全国青少年信息竞赛培训教材第一章计算机和计算机语言101【问题描述】求S=1-2+3-4+……-100102【问题描述】求圆面积程序,写出程序的运行结果。#include<stdio.h>#include<stdlib.h>char*s=“Letusbegin”;intr=3;doublepi=3.14;main(){printf(“%s\n”,s);printf(“radiumis:%d\n”,r);printf(“Arreaofcircleis:%lf\n”,pi*r*r);printf(“Arreaofcircleis:%10lf\n”,pi*r*r);printf(“Arreaofcircleis:%10.3lf\n”,pi*r*r);//system(“pause”);return0;}103【问题描述】判定2000-2005年中的每一年是否闰年,输出其中所有闰年的年份。请写出程序的运行结果。【源程序】#include<stdio.h>#include<stdlib.h>intyear;charleap;main(){printf("Thefollowingareleapyears:\n");for(year=2000;year<=2500;++year){leap=0;if(year%4==0)if(year%100!=0)leap=1;elseif(year%400==0)leap=1;if(leap)printf("%d",year);}//system("pause");return0;}第二章顺序结构程序设计201【问题描述】鸡和兔子关在一个笼子里,可以看到共有12个头、40只脚,求鸡和兔子各有多少只?【源程序】#include<stdio.h>#include<stdlib.h>main(){intchick,rabbit;rabbit=(40-2*12)/2;chick=40-rabbit;printf("%d%d\n",chick,rabbit);//system("pause");return0;}202【问题描述】已知旅行的距离和汽车平均速度,每公升汽油可以行驶的公里数以及每公升汽油的价格,求驾驶汽车旅游所花费的时间和购买汽油的钱数。【源程序】#include<stdio.h>#include<stdlib.h>main(){floats,v,k,p,liter,t,total;printf("请输入svkp\n");scanf("%f%f%f%f",&s,&v,&k,&p);t=s/v;liter=s/k;total=liter*p;printf("%.2lf%.2lf\n",t,total);//system("pause");return0;}203【问题描述】笑笑有一些糖果。第一天,他吃了总数的一半多一颗;第二天,他又吃了剩下糖果的总数的一半多一颗;第三天,他又吃了剩下糖果的总数的一半多一颗。结果发现,剩下的糖果数量恰好是他的幸运数字。你能算出笑笑原来一共有多少颗糖果吗?【源程序】#include<stdio.h>#include<stdlib.h>main(){intn,x;printf("请输入幸运数字:\n");scanf("%d",&n);x=(n+1)*2;x=(x+1)*2;x=(x+1)*2;printf("结果是:\n");printf("%d\n",x);//system("pause");return0;}204实例2-1日期写法(date)【问题描述】对于年、月、日的描述,不同国家有不同的描述方式,按年、月、日的方式读入日期,输出中国式的写法(年、月、日),英国式的写法(日/月/年)和美国式的写法(月/日/年)。输入:从键盘输入正确的年、月、日。输出:中、英、美式的日期写法。【源程序】#include<stdio.h>#include<stdlib.h>main(){intday,month,year;printf("year,month,day=\n");scanf("%d%d%d",&year,&month,&day);printf("DateinPRCformis%d%d%d\n",year,month,day);printf("DateinUKformis%d%d%d\n",day,month,year);printf("DateinUSAformis%d%d%d\n",month,day,year);//system("pause");return0;}205实例2-2数字分离(splitnum)【问题描述】小明刚学会一位数字的加法运算,小明妈妈想考核小明的运算能力,于是每次给一个四位小数,让小明求各位数字和。小明妈妈想让你帮她写一个程序,能随机产生一个四位整数,同时给出各位数字和。这样她能一边做自己的事,一边考核小明。输入:随机产生一个四位整数。输出:产生的整数和各位数字和。【源程序】//splitnum#include<stdio.h>#include<stdlib.h>main(){intnumber,a,b,c,d,s;srand(time(NULL));number=rand()%9000+1000;//随机产生一个四位数a=number%10;//下面四行对number数进行拆分b=number/10%10;c=number/100%10;d=number/1000;s=a+b+c+d;printf("%d\n",number);printf("s=%d\n",s);//system("pause");return0;}206实例2-3时间戳(times)【问题描述】国家安全局获得了一份珍贵的材料,上面记载了一个即将进行的恐怖活动的一切。不过,国家安全局没法得到实施的时间!材料上的时间使用的是LINUX时间戳,即是从1970年1月1日0时0分0秒开始到该时刻总共过了多少秒。此等重大的责任终于落到你的肩上了,给你该时间戳,你要写个程序计算出恐怖活动在哪一天实施(这里为了简单起见,规定一年12个月,每个月固定为30天)。输入:一个整数n(0≤n≤2147483647),表示从1970年1月1日0时0分0秒开始到该时刻过了n秒。输出:一行:三个整数y、m、d,表示恐怖活动在y年m月d日实施。【源程序】//times#include<stdio.h>#include<stdlib.h>main(){//初始化时间intyears=31104000;intmonths=2592000;intdays=86400;longn,ys,y,m,d;printf("n=");scanf("%d",&n);y=n/years;ys=n%years;m=ys/months+1;ys=ys%months;d=ys/days+1;printf("%d%d%d\n",1970+y,m,d);//system("pause");return0;}207练习2-1.1写出下列程序的运行结果#include<stdio.h>main(){charch1,ch2,ch3;inti;scanf("%c",&ch1);ch2=ch1-1;ch3=ch1+1;i=ch1;printf("%d%c%c%c\n",i,ch1,ch2,ch3);return0;}运行后输入:E208练习2-1.2写出下列程序的运行结果#include<stdio.h>main(){intm,x,y,k1,k2;inti,j;scanf("%d%d%d",&m,&i,&j);k1=1<<i;k2=1<<j;x=m&k1;y=m&k2;printf("%d\n",(x>>i)^(y>>j));return0;}运行后输入:eq\o\ac(○,1)25314eq\o\ac(○,2)25347209练习2-2补充完善下列程序#include<stdio.h>#include<math.h>main(){____a,b,c,p,s;scanf("%d%d%d",&a,&b,&c);p=(a+b+c)/2.0;s=____;printf(____);}提示:使用y=sqrt(x)这个语句可以全y的值为x的平方根。210练习2-3编程题从键盘上读入长方形的连长a,b,计算它的面积和周长,输出。输入:用时、分、秒表示时间长度,把它转换为秒数。将输入的华氏温度转换为摄氏温度。按年利率R%存入本钱X,存入P年后的本利合计为Y=X((100+R)/100)p,请根据输入的R、X和P值输出,求Y的值。农夫与石头憨厚的老农夫昨天捡到了3块小石头,他想再去捡一块石头,让这4块石头正好一共重20千克,请问他应该去捡一块多少千克的石头?要求输入这三块石头的重量(千克),输出一个数,表示农夫应该去捡一块多少千克的石头。第三章选择结构程序设计问题引导301【问题描述】给定两个整数a与b,输出其中较小值。【源程序】#include<stdio.h>#include<stdlib.h>main(){inta,b;printf("a,b=");scanf("%d%d",&a,&b);printf("Theminofaandbis:");if(a<b)printf("%d\n",a);elseprintf("%d\n",b);//system("pause");return0;}302【问题描述】已知三条线段的长度(均为正整数),判断这三条线段是否能构成三角形;若能构成三角形,判断所构成三角形的形状。【源程序】#include<stdio.h>#include<stdlib.h>main(){inta,b,c;printf("abc=");scanf("%d%d%d",&a,&b,&c);if((a+b<=c)||(a+c<=b)||(b+c<=a))printf("notatriangle\n");//不能构成三角形elseif((a==b)&&(b==c))printf("regulartriangle\n");//构成等边三角形elseif((a==b)||(a==c)||(b==c))printf("isoscelestriangle\n");//构成等腰三角形elseif((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))printf("rignttriangle\n");//构成直角三角形elseprintf("triangle\n");//构成普通三角形//system("pause");return0;}303【问题描述】为保密,QS星球使用了特殊的指令,指令以字符的形式发出,并且应用了加密策略。日前,他们加密的规则被我们获悉,原来规则如此有趣:将每一个字母变成它的后继,例如“A”变成“B”、“Z”变成“A”,“z”变成“a”,其他字符不变。现在,请你破译接收到的一个指令。【源程序】#include<stdio.h>#include<stdlib.h>main(){charch;scanf("%c",&ch);switch(ch)//根据ch的值,分情况处理{case'z':printf("a\n");break;case'Z':printf("A\n");break;default:if((ch<='y'&&ch>='a')||(ch<='Y'&&ch>='A'))printf("%c\n",ch+1);elseprintf("%c\n",ch);break;}//system("pause");return0;}304【问题描述】输入任意三个互不相等的整数,将其按从大到小的顺序输出。【源程序】解法1://304_1.c#include<stdio.h>#include<stdlib.h>main(){inta,b,c;scanf("%d%d%d",&a,&b,&c);if((a>b)&&(b>c))printf("%d>%d>%d\n",a,b,c);if((a>c)&&(c>b))printf("%d>%d>%d\n",a,c,b);if((b>a)&&(a>c))printf("%d>%d>%d\n",b,a,c);if((b>c)&&(c>a))printf("%d>%d>%d\n",b,c,a);if((c>a)&&(a>b))printf("%d>%d>%d\n",c,a,b);if((c>b)&&(b>a))printf("%d>%d>%d\n",c,b,a);//system("pause");return0;}解法2:#include<stdio.h>#include<stdlib.h>main(){inta,b,c;scanf("%d%d%d",&a,&b,&c);if(a>b)if(b>c)printf("%d>%d>%d\n",a,b,c);else//否定的是b>cif(a>c)printf("%d>%d>%d\n",a,c,b);else//否定的是a>cprintf("%d>%d>%d\n",c,a,b);else//否定的是a>bif(a>c)printf("%d>%d>%d\n",b,a,c);else//否定的是a>cif(b>c)printf("%d>%d>%d\n",b,c,a);else//否定的是b>cprintf("%d>%d>%d\n",c,b,a);//system("pause");return0;}解法3:#include<stdio.h>#include<stdlib.h>main(){inta,b,c,t;scanf("%d%d%d",&a,&b,&c);if(a<b)//交换a和b的值{t=a;a=b;b=t;}if(a<c)//交换a和c的值{t=a;a=c;b=t;}if(b<c)//交换b和c的值{t=b;b=c;c=t;}printf("%d>%d>%d\n",a,b,c);//经过上面三步操作,a、b、c是有顺序的了//system("pause");return0;}305【问题描述】超市为了促销,经常打折销售。购物超过50元,即可打折优惠:超过50元,打9.5折;超过100元,则打9折;超过200元,则打8折;超过300元,则打7折。当购物满s元时,实际付费多少呢?【源程序】#include<stdio.h>#include<stdlib.h>main(){doubles,f;printf("Pleaseinputs=");scanf("%lf",&s);if(s<=50)f=s; //不打折elseif(s<=100)f=s*0.95;//9.5折elseif(s<=200)f=s*0.9;//9折elseif(s<=300)f=s*0.8;//8折elsef=s*0.7;//7折printf("Themoneyis%.2lfyuan.\n",f);//system("pause");return0;}306【问题描述】对给定的两个操作数,输入运算符,即可计算其值。这里假设运算符只有+、-、*、/,且两个运算数均为整数。【源程序】#include<stdio.h>#include<stdlib.h>main(){inta,b;charc;scanf("%d%d\n",&a,&b);scanf("%c",&c);printf("Theresultis:");switch(c){//根据运算符的不同,进行不同的情况处理case'+':printf("%d\n",a+b);break;case'-':printf("%d\n",a-b);break;case'*':printf("%d\n",a*b);break;case'/':if(b==0)printf("Dividedbyzero!\n");elseif(a%b==0)printf("%d\n",a/b);elseprintf("%.4f\n",(double)a/b);break;default:printf("InputError!\n");break;}//system("pause");return0;}307【问题描述】给定年份和月份,求该月共有多少天。【源程序】#include<stdio.h>#include<stdlib.h>main(){intyear,month;printf("Pleaseinuttheyearandthemonth:");scanf("%d%d",&year,&month);switch(month){case1:case3:case5:case7:case8:case10:case12:printf("Thereare31daysinthismonth.\n");break;case2:if((year%4!=0)||((year%100==0)&&(year%400!=0)))printf("Thereare28daysinthismonth.\n");elseprintf("Thereare29daysinthismonth.\n");break;case4:case6:case9:case11:printf("Thereare30daysinthismonth.\n");break;default:printf("Inputerror!\n");}//system("pause");return0;}308【问题描述】现在学生档案中经常采用等级评价,于是李老师想将百分制成绩转化为等级。李老师的成绩单上的成绩都是整数,他约定等级与百分制之间的对应关系如下:A:90~100B:80~89C:60~79D:0~59请编程将任意给定的分数转化为等级。【源程序】#include<stdio.h>#include<stdlib.h>main(){intx;printf("Inputthescore:");scanf("%d",&x);switch(x/10)//构造表达式{case10:printf("A\n");break;case9:printf("A\n");break;case8:printf("B\n");break;case7:printf("C\n");break;case6:printf("C\n");break;default:printf("D\n");break;}//system("pause");return0;}309机器人的移动问题(robot)【问题描述】在一个平面直角坐标系上,一个机器人处于某格点(x0,y0)处,格点的纵横坐标均为整数。有一个遥控器可以让机器人实现9种可能的运动方式,它们依次是:向左走一个单位;向右走一个单位;向上走一个单位;向下走一个单位;走到格点(x0,y0)关于x轴的对称点;走到格点(x0,y0)关于y轴的对称点;走到格点(x0,y0)关于原点的对称点;以格点(x0,y0)与原点的连线为轴,逆时针旋转90度;以格点(x0,y0)与原点的连线为轴,顺时针旋转90度。其中,以橫坐标x值增大为向右,以纵坐标y值增大为向上。现已知机器人的初始位置(x0,y0)以及遥控器此次发出的指令编号i(1≤i≤9),问机器人执行指令后所到的位置。输入:三个整数x0、y0、i,彼此之间用空格隔开。输出:两个整数x和y,表示机器人移动后所到位置的坐标为(x,y)。【源程序】#include<stdio.h>#include<stdlib.h>main(){intx0,y0,x,y,i;printf("Pleaseinputx0y0i\n");scanf("%d%d%d",&x0,&y0,&i);switch(i)//按指令编号分情况处理{case1:x=x0-1;y=y0;break;case2:x=x0+1;y=y0;break;case3:x=x0;y=y0+1;break;case4:x=x0;y=y0-1;break;case5:x=x0;y=-y0;break;case6:x=-x0;y=y0;break;case7:x=-x0;y=-y0;break;case8:x=-y0;y=x0;break;case9:x=y0;y=-x0;break;}printf("Thenewplaceis:%d%d\n",x,y);//system("pause");return0;}310解方程的困扰(equation)【问题描述】这几天,数学课上正在学习解一元二次方程。自然,这几天的数学作业都是解方程,里面有一元二次方程,也有一元一次方程,更有甚者,还有恒等式与矛盾式。数学老师希望同学们熟练地掌握求解方程的方法和技巧,所以留了上百道练习题。这下笑笑就惨了,他算了一下,即使他不睡觉也不可能完成那么多的作业。于是,笑笑找到了你,希望你能够编出一个程序帮助他完成解方程的任务。舍得庆幸的是,作业中的方程都已经化成了ax2+bx+c=0的形式(其中a,b,c均为整数)。输入:a,b,c三个整数,用空格隔开,表示所需求解的方程是ax2+bx+c=0。需要注意:a,b,c均有可能为零。输出:解这个方程的全过程,即对于解这个方程而言,笑笑在作业中所需写出的步骤与结果。要求最后的结果均保留小数点后4位。【源程序】#include<stdio.h>#include<stdlib.h>#include<math.h>intmain(void){intdelta,a,b,c;printf("Pleaseinputabc:\n");scanf("%d%d%d",&a,&b,&c);if(a!=0)//二次项系数非零,是一元二次方程{printf("Exponent2!\n");delta=b*b-4*a*c;printf("delta=b*b-4*a*c=%d\n",delta);if(delta<0)//一元二次方程的delta<0,无解printf("delta<0,noanswer!\n");elseif(delta==0)//一元二次方程的delta=0,有两个重根{printf("delta=0,twoequalanswers:\n");printf("x1=x2=-b/(2a)=%.4lf\n",(double)((-b)/(2*a)));}else//一元二次方程的delta>0,有两个不等根{printf("delta>0,twodifferentanswers:\n");printf("x1=(-b+sqrt(delta))/(2a)=%.4lf\n",\(double)((-b+sqrt(delta))/(2*a)));printf("x2=(-b-sqrt(delta))/(2a)=%.4lf\n",\(double)((-b-sqrt(delta))/(2*a)));}}else//否定的是a<>0,即二次项系数也为0if(b!=0)//一次项系数不为0{printf("Exponent1!\n");printf("Onlyoneanswer:x=-c/b=%.4lf\n",(double)(-c/b));}else//否定b<>0,即一次项系数也为0if(c!=0)//若常数项不为0,而等号右侧是0,矛盾printf("Wrong!Noanswer!\n");else//若常数项为0,而等号右侧也是0,恒等printf("Identity!\n");//system("pause");return0;}311数表读数(table)【问题描述】最近柯南被卷进阿笠博士发明的一个无聊的游戏中。柯南向来对博士的游戏没有好感,因为每一次的游戏都仿佛是给小学一年级学生准备的那样。这一天当然也不例外。阿笠博士画了一个9*9的靶形数表,每一个格子内都标有一个1到5之间的整数作为该格子的价值,而且,价值的颁很有规律,如图3-6所示。现在博士要考柯南:某行某列格子的价值是多少。于是,柯南找到了正在学习编程的你,希望用程序回答这一问题。输入:i和j,用一个空格隔开(i和j都是1到9之间的整数)。输出:第i行第j列格子的价值。【源程序】解法一:#include<stdio.h>#include<stdlib.h>main(){inti,j;printf("Pleaseinputij:\n");scanf("%d%d",&i,&j);switch(i)//按照行号分情况讨论{case1://1、9行case9:printf("1\n");break;case2://2、8行case8:if((j==1)||(j==9))printf("1\n");elseprintf("2\n");break;case3://3、7行,还要再用嵌套的case分析每一列case7:switch(j){case1:case9:printf("1\n");break;case2:case8:printf("2\n");break;default:printf("3\n");break;};break;case4:case6:switch(j){case1:case9:printf("1\n");break;case2:case8:printf("2\n");break;case3:case7:printf("3\n");break;default:printf("4\n");break;};break;case5:switch(j){case1:case9:printf("1\n");break;case2:case8:printf("2\n");break;case3:case7:printf("3\n");break;case4:case6:printf("4\n");break;default:printf("5\n");break;};break;}//system("pause");return0;}解法二:#include<stdio.h>#include<stdlib.h>main(){inti,j;printf("Pleaseinputij:\n");scanf("%d%d",&i,&j);if(i>5)i=10-i;//找橫向对称点if(j>5)j=10-j;//找纵向对称点if((i==1)||(j==1))printf("1\n");elseif((i==2)||(j==2))printf("2\n");elseif((i==3)||(j==3))printf("3\n");elseif((i==4)||(j==4))printf("4\n");elseprintf("5\n");//system("pause");return0;}解法三:#include<stdio.h>#include<stdlib.h>intmain(){inti,j,ans;printf("Pleaseinputij:\n");scanf("%d%d",&i,&j);if(i<10-i)ans=i;//取i和它的对称横坐标的最小值作为anselseans=10-i;if(j<ans)ans=j;//与纵坐标比较,求最小值ansif(10-j<ans)ans=10-j;//与对称纵坐标比较,最小值作为ansprintf("%d\n",ans);//system("pause");return0;}312写出下列程序的运行结果。#include<stdio.h>intmain(){longn;scanf("%d",&n);if(n>0)printf("%d\n",n);elseprintf("%d\n",-n);return0;}运行后输入:eq\o\ac(○,1)0eq\o\ac(○,2)-24eq\o\ac(○,3)4313写出下列程序的运行结果。#include<stdio.h>intmain(){longn;scanf("%d",&n);switch(n%5){case0:printf("%d\n",n);n=n+1;break;case1:printf("%d\n",n);n=n+1;break;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论