c语言上机答案.doc_第1页
c语言上机答案.doc_第2页
c语言上机答案.doc_第3页
c语言上机答案.doc_第4页
c语言上机答案.doc_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

A+B问题Time Limit:1000MS Memory Limit:10000KTotal Submit:1104 Accepted:788 Description 计算两个10以内的两个整数的和。Input 用空格分开的两个整数a和b(0a,b10)。Output 输出ab的和。Sample Input 1 2Sample Output 3#include int main()int a,b,sum;scanf(%d %d,&a,&b);sum=a+b;printf(%dn,sum);return 0;求平均年龄Time Limit:1000MS Memory Limit:65536KTotal Submit:1121 Accepted:701 Description 班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。Input 第一行有一个整数n(1n100),表示学生的人数。其后n行每行有1个整数,取值为15到25。Output 输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。Sample Input 21817Sample Output 17.50#include int main()int n,i,sum=0,old100;float ave;scanf(%d,&n);for(i=0;in;i+)scanf(%d,&oldi);for(i=0;in;i+)sum+=oldi;ave=sum*1.0/n;printf(%0.2fn,ave);return 0;数字求和Time Limit:1000MS Memory Limit:65536KTotal Submit:990 Accepted:671 Description 给定一个正整数a,以及另外的5个正整数,问题是:这5个整数中,小于a的整数的和是多少?Input 输入一行,只包括6个小于100的正整数,其中第一个正整数就是a。Output 输出一行,给出一个正整数,是5个数中小于a的数的和。Sample Input 10 1 2 3 4 11Sample Output 10#include int main()int sum=0,num6,small6,i;for(i=0;i6;i+)scanf(%d,&numi);for(i=1;i6;i+)if(numinum0)sum+=numi;printf(%dn,sum);return 0;陶陶摘苹果Time Limit:1000MS Memory Limit:65536KTotal Submit:948 Accepted:610 Description 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。Input 输入包括两行数据。第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。Output 输出文件包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。Sample Input 100 200 150 140 129 134 167 198 200 111110Sample Output 5#include int main()int chair=30,count=0,tao,hight10,all,i;for(i=0;i10;i+)scanf(%d,&highti);scanf(%d,&tao);all=tao+chair;for(i=0;i=highti)count+;elseif(all=highti)count+;printf(%dn,count);return 0;奖金发放Time Limit:1000MS Memory Limit:65536KTotal Submit:913 Accepted:511 Description 企业每个月发放的奖金根据当月利润进行提成。利润I低于或等于10万元的,奖金可提10;利润高于10万元,低于20万元(100000I200000)时,低于10万元的部分按10提成,高于10万元的部分,可提成7.5;200000I400000时,低于20万元的部分仍按上述办法提成(下同)。高于20万的部分按5提成;400000I600000时,高于40万元的部分按3提成;600000I1000000时,高于60万元的部分按1.5提成;I1000000时,超过100万元的部分按1提成。 现在请你编写一段程序,读取一年中每个月的利润,计算并输出这一年内的应发奖金总额。Input 输入数据一共有12行,每一行都是一个正整数,其中第i(1i12)行的整数表示第i个月的利润(以元为单位)。每个整数都不超过2000000。Output 输出只有一行,即该企业在这一年内应该发放的奖金总额(以元为单位),要求精确到小数点后两位。Sample Input 40000010600050000580000620000103000017000001220006400007600060000540000Sample Output 287000.00#include int main()int i,n,a12;float w,m=0;for(i=0;i12;i+)scanf(%ld,&ai); for(i=0;i12;i+)n=ai/100000;switch(n)case 0:w=ai*0.1;break;case 1:w=(ai-100000)*0.075+10000;break;case 2:case 3:w=(ai-200000)*0.05+17500;break;case 4:case 5:w=(ai-400000)*0.03+27500;break;case 6:case 7:case 8:case 9:w=(ai-600000)*0.015+33500;break;case 10:default:w=(ai-1000000)*0.01+39500;break;m=m+w;printf(%.2fn,m);return 0;鸡兔同笼ITime Limit:1000MS Memory Limit:65536KTotal Submit:1240 Accepted:540 Description 一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物?Input 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,每行一个正整数a(a32768)。Output 输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开。 如果没有满足要求的答案,则输出两个0。Sample Input 2320Sample Output 0 05 10#include int main()int n,a,i;scanf(%d,&n);for(i=0;in;i+)scanf(%d,&a);if(a%2!=0)printf(0 0n);elseif(a%4!=0)printf(%d %dn,(a/4+1),(a/2);elseprintf(%d %dn,(a/4),(a/2);return 0;成绩评定Time Limit:1000MS Memory Limit:65536KTotal Submit:1059 Accepted:506 Description 现在有若干个同学的期末考试成绩,我们需要根据下面的规则根据每个同学考试成绩所在的分数段对其成绩进行评定,请编写程序完成这个任务。成绩评定规则如下: 若成绩在100分和90分(含100分和90分)之间,则判定为“A”; 若成绩在90分和80分(含80分)之间,则判定为“B”; 若成绩在80分和60分(含60分)之间,则判定为“C”; 若成绩在60分以下0分以上(含0分),则判定为“D”; 否则无法判定,给出错误提示。Input 第一行是一个整数n,表示需要评定的成绩的个数。 接下来有n行输入,每行都是一个浮点数,表示某个同学的成绩。Output 对应于每个同学的成绩,输出一行表示判定结果,对于无法判定的成绩,输出一行“Invalid”。Sample Input 48412845.397Sample Output BInvalidDA#include int main()int n,i,m;float grade;scanf(%d,&n);for(i=0;in;i+)scanf(%f,&grade);if(grade100&grade110)printf(Invalidn);elsem=grade/10;switch(int)m)case 10:case 9:printf(An);continue;case 8:printf(Bn);continue;case 7:case 6:printf(Cn);continue; case 5: case 4: case 3: case 2: case 1: case 0:printf(Dn);continue; default :printf(Invalidn);continue;return 0;鸡兔同笼IITime Limit:1000MS Memory Limit:65536KTotal Submit:1369 Accepted:495 Description 笼子中有若干只鸡和若干只兔子,现在只知道笼子中总共有a个头和b只脚(a和b都是非负整数),请你编写一个程序计算笼子中分别有多少只鸡和多少只兔。笼子中鸡的数量和兔的数量都必须是一个非负整数,否则就是无效答案。Input 输入只有一行,包括两个非负整数,分别表示笼中头的数量a和脚的数量b。Output 输出也只有一行,包括用空格分开的两个整数,分别表示笼中鸡的数量和兔的数量。若为无效答案则输出一行“Error”。Sample Input 21 58Sample Output 13 8#include int main()int a,b,chicken,rabbit;scanf(%d %d,&a,&b);if(b%2!=0) printf(Errorn);else rabbit=b/2-a;chicken=a-rabbit; if(rabbit0|chicken0) printf(Errorn);else printf(%d %dn,chicken,rabbit);return 0;求分数序列和Time Limit:1000MS Memory Limit:65536KTotal Submit:846 Accepted:491 Description 有一个分数序列2/1,3/2,5/3,8/5,13/8,21/13, ,求这个分数序列的前n项之和。Input 输入有一行:正整数n(0n500)。Output 输出有一行:分数序列中前n项的和,要求精确到小数点后4位。Sample Input 99Sample Output 160.4849#include int main()int n,i;double f1=1.0,f2=1.0,f3,sum=0.0;scanf(%d,&n);for(i=0;in;i+)f3=f1+f2;sum+=f3/f2;f1=f2;f2=f3;printf(%.4lfn,sum);return 0;质数判定Time Limit:1000MS Memory Limit:65536KTotal Submit:833 Accepted:503 Description 质数被定义为一个不能除了1和它本身整除的正整数。你的任务就是要编写一个程序,判定任意一个大于等于2的正整数是否是质数。Input 输入只有一行,即要判定的这个正整数a(2a200)。Output 输出只有一行,若a是质数,输出“Y”,否则输出“N”。Sample Input 53Eclipse实战视频教程 全9部分wmv格式下载/thread-257719-1-1.htmlSample Output Y#include #include int main()int a,i;scanf(%d,&a);for(i=2;isqrt(a)printf(Yn);return 0;棋盘上的距离Time Limit:1000MS Memory Limit:65536KTotal Submit:1092 Accepted:382 Description 国际象棋的棋盘是黑白相间的8 * 8的方格,棋子放在格子中间。如下图所示: 王、后、车、象的走子规则如下: 王:横、直、斜都可以走,但每步限走一格。 后:横、直、斜都可以走,每步格数不受限制。 车:横、竖均可以走,不能斜走,格数不限。 象:只能斜走,格数不限。 写一个程序,给定起始位置和目标位置,计算王、后、车、象从起始位置走到目标位置所需的最少步数。Input 第一行是测试数据的组数t(0t20)。以下每行是一组测试数据,每组包括棋盘上的两个位置,第一个是起始位置,第二个是目标位置。位置用“字母-数字”的形式表示,字母从“a”到“h”,数字从“1”到“8”。Output 对输入的每组测试数据,输出王、后、车、象所需的最少步数。如果无法到达,就输出“Inf”。Sample Input 2a1 c3f5 f8Sample Output 2 1 2 13 1 1 Inf#include #include using namespace std;double king(double a,double b,double c,double d)/皇帝 if(a=c&b=d) return 0;/棋子就在原地的情况 if(a=c|fabs(b-a)=fabs(d-c) return fabs(d-b); else if(b=d) return fabs(c-a); else return fabs(a-c)+fabs(d-b);double queen(double a,double b,double c,double d)/皇后 if(a=c&b=d) return 0;/棋子就在原地的情况 if(a=c|b=d|fabs(b-a)=fabs(d-c) return 1;/位置处于皇后所在的十字线上或斜线上 else return 2;double car(double a,double b,double c,double d)/车 if(a=c&b=d) return 0;/棋子就在原地的情况 if(a=c|b=d) return 1;/位置处于车所在的十字线上 else return 2;double ele(double a,double b,double c,double d)/象 if(a=c&b=d) return 0;/棋子就在原地的情况 if(fabs(b-a)=fabs(d-c) return 1;/在斜线上 else if(int(fabs(a-c-b+d)%2!=0)/当处于不可到的情况下 return -1; else return 2;int main() int i; char a,c; double b,d; cini; while (i-) double x1,x2; cinabcd; x1=(a-48)-0;/将字符坐标转化为数字 x2=(c-48)-0; coutking(x1,b,x2,d) queen(x1,b,x2,d) =0) cout ele(x1,b,x2,d)endl; else cout Infendl; return 0;#include #include void main()int nCases,i;scanf(%d,&nCases);for(i=0;inCases;i+)char begin5,end5;scanf(%s %s,begin,end);int x,y;x=abs(begin0-end0);y=abs(begin1-end1);if(x=0&y=0)printf(0 0 0 0n);elseif(xy)printf(%d,y);elseprintf(%d,x);if(x=y|x=0|y=0)printf( 1);elseprintf( 2);if(x=0|y=0)printf( 1);elseprintf( 2);if(abs(x-y)%2!=0)printf( Infn);elseif(x=y)printf( 1n);elseprintf( 2n);计算书费Time Limit:1000MS Memory Limit:65536KTotal Submit:744 Accepted:486 Description 下面是一个图书的单价表: 给定每种图书购买的数量,编程计算应付的总费用。Input 输入第一行包含一个正整数k(0k100),表示有k组测试数据;接下来k行,每行包含一组测试数据。每组测试数据包含10个整数(大于等于0,小于等于100),分别表示购买的计算概论、数据结构与算法、数字逻辑、C+程序设计教程、人工智能、计算机体系结构、编译原理、操作系统、计算机网络、JAVA程序设计的数量(以本为单位)。每两个整数用一个空格分开。Output 对于每组测试数据,输出一行。该行包含一个浮点数f,表示应付的总费用。精确到小数点后两位。Sample Input 21 5 8 10 5 1 1 2 3 43 5 6 3 100 1 1 0 1 0Sample Output 2140.204427.80Sample Result: Source POJ:2675#include #include int main() int i,j,k,book10010; double sum,price10=28.9,32.7,45.6,78,35,86.2,27.8,43,56,65; scanf(%d,&k); for(i=0;ik;i+) sum=0.0; for(j=0;j10;j+) scanf(%d,&bookij); sum+=bookij*pricej; printf(%.2fn,sum); return 0; 打印极值点下标Time Limit:1000MS Memory Limit:65536KTotal Submit:854 Accepted:424 Description 在一个整数数组中,对于下标为i的整数,如果它大于所有它相邻的整数,或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。Input 有2n+1行输入:第一行是要处理的数组的个数n;对其余2n行,第一行是此数组的元素个数k(3k80),第二行是k个整数,每两个整数之间用空格分隔。Output 输出为n行:每行对应于相应数组的所有极值点下标值,下标值之间用空格分隔。Sample Input 31010 12 12 11 11 12 23 24 12 121512 12 122 112 222 211 222 221 76 36 31 234 256 76 761512 14 122 112 222 222 222 221 76 36 31 234 256 76 73Sample Output 0 72 3 4 5 6 10 120 2 3 10 12 14Sample Result: Source POJ:2691#include int main()int i,j,n,arr180,arr28080;scanf(%d,&n);for(i=0;in;i+)scanf(%d,&arr1i);for(j=0;jarr1i;j+)scanf(%d,&arr2ij);if(arr2i0arr2i1)printf(0 );for(j=1;jarr1i-1;j+)if(arr2ijarr2ij+1&arr2ijarr2ij+1&arr2ijarr2ij-1)printf(%d ,j);if(arr2ijarr2ij-1)printf(%d,j);printf(n);return 0;肿瘤检测Time Limit:1000MS Memory Limit:65536KTotal Submit:947 Accepted:418 Description 一张CT扫描的灰度图像可以用一个N*N(0N100)的矩阵描述,矩阵上的每个点对应一个灰度值(整数),其取值范围是0-255。我们假设给定的图像中有且只有一个肿瘤。在图上监测肿瘤的方法如下:如果某个点对应的灰度值小于等于50,则这个点在肿瘤上,否则不在肿瘤上。我们把在肿瘤上的点的数目加起来,就得到了肿瘤在图上的面积。任何在肿瘤上的点,如果它是图像的边界或者它的上下左右四个相邻点中至少有一个是非肿瘤上的点,则该点称为肿瘤的边界点。肿瘤的边界点的个数称为肿瘤的周长。现在给定一个图像,要求计算其中的肿瘤的面积和周长。Input 输入第一行包含一个正整数N(0N100),表示图像的大小;接下来N行,每行包含图像的一行。图像的一行用N个整数表示(所有整数大于等于0,小于等于255),两个整数之间用一个空格隔开。Output 输出只有一行,该行包含两个正整数,分别为给定图像中肿瘤的面积和周长,用一个空格分开。Sample Input 699 99 99 99 99 9999 99 99 50 99 9999 99 49 49 50 5199 50 20 25 52 9940 50 99 99 99 9999 99 99 99 99 99Sample Output 9 8Sample Result: Source POJ:2677#include int main()int i,j,N,oncology100100,area=0,girth=0;scanf(%d,&N);for(i=0;iN;i+)for(j=0;jN;j+)scanf(%d,&oncologyij);if(oncology00=50)area+;girth+;if(oncology0N-1=50)area+;girth+;if(oncologyN-10=50)area+;girth+;if(oncologyN-1N-1=50)area+;girth+;for(i=1;iN-1;i+)if(oncologyi0=50)area+;girth+;if(oncologyiN-1=50)area+;girth+;for(j=1;jN-1;j+)if(oncology0j=50)area+;girth+;if(oncologyN-1j=50)area+;girth+;for(i=1;iN-1;i+)for(j=1;jN-1;j+)if(oncologyij50|oncologyi+1j50|oncologyij-150|oncologyij+150)girth+;printf(%d %dn,area,girth);return 0;肿瘤面积Time Limit:1000MS Memory Limit:65536KTotal Submit:771 Accepted:374 Description 在一个正方形的灰度图片上,肿瘤是一块矩形的区域,肿瘤的边缘所在的像素点在图片中用0表示。其它肿瘤内和肿瘤外的点都用255表示。现在要求你编写一个程序,计算肿瘤内部的像素点的个数(不包括肿瘤边缘上的点)。已知肿瘤的边缘平行于图像的边缘。Input 只有一个测试样例。第一行有一个整数n,表示正方形图像的边长。其后n行每行有n个整数,取值为0或255。整数之间用一个空格隔开。已知n不大于100。Output 输出一行,该行包含一个整数,为要求的肿瘤内的像素点的个数。Sample Input 5255 255 255 255 255255 0 0 0 255255 0 255 0 255255 0 0 0 255255 255 255 255 255Sample Output 1Sample Result: Source POJ:2713#include int main() int n, i, j,Xsta=100,Ysta=100,Xend=0,Yend=0,oncology100100; scanf(%d, &n); for(i=0;in;i+) for(j=0;jn;j+) scanf(%d, &oncologyij); if(oncologyij=0) if(iXsta)|(jXend)|(jYend) Xend=i; Yend=j; printf(%dn, (Xend-Xsta-1)*(Yend-Ysta-1); return 0;两倍Time Limit:1000MS Memory Limit:65536KTotal Submit:739 Accepted:363 Description 给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍。 比如给定1 4 3 2 9 7 18 22,得到的答案是3,因为2是1的两倍,4是2个两倍,18是9的两倍。Input 输入包括多组测试数据。每组数据包括一行,给出2到15个两两不同且小于100的正整数。每一行最后一个数是0,表示这一行的结束,这个数不属于那2到15个给定的正整数。输入的最后一行只包括一个整数-1,这行表示输入数据的结束,不用进行处理。Output 对每组输入数据,输出一行,给出有多少个数对满足其中一个数是另一个数的两倍。Sample Input 1 4 3 2 9 7 18 22 02 4 8 10 07 5 11 13 1 3 0-1Sample Output 320Sample Result: Source POJ:2807#include int main()int twice10016,i=0,j,k,m,count,temp;for(j=0;j16;j+)scanf(%d,&twiceij);if(twiceij=-1)break;if(twiceij=0)i+;temp=j;j=-1;count=0;for(m=0;mtemp;m+)for(k=m+1;ktemp;k+)if(twicei-1m*2=twicei-1k|twicei-1k*2=twicei-1m)count+;printf(%dn,count);return 0; 星号三角形Time Limit:1000MS Memory Limit:65536KTotal Submit:706 Accepted:471 Description 编写一个程序输出一个由n行星号“*”构成的三角形。Input 输入只有一行,即由星号构成的三角形的行数n。Output 输出由星号构成的n行三角形,同一行中每两个星号之间用空格分开,形状如输出示例所示。Sample Input 5Sample Output * * * * * * * * * * * * * *Sample Result: Hint 最后一行星号前面不要有空格,否则会造成Presentation Error。Source 杨珂#include int main()int m,n,i,j;scanf(%d,&n);for(i=0;in;i+)m=n;for(j=0;j=m-i-1)printf(* );elseprintf( );printf(n);return 0;字母三角形Time Limit:1000MS Memory Limit:65536KTotal Submit:522 Accepted:376 Description 编写程序,输出一个由n行大写字母组成的三角形。Input 输入只有一个正整数n(1n20),表示要输出的字母三角形的行数。Output 输出一个由n行大写字母构成的三角形,如输出示例所示。同一行中每两个大写字母之间用一个空格分开。保证每行的第一列不全为空格。Sample Input 4Sample Output A B A B C B A B CD C B A B C DSample Result: Hint 最后一行字母前面不要有空格,否则会造成Presentation Error。Source 杨珂#include int main()int m,n,i,j,k,t;scanf(%d,&n);char ch=A;for(i=0;in;i+)m=n;for(j=2;j=n-i;j+)printf( );for(j=0;jn;j+)if(j=m-i-1)printf(%c ,ch);ch+=1;for(k=j+1,t=1;kn;k+,t+)if(ch-t65)break;elseprintf(%c ,ch-t-1);for(k=n+1,t=ch-A;k=n+i;k+,t-)printf(%c ,ch-t+1);printf(n);return 0;倒置的字母三角形Time Limit:1000MS Memory Limit:65536KTotal Submit:424 Accepted:327 Description 请你编写一段程序,输出一个由指定行数的大写字母构成的倒置三角形,这个字母三角形必须满足下列条件(请参照示例): 倒置三角形的最下角顶点是固定字符A; 倒置三角形的中心线上的字符从下到上依次是A、B、C、; 倒置三角形每一行上的字母必须按中心线左右对称:在中心线左侧,字母依次减小,在中心线右侧,字母依次增大; 倒置三角形每一行上的每两个字母之间用一个空格分开,第一行的第一个字母前没有空格。 Input 输入只有一个整数,即倒置字母三角形的行数n(1n10)。Output 输出指定行数的倒置字母三角形。Sample Input 4Sample Output G F E D E F G E D C D E C B C ASample Result: Hint 注意观察每一行中大写字母的变化规律。 第一行是数字三角形的底边,在这一行的第一个字母前不应该输出任何空格。Source 杨珂#include int main()int a,b,c,i,j,k,m,n,t;char ch=A;scanf(%d,&n);c=k=n;b=2*n-1;for(i=0;in;i+,k-)m=(k-1)*2;for(a=0;ai;a+)printf( );for(j=a;jn;j+)printf(%c ,ch+m);m-;for(a=n+1,t=1;a=b;a+,t+)printf(%c ,ch+c-1+t

温馨提示

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

评论

0/150

提交评论