山东科技大学OJ部分题目记答案

上传人:t****d 文档编号:172648795 上传时间:2022-12-05 格式:DOC 页数:28 大小:152KB
收藏 版权申诉 举报 下载
山东科技大学OJ部分题目记答案_第1页
第1页 / 共28页
山东科技大学OJ部分题目记答案_第2页
第2页 / 共28页
山东科技大学OJ部分题目记答案_第3页
第3页 / 共28页
资源描述:

《山东科技大学OJ部分题目记答案》由会员分享,可在线阅读,更多相关《山东科技大学OJ部分题目记答案(28页珍藏版)》请在装配图网上搜索。

1、/Pob D: 货币兑换Descripion给出人民币对美元、欧元、日元的当日汇率,求给定金额的人民币能兑换成外币的金额,求给定金额的外币能兑换成人民币的金额。要计算的外币有三种:美元、欧元、日元。npt输入有三行。第一行依次为美元、欧元、日元外币汇率,用空格分开。汇率用10外币为单位,精确到小数点后4位,如668。5200表示“10美元68.5200人民币”。汇率浮动范围为(0,1000)。第二行为外币金额x,第三行为人民币金额y.,y均为整数,且0x,y1000。Outpu输出为两行。第一行为金额为x的美元、欧元、日元兑换成人民币的金额,用空格分开。第二行为金额为y的人民币兑换成美元、欧元

2、、日元的金额,用空格分开.所有金额精确到小数点后两位.SapeIput66.5200 0065 7。982150150pe utput100.80 13621。119.8incde dio。nmai() doul i,j,k,a,,,d,; doub ,y; scan(”l f %f”,&i,k); san (%lf%lf”,&x,&y); a=/100i;b=y/100j;cx/00; =y*100i;e00/j;=*100/k; prtf (%lf%.2lf 。2n,a,b,); printf (”%。2lf %.2lf %。2lf”,,e,);/Prbm : 求字符的值/Descriti

3、on从键盘输入3个字符(不含双字节字符),分别输出每个字符的十进制值(SCII码)、八进制值和十六进制值。Input输入为3个字符。Ouput输出为3行。每一行为每个字符(对应输入顺序)的十进制、八进制和十六进制值,用空格分隔开。每个输出的值占3个字符,不足3个字符前面补0。ampe Iut0 mle Otput48 060 03032 0420065 101 41#ncluestdio。hntmain() har ,y,z; sc (”%cc%c,&x,&y,z); pnf (3 .3o3xn,x,x,); printf (”%d 。3o。3xn”,,y,y); pinf (%.d . %。

4、3xn”,,z,z);Prblem A:简单的打折计算Desriptin商店规定:消费满n元,可以打八八折.设某件商品标价m元,输入购买的件数x,计算出需要支付的金额(单位:元),精确到分.nput输入只有一行,三个整数m、n和x,且0xm=n) s*x08;else sm*;pritf (%2f”,s);Probem C:水仙花数Descriin如果一个三位十进制数等于其各位数字的立方和,则称这个数为水仙花数。如:35+33=153.nut一个整数x,100=9.Otutx是水仙花数,则输出“YE”,否则为“NO。#incuden ain() x,a,b,c; scaf (”,x); a=x

5、%0; x/1010; c=/10; if(*ab*b*bc*c*c=) pintf (”YS); else pinf (”NO);ProbmA:多少张钞票Desriptio客户去商店买东西时,不超过100美金的账单喜欢用现金支付.商店喜欢用最少的钞票给付客户的找零.请你编写一个程序帮助商店计算出:当客户买了x元商品给了一张100美元的钞票后,商店应该付给客户多少张20美元、10美元、5美元和美元的钞票,使得钞票总数最少.假设不存在其他面值的钞票,也不会有几角几分的价格,商店的各种钞票总是够用的。Inpu输入一个整数x,00。Outut按顺序输出2美金、1美金、美金和美金面值的钞票张数。输出格

6、式见smpl。a Ipt7Sampl Outut20bill:410 bls: 1 $blls: 0 1 is: #incudestdio。hit min()int ,s,,c,;scanf(d”,x);s100x;a=s2;b=(sa)/0;c(20*a10)5;d=-20a1*b-*5;rint($20bils: dn”,);intf(”0 il: %dn”,b);printf ( $ bls: n,c);rnt (” bll: d,d);Poble B: 自动拨出电话的程序ample Inpu(0532)621-15486Sample Oput48INT这是个可以用sanf()解决的问题

7、,请注意电话号码都是数字这个规律。includestdio。hntai() ita,b,c; scanf((0%d)%d-d,&,b,&); prif(0086%d%d”,,b,c);/Probem C:求1+2+.。.+n=?Descption给定一个n,求出s =123+。.n的值。Inut输入只有一行,包含一个正整数n(n=3).utput输出一行,为12+。.+n的值。Smpl Input10Sample Outpt55HINn的数据范围大,需注意数据类型的选择和计算次序,以避免数据溢出。clde stdiohnt main() unsignedong longnt n,s,i; ca

8、nf(llu,&n); if(n%2=0) =n*(+1); else s=(n1)2*n; printf (”ll”,);/Polem D: 的多少次幂Descriptio从键盘输入一个数x,x是2的整数次幂(2y),请编程求出y的值。np一个非负有理数x,在,256范围内。Oupt一个整数。includ ihincudin man() t i,,ma,m; can (%dd,m); n=mx; fo(i=1;in;i+) scnf (”,&m); i (m) ax=m; if(min) min=m; printf(The maimumnumber is h inimum umber is

9、d.”,max,in);Prolm C: 成绩的等级Dscrption把百分制的考试成绩转换成五级制的成绩:9:Excelnt8089:Good707:Averg09:as5:Failg不在00之间的输入是非法数据,输出“rror。np输入多行,每行一个整数。Outp输入所对应的成绩等级.incude tdiohnclude stlb。hincude ”sring”in man() n n; while (scanf(%”,n)!=EF) if(n=100) prif(”celentn); se if(n0|100) prin(Errorn); ele ic (n/10) cse :ntf (

10、Excelletn);bak; cse 8:printf (Godn”);reak; case 7:pintf (Avrgen);bea; cs 6:prt (assn”);ak; dfault :printf (Faingn); retu 0;/Problem :A+B Probem (I) :Input/Outpt PraiceDecripti计算a+b,0a,b100.Input输入的第一行是一个整数N,后面有对整数a和b,每对a和占一行,a,用空格分开.put每行输出一个a+b的和,顺序与输入对应.Samle npu2020SleOutput330HINT给出了测试样例数,用for循环

11、处理方便。nclude itmain() i N,,j; sanf(d,&N); it a2; fo (=0;N;i+) for (j=0;j2;j) scanf (”%d”,aij); fo (i=0;N;i+) printf (dn,aiai1);roblm A: ABPrblem(II) : Input/Oput Praieescription计算a+b,0=a,b1000。npt输入有多对整数a和组成,每对a和b占一行,a,b用空格分开.当测试样为 0时表示输入结束, 0不参与运算。Sampl Iput 210 2000Samle Outpu330cu =0;-) i(am=) km;

12、 rak; fr(mk;m=0;m) prntf(”d”,am); pritf(”n”); /Problem F: 辗转相除法 最大公约数的算法Descripio辗转相除法,也称欧几里得算法,是求最大公约数的算法。Ipt输入为多行,每行有一对非负整数,,且a*不会超出int类型的数据范围。输入至EO结束。Otpu每行输出一对a,b的最大公约数和最小公倍数,顺序与输入对应。从数论上的整除定义出发:若整除b(b除以a没有余数),则是a的倍数,a是b的约数,这里要求b不为.因此0是任意整数的倍数,但是不能是约数。#nlude sdio.it in() int a,,m,t; wil(scaf(”d

13、%d”,&a,&b)!=EOF) if(a=b!=0) print(%dn,b,a); else f(a!=b=0) print(d %d,a,b); else if(ab)t=a; a=;bt; =;ca; whie(!) a=; =c; =a; rint(d %dn”,b,m/b); /rolm A:简单的整数排序Descritio对给出的若干整数按从小到大排序。put输入的第一个数为n(nintmi() int i,j,t;int a1000; scanf(%d,); or(i=0;i;i+) ca(d”,&ai); fr (i=1;i;i+) for(j=0;jn1;j+) i(jaj

14、+) taj; a=aj+;aj+1=t; for(i=0;n;+) if(i=n-1) prntf(%,ai); lse printf(%d,); /ProblemB: 兔子的繁殖问题Descripon假设一对兔子每月能生一对小兔(一雌一雄),每对小兔出生后的下一个月是没有繁殖能力的,至出生后的第三个月开始又可以每月生一队小兔,问从一对刚出生的小兔开始,经过若干个月后一共有多少兔子(假设在此过程中兔子没有死亡)?Inpu输入的第一个数为,接下来有n个数字。每个数字为一个月份(m=45)。uput输出为n行,每行为第m个月后的兔子总数。SmeInpt1 2 3 4 Sample Otu12 5

15、889HIT当较大时,菲波那契序列的第n项值和计算量都是很大的,可以先计算出菲波那契序列并用数组存储下来,然后查询出每月兔子数,避免重复运算。cude to。hnt min() n i,,n; int a0,1,2,b50; for(i=3;i=5;i+) aiai+ai2; scnf(d,&); o(k=0;kj;k+) anf(%d”,bk); fo(k=0;k,step不为0.Otu把这个等差序列输出在一行里,序列两数之间用一个空格分隔。Sample Inttat = ,stp= ,tims10Sampl Outu1 3 5 7 11 13 151 9 21 2 25 27 2 33 3

16、5 37 3 41 445 47 49 51 5 5 5759 6 63 657 6971 7 75 77 79 1 83 857 899135 7 9 01 0 105 107 10 11 11 115119121123 12 127 1911 3 3 17 19 141 14 14 14 15 153 1551 15 1 16 1517 169 171 17315 1 179 181 881889 19 93 15 1799HITpped Codeinclude it ain() it ,,k,n; char d100,b00,c100; int 100; scanf(start = d,

17、stp = %, tmes %d”,&i,&,&); fo(n=;nk;n+) =i*n; or(n=0;n+) f(=k1) printf(”d,a); else rit(d ”,a); /Prle : 产生等差序列之二Descrition根据给出的初始数、公差和终止条件求等差序列。npt输入为一行,格式见ple.其中,star为初始数,ste为公差,end为终止条件。满足,ste不为0,并且start和end的大小关系与step的方向一致.end不一定是序列的最后一个数。Outpu把这个等差序列输出在一行里,序列两数之间用一个空格分隔。SampleInputsta 1,e 2, end =

18、20SampleOupt1 5 7 9 131 17 19 2123 7 29 31 33 35 7 39 4135 749515 557 5 663 679 71 777 81 83 8 87 1 93 959 99 1 103 05 07 09 111 135 17 119 12123125 127 129 13 133 135137 4 143 5474 1 153 155 17 1911 163 15167 169171 1 177179 181 1318 18718191319 19 199nlude nt i() in i,j,k,b,n; inta00; scan(strt =

19、d, sp = , en = %d,&,j,&); =i; if(=0) fr(n=0;a=k;n+) a+1=i+(n+1)*; ele for(n=0;an=k;n+) an+1=+(+1)j; for(b=;b;b+) if(=1) printf(%d”,b); else prif (”d,a);/PrblmA: 字符串的逆序Samle Inptabcdample Outpted#clde tdio.h#include sring。tmain()int ,j; char s01; can(”%s,s); i=stren(s); fr(j=i1;j=0;j-)printf(%c,sj);P

20、rolem : 去行首行尾的空白符Desrption在C语言中,将ACII字符集中的制表符(t)、回车符(r)、换行符()、垂直制表符()、换页符(f)和空格字符( )称作空白符.你的任务是读入每行字符串,去掉行首和行尾的连续空白符,但是在任意非空白符中间的空白符不要去除。Inu输入为多行,每行为一个串(不超过100个字符),至某行输入的非空白符仅为“END”结束.Otpt输出为多行,为每行输入的去掉前后空白符的串。“EN”也输出。#nclud stdio。h#ilude it main() int i,j=0,k,m,n,; char42=,0,12340; fo(i=1;trcmp(si1

21、+j,”EN)!=0;i+) ges(i); for(j=0;isspace(sij)!=;j+); for(n=tle(si)1;issace(sin)!=0;n); sin+1=0; puts(si+j); /Prbem C: 回文Ipt输入为多行,到文件末尾结束.每行为一个串,且不会超过1000个字符,且全部由可显示的SC码字符组成。Outpu当一个串中的字母和数字部分能够构成一个回文,即输出“es”;否则输出“No.”. HNT首先要考虑如何去除空白符(空格、回车、换行、制表符等),标点和各种符号(如“,!”和“#”等),并且把串中的英文字符统一大小写,最后才能进行回文判定。请注意,用

22、ets()和scan()判断文件尾的方法是不一样的。e()函数的返回值请查阅C语言的语法手册。nce stdi.#incldetypeh#includeath。int ain() int,,k; ca a1001,1001; whie(gets(a)!ULL) fr(i=0,=;ai!=0;i+) if(ialu(ai)!=0) j=i; j+; for(i=0,k=0;ieil(j/2.0);i+) if(tolwe(bi)=tolower(j1i) k+; if(k=ceil(j/2) printf(”es.); ele printf(No。); Pobem D: Matr obe :Ar

23、ay Praticecriptio求一个mn阶矩阵A的转置矩阵AT。矩阵A的每个元素都在int类型的范围之内。nut输入的第一行为一个整数(0),后面有M组输入数据。每组数据以两个正整数m和n开始,满足0,=10,接下来为一个m行列的矩阵A.Outpu输出为多组,每组输出A的转置矩阵AT.矩阵的输出为:每行两个元素之间用一个空格分开,每行最后一个元素之后为一个换行,在下一行开始输出矩阵的下一行.每两组输出之间用一个空行分隔开。Sampl Inpt3 31 24 5 7 8 Samle Outp1 53 6 HINT二维数组存储矩阵。#inclu stdioiman() int i,j,c,d,

24、n; int a00100,1010; n(d,c); f(d=0;dc;d+) scanf(d%d,&m,&n); or(i=;i;i+) f(j0;jn;j+) cf(”%d,&aj); for(i0;in;i+) for(j0;j;+) f(j=m) rtf(”d,ji); ee rintf(”d ,aji); prinf(”n); printf(n);Probem : 编写函数maxlue(编程题)escrition编写一个函数maValue,求三个整数的最大值,其原型为:int maxVau(it a,it b,int );其中a、b、是参与比较的三个整数,返回值是三个数的最大值。n

25、put输入三个int类型的整数,两两之间用空格隔开。Outut输出三个整数的最大值.mpleInput 23Saml Oput3HINApendCodeapen.c,includestdihint maxValue(i a,int b,in c) int x; x=ab?a:; i(xc) =c; rtun;it in() nt x,y,z; scf(”d%d”,&y,z); pritf(%,axale(,y,z); retun 0;Problm B: 编写函数mFloor和myCei(编程题)取整函数有四个,分别是 fx, flo, cei,run。这里要求你编写mFlor和mil函数,它们

26、的原型分别是:int mylor(ob ata);intyCeil(ouble dta);其中myFlo函数的结果是不大于daa的最大整数,myl函数的结果是不小于daa的最小整数。注意:不能使用mah。h和stdlh两个头文件。Int输入有多行,每行是一个需要转换的实数。utut输出为多行,与上述输入一一对应。每行先输出floo函数的结果,再输出ceil函数的结果。两者之间用一个空格隔开。取整之后的结果不超出int类型的表示范围。amp Inpt1。-15Smle Outpu1 2 -12 2HINTAppen Codeappndc,inluenmlor(doub dta) in ; f(d

27、ta0) for(i=0;+) i(dataata-i) be; es for(i=0;;) f(ata0&daa1) brek; retrn i;int Ceil(douledata) int i; if(data0) o(i=;;i+) if(daa0&idata) break; s for(i0;i) i(dai-1) brak; return i;int m() doble a; while (canf(%lf,aa)!=OF) pintf(%d %dn,mlor(data),myCl(dta); return 0;roblem C: 求字符串的长度(编程题)Descrption编写一

28、个求字符串长度的函数,其原型如下:ntstrle(char st);其中str表示待求长度的字符串,返回值是s的长度.注意:主函数已经给出,只需提交strle()函数及必要的头文件包含命令.npt输入为多行。第一行N表示有N个测试用例,后面有N行,每行包含一个字符串(不超过1000个字符)。tut输出为多行,每行对应于一个测试用例。每行的格式为:cae i:leghtj。其中i表示测试用例编号(从1开始),j表示相应的字符串长度。, #nludstdi。hitstren(chr s) nt i; for(=0;sri!=;i+); etur i;nt ain() t ,N; cha str10

29、1; scnf(”d,); getchar(); get(str); pit(cae:legth%d。,srn(str); for (i=;i=;+) t(tr); printf(ncase d:ethd.,i,stlen(st)); reurn ;robe B: 你交换了吗?之二(函数)Dscrpo从标准输入读取两个整数,按先小后大的次序输出,并且输出是否交换过位置。注意:a和b相等时不产生交换。请注意阅读ppendc里的代码!Inpu两个较小的整数a,b,用空格分开。Output输出有两种情况:) “a bO, 当,没有交换过2)“ aES, 当a,交换过Sampe Iput 3mple

30、uput 5 ES#ncudsdio.intiss(int *,it p) if(pp2) return; eseun0;intmai() nt a, ; scanf(dd”, a, &b); if(is_s(&,b) prnf(%d dYES, b, a); se printf(%d d NO”, a, b);rolem : 编写函数unionSet(编程题)srition编写一个函数uiSet,对2个集合求并集。其原型为:in unionSet(nt seA,i stB,int nmA,t nB);其中se和eB是两个待合并的集合,nA和umB分别是2个集合的元素个数。该函数将两个集合合并

31、后,放在数组setA中,返回值为并集中的元素个数。nput输入为2行,每行是一个集合,每行的输入以数值0作为结束,个数不超过100个。个集合合并后的元素取值均在1,100内.Opu输出2个集合求并后的结果,两两之间用一个空格隔开.输出时,先输出第一个集合中的元素,再输出从第个集合中合并过来的元素。见样例。Sample Input1 2 35 724 6 8 19 0Sampl Outpu1 2 34 6 19HINApend Codappnd., inclde stdi.hint uionSet(it setA,nt st,int u,int num) nt,j,m=0; fo(i0;si!=

32、0;i+) k=0; or(j=0;jnumA;+) if(st!sei) k+; if(=numA) +; seAuAm1setBi; etun numA+m;int man() int setA101,se,numA,nmB,i; n=numB0; ca(”d”,&setAnumA); while (setAuA!=0) A+; scanf(,etAum); sanf(%d,etmB); while (setBnumB!) nmB+; scnf(”,stBnumB); umA=unnSe(setA,stB,nA,nmB); itf(d,eA0); or(i=1; i表示有N个学生的信息.之

33、后有N行,每一行包含5个部分,分别表示每位学生的专业、姓名和3门课程的成绩,两两之间用空格隔开.成绩为正整数。Output输出为N行,每一行为一名学生的信息,格式为:majr,name:ttSore.其中jor表示学生的专业,nae表示学生的姓名,totalcore表示该生的总分。所有的标点符号均为半角字符.Sample Inpt3Computer To 100 formaoJack 989 Manaeme May 89 89 9Sample OupuCmputer,Tom:8Informaton,Jk:274。aneent,Ma:67.ITApped oeapend.c, inud di.htypdef tru tdet charmajor50; char ae50; in coe; U;vd prinIn(STU students,n nu) int ,j; n s; for(i=0;inum;i) s=0; for(=0;j3;j+) s+stuentsi.sco; prntf(”,s:,studntsi。aor,tudentsinm); prinf(%d。n,s); intma() i i,N; cf(”%”,&N); U stusN; getchar(); f

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!