




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
针对做过去的一些通过率低的题做了一个World,大家可以
看看,不会的话可以问问我或者前面的同学,这些弄懂的话,考试把握也很大了ProblemE:一年中的第几天TimeLimit:1SecMemoryLimit:2MB
Submit:1873Solved:645
[Submit][Status][WebBoard]Description给出某个日期,判断这是当年的第几天,每年的1月1日是第1天,非闰年年份的12月31日是第365天。Input输入的第一个数为n,后接n个日期。日期用3个正整数按顺序表示年月日,中间用“-”连接。Output若输入的日期为错误,则输出“errordate!”否则输出这个日期是本年的第几天。每个日期对应一行输出。SampleInput901-0106-22TOC\o"1-5"\h\z12-3102-2907-1812-0202-2909-3112-311173365errordate!19933660errordate!366HINT抽象出判断闰年和判断日期合法性的两个函数,能够大大降低程序设计过程中的思维复杂程度。AppendCode这题除了一次一次的加,可以用更简便的方法哦~#include<stdio.h>intmain(){intyear,month,day;inti,sum;intM[15]={0,31,0,31,30,31,30,31,31,30,31,30,31};scanf("%d-%d-%d",&year,&month,&day);if((year%4==0&&year%100!=0)||(year%400==0))M[2]=29;elseM[2]=28;for(i=1,sum=0;i<month;i++)sum=sum+M[i];printf("%d",sum+day);}ProblemK:学生成绩统计表TimeLimit:1SecMemoryLimit:16MB
Submit:629Solved:268
[Submit][Status][WebBoard]Description在学校里经常见到的成绩表,表的每行是一个学生的成绩,每列是各个科目的成绩。如下表所示。
nameSCITECHCOMCS106SE309CS101Tom88,776655: 44:33Jerry5010Q6010Q5Q100Zhang39095.56075B2IBLi43845&2297A85VFang583:75&3:36: 9933.3Zhao6999999.597.542100Liu7808080.581.582.583VFangS765432Song91020: 3040: 5060MalO7479.573717077你的任务是:输入这样的成绩表,统计出每个学生的总成绩和各个科目的平均成绩。如下表所示。nameSCITECHCOMCS106SE309CS101sunTom887766554=433363Jerry5010060100501004=60Zhang39095.560758218420.5Li43845&2297485333VFang5887563369933.3394.3Zhao6999999.597.54=2100537Liu7B08080.581.582,583487.5VFangS76543227Song9102030405060210MalO7479.573717077444.5average62.467.759,958.959,659,1Input第一行为两个整数m,n,0<m<=50、0<n<=10,表示有m个学生和n个成绩。后面有皿+1行n+1列的一个表,表的第1行和第1列都是不含空白符的字符串,表的各列用若干空格分隔,表的各行用一个回车分隔。第1行的2〜n+1列是各个科目的名字。第2〜m+1行1列为学生姓名。第2行2列开始到第m+1行、n+1列为各学生的各科目成绩(浮点数)。Output输出为一张表,表的大小为m+2行、n+2列,其中前m+1行n+1列的数据与输入相同。表的最右侧一列为学生各科目成绩的总和,该列第1行的标题是“sum”。表的最下面一行为各科目的所有学生平均成绩,该行的第1列标题是“average”。表的第1列输出为8个字符左对齐,后面每列为5个字符右对齐,两列之间有2个空格。表的所有数据项(除第1行和第1列外)都输出为保留1位小数。表的每行用一个回车分隔,表的最右边一列的数据项后没有空格。请注意:表的最右下角那项没有定义,不输出!最后1行的输出至最右一个科目的平均分结束,该行最后有回车。SampleInput106
nameSCITECHCOMCS106SE309CS101Tom887766554433Jerry501006010050100Zhang39095.560758218Li4384562297485Wang5887563369933.3Zhao6999999.597.542100Liu7808080.581.582.583Wang8765432Song9102030405060Ma107479.573717077SampleOutputnameSCITECHCOMCS106SE309CS101sumTom88.077.066.055.044.033.0363.0Jerry50.0100.060.0100.050.0100.0460.0Zhang390.095.560.075.082.018.0420.5Li438.045.062.029.074.085.0333.0Wang588.075.063.036.099.033.3394.3Zhao699.099.099.597.542.0100.0537.0Liu780.080.080.581.582.583.0487.5Wang87.06.05.04.03.02.027.0Song910.020.030.040.050.060.0210.0Ma1074.079.573.071.070.077.0444.5average62.467.759.958.959.659.1HINTAppendCode这题的会了的话,输出格式之类的问题应该没有问题了。这里的话,给一种最简便的方法吧,这题还可以使用结构体做,更加直观#include<stdio.h>#include<string.h>#include<stdlib.h>intmain()intm,n;
chara[60][60];charb[60][60];doublec[60][60];doublesum[60];doubleaverage[60],avsum[60];inti,j,k,l;scanf("%d%d",&m,&n);for(i=0;i<=n;i++)scanf("%s”,a[i]);for(i=1;i<=m;i++){scanf("%s”,b[i]);for(j=1,sum[i]=0;j<=n;j++){scanf("%lf”,&c[i][j]);sum[i]=c[i][j]+sum[i];}}for(j=1;j<=n;j++){for(i=1,avsum[i]=0;i<=m;i++)avsum[j]=avsum[j]+c[i][j];average[j]=1.0*avsum[j]/m;}printf("%-8s”,a[0]);for(i=1;i<=n;i++){printf("%5s”,a[i]);}printf("%5s","sum");printf("\n");for(i=1;i<=m;i++){printf("%-8s",b[i]);for(j=1;j<=n;j++)printf("%5.1f",c[i][j]);printf("%5.1f”,sum[i]);printf("\n");}printf("%-8s","average");for(i=1;i<n;i++)printf("%5.1f”,average[i]);printf("%5.1f”,average[n]);ProblemF:编写函数:素数的判定(AppendCode)TimeLimit:3SecMemoryLimit:16MB
Submit:1728Solved:570
[Submit][Status][WebBoard]Description一个正整数n是素数:除了1和n不能被其他数整除。1不是素数。编写一个函数用于判定一个正整数是不是素数。用C语言实现:append.c中函数原型为intis_primer(intnum);功能:若num为素数返回1,否则返回0。用C++实现:append.cc中函数原型为boolisPrimer(intnum);功能:若num为素数返回true,否则返回false。函数的调用格式见“AppendCode”。Input每行输入一个正整数n。n不会超出int类型数据范围。输入最多不超过20个正整数。Output若n为素数,输出“YES”,否则输出“NO”。SampleInput1234567892147483647NOYES
YESNOYESNOYESNONOYESHINT如果你是按照从小到大的顺序选择除数去判定一个数,那么你超时的原因多半是用了太多不必要的除数。程序需要优化,减少循环的次数。AppendCodeappend.c,append.cc经典的素数判定~~~注意判定的方法!~#include<stdio.h>#include<math.h>intis_primer(intnum);intis_primer(intnum){inti;if(num==1)return0;elseif(num==2)return1;elseif(num%2==0)return0;elsefor(i=2;i<=sqrt(num);i++){if(num%i==0){return0;break;}}if(i>sqrt(num))return1;}}intmain(){intnum;while(scanf("%d”,&num)!=EOF){if(is_primer(num))puts("YES");elseputs("NO");}return0;}ProblemD:只有一个二元运算符的表达式运算TimeLimit:1SecMemoryLimit:2MB
Submit:4119Solved:1563
[Submit][Status][WebBoard]Description编程序读入并计算只有一个二元运算符的表达式的值。用到的二元运算符有:“+”、"-”、"*”、"/”、"%”,与C语言的语法一致。Input每行输入一个表达式,格式为:二个整型的操作数a和b,中间用一个符号分开,这个符号就是运算符。测试样例不存在除数为0的情况。输入以a和b为0,且用一个空格分开结束。Output每行对应输入的运算符为“+”、"-”、"*”、"/”、"%”,则计算a+b、a-b、a*b、a/b、a%b的值;否则输出“invalidop”。SampleInput33+58*92.21-617/39%300SampleOutput3872invalidop-550HINT教材上有非常相似的例题可以参考。AppendCode这个没什么说的,看看吧,练习判断的#include<stdio.h>intmain()inta,b;
charc;for(;scanf("%d%c%d",&a,&c,&b);){if(a==0&&c==''&&b==0)break;else{if(c=='+')printf("%d\n",a+b);elseif(c=='-')printf("%d\n",a-b);elseif(c=='*')printf("%d\n〃,a*b);elseif(c=='/')printf("%d\n",a/b);elseif(c=='%')printf("%d\n”,a%b);elseprintf("invalidop\n");}}}ProblemD:摄氏——华氏温度转换表TimeLimit:1SecMemoryLimit:2MB
Submit:5380Solved:1412
[Submit][Status][WebBoard]Description已知华氏温度F,转换为摄氏温度C的公式为C=(F-32)*5/9。输出给定范围(从low到high)和步长(step)的摄氏一华氏温度转换表Input第1行若为“C->F”表示输出:摄氏一华氏温度转换表,若为“F->C”表示输出:华氏一氏温度转换表。第2、3行为两个整数:high和low,其值在-100到200之间。第4行为step,step精确到小数点后1位。Output
输出第一行为C和F,分别表示摄氏和华氏,与小数点对齐。若输出摄氏一华氏温度转换表,则C在前、F在后;反之,则输出华氏一氏温度转换表。从输出的第2行开始为从温度low到温度high(包括low和high)的转换表,温度输出精确到小数点后1位,表格被“->”分为两个宽度相同的部分,其它的测试样例也不会给出超出宽度的数据,格式详见sample。SampleInputC->F-10402.5SampleOutputC->F-10.0->14.0-7.5->18.5-5.0->23.0-2.5->27.50.0->32.0->36.55.0->41.0->45.510.0->50.0->54.515.0->59.0->63.520.0->68.0->72.525.0->77.0->81.530.0->86.0->90.535.0->95.0->99.540.0->104.0HINT输出格式可以通过sample分析出来,因为两栏的总宽度是固定的。一个隐藏的陷阱是step是浮点数,某些浮点数是无法精确存储的,因此经过一定量的计算后这个误差会影响到浮点数的相等性判断,需要加上精度控制。AppendCode这个精度控制的,需要好好看看~!作业做出来的人不多!
#include<stdio.h>intmain(){doublelow,high,step,i,C,F;chara,b;scanf("%c%*c%*c%c",&a,&b);if(a=='C'&&b=='F'){scanf("%lf%lf%lf”,&low,&high,&step);printf("C-> F\n");for(C=low;C<=high+0・01;C=C+step){F=(double)9/5*C+32;printf("%5.1f->%6.1f\n",C,F);}}if(a=='F'&&b=='C'){scanf("%lf%lf%lf",&low,&high,&step);printf("F-> C\n");for(F=low;F<=high+0.01;F=F+step){
C=((F-32))*((double)5/9);printf("%5.1f->%6.1f\n",F,C);}}return0;}ProblemE:1!+2!+•,,+k!=?TimeLimit:1SecMemoryLimit:2MB
Submit:4114Solved:1376
[Submit][Status][WebBoard]Description求1!+2!+…+k!=?,并判断是否溢出。Input输入为一个正整数k。Output若1!+2!+・・・+k!的值溢出unsigned(无符号整型)的范围输出"overfloww,否则输出1!+2!+・・・+k!的结果。SampleInput5SampleOutput153HINT如果一个值溢出某个变量的数据类型存储范围,但仍然存入该变量,那么存入该变量中的值实际上是什么?AppendCode这个题当年坑了多少人。。。#include<stdio.h>
intmain(){intk,i,j,m,sum=0;scanf("%d”,&k);if(k>=13)printf("overflow");else{for(i=1;i<=k;i++){for(j=1,m=1;j<=i;j++)m=m*j;sum=sum+m;}if(sum>0)printf("%d",sum);}}ProblemF:十进制整数转二进制TimeLimit:1SecMemoryLimit:2MB
Submit:3274Solved:1617
[Submit][Status][WebBoard]Description给出一个十进制的非负整数x,x<=216把它转换成二进制数输出。Input输入为多行,每行一个整数乂,至读入EOF结束。
Output每行输出x对应的二进制数值。SampleInput0133365535SampleOutput01111000011111111111111111HINT本题有多种解法:可以用循环迭代对2的除法和取余操作,不过处理的顺序与输出顺序相反,需要利用数组存储;用取对数或从大到小减去2的整数次幂的方法计算与输出顺序是相同的;也可以用printf()把十进制的数值处理成十六进制,然后1位十六进制转4位二进制;也可以用位运算处理。AppendCode求2进制的方法至少要会一个,这个是逆序输出法#include<stdio.h>intmain(){inta[100];intb,i,j;while(scanf("%d",&b)!=EOF){if(b==1)printf("1\n");else
for(i=0;;i++){a[i]=b%2;b=b/2;if(b>=2)continue;if(b==1)printf("1”);{for(j=i;j>=0;j--)printf("%d",a[j]);}printf("\n");break;}}}ProblemC:数组去重TimeLimit:1SecMemoryLimit:128MB
Submit:1366Solved:764
[Submit][Status][WebBoard]Description现有一个非减序排序的一维数组,其中有若干元素是重复的。编程将重复元素
删除掉若干个,仅保留1个,使数组中没有重复元素。Input输入有多行。第一行M>0,表示之后有M行输入。之后的M行输入是若干个一维数组。每行的第一个数据0<N<=1000,表示该数组有N个整数。其后是按照非减序排好的N个整数,每个元素均在int类型的表示范围之内。每行的所有数据两两之间用一个空格隔开。Output输出有M行,每行输出与上述M组输入一一对应,是其输入数组去重后的结果。输出的数据需按照递增序排列,且每两个数组元素之间用一个空格隔开。SampleInput21000000133441012345678910SampleOutput01342345678910HINTAppendCode这个也看看吧~!我写的比较麻烦,有好的想法也可以传到群里#include<stdio.h>intmain(){intN,n,i,j,k,t;inta[2000]={-1};scanf("%d”,&N);for(i=1;i<=N;i++)
a[0]=-1;scanf("%d”,&n);for(j=1;j<=n;j++){scanf("%d”,&k);a[k]=k;}if(a[0]==0){printf("0");for(j=1;j<=1005;j++)if(a[j]!=0)printf("%d”,a[j]);}if(a[0]!=0){for(j=1;j<=1005;j++)if(a[j]!=0){printf("%d",a[j]);break;}for(t=j+1;t<=1005;t++)if(a[t]!=0)printf("%d”,a[t]);
printf("\n");for(j=0;j<=1005;j++)a[j]=0;}}ProblemF:MatrixProblem(III):ArrayPracticeTimeLimit:1SecMemoryLimit:4MB
Submit:2158Solved:581
[Submit][Status][WebBoard]Description求两个矩阵A、B的乘积C=AB。根据矩阵乘法的定义,只有A的列数和B的行数相同才能相乘。可以确保所有运算结果都在int类型的范围之内。Input输入数据为多个矩阵(最少2个),每个矩阵以两个正整数m和n开始,满足0<m,n<=100,接下来为一个m行n列的矩阵入。当输入的m和n均为0时,表示输入数据结束。Output对输入的矩阵两两相乘:第1个和第2个相乘、第1个和第2个相乘的结果和第3个相乘……按顺序输出矩阵相乘的结果:每行两个元素之间用一个空格分开,每行最后一个元素之后为一个换行,在下一行开始输出矩阵的下一行。若前k个矩阵相乘的结果和第k+1个矩阵无法相乘(即不满足矩阵乘法定义),则输出“Notsatisfiedthedefinitionofmatrixmultiplication!"。然后用第
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 德国学前教育概述与发展
- 近视防控成人课件下载
- 学家庭教育做智慧父母
- 山东泰安市岱岳区招聘教师真题2024
- 2024年中国农业银行内蒙古自治区分行招聘考试真题
- 2024年深圳市深汕人民医院医疗卫生人员招聘考试真题
- 健康食品安全教育
- 2025办公室租赁合同范本3
- 以温暖为舟 以温暖为舟-做一名有温暖的班主任 课件-2024-2025学年高一下学期班主任工作经验分享
- 比斯拉马语中的传统纺织词汇分析论文
- 农产品食品检验员(中级)技能等级认定考试题库(含答案)
- 发达资本主义国家的经济与政治课件
- 肥厚型梗阻性心肌病与麻醉1课件
- 注塑成型工艺流程图
- 工作分析与应用(第4版)参考答案
- 新版三全新体系管理目标指标考核及分解QES
- (完整)ICU进修汇报ppt
- 物业项目报价表模板
- 病理生理学习题集
- 2005雷克萨斯gs430gs300原厂维修手册中文sa
- 入团志愿书(2016版本)(可编辑打印标准A4) (1)
评论
0/150
提交评论