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

上传人:b****2 文档编号:953734 上传时间:2022-10-14 格式:DOCX 页数:7 大小:26.35KB
下载 相关 举报
山东科技大学OJ部分题目记答案.docx_第1页
第1页 / 共7页
山东科技大学OJ部分题目记答案.docx_第2页
第2页 / 共7页
山东科技大学OJ部分题目记答案.docx_第3页
第3页 / 共7页
山东科技大学OJ部分题目记答案.docx_第4页
第4页 / 共7页
山东科技大学OJ部分题目记答案.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

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

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

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

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

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

      //////////ProblemD:

货币兑换Description  给出人民币对美元、欧元、日元的当日汇率,求给定金额的人民币能兑换成外币的金额,求给定金额的外币能兑换成人民币的金额。

要计算的外币有三种:

美元、欧元、日元。

Input  输入有三行。

  第一行依次为美元、欧元、日元外币汇率,用空格分开。

汇率用100外币为单位,精确到小数点后4位,如表示“100美元=人民币”。

汇率浮动范围为(0,10000)。

第二行为外币金额x,第三行为人民币金额y。

x,y均为整数,且0  输出为两行。

  第一行为金额为x的美元、欧元、日元兑换成人民币的金额,用空格分开。

第二行为金额为y的人民币兑换成美元、欧元、日元的金额,用空格分开。

所有金额精确到小数点后两位。

SampleInput  15001500  SampleOutput  #includeintmain(){  doublei,j,k,a,b,c,d,e,f;  doublex,y;  scanf(\  scanf(\  a=x/100*i;b=y/100*j;c=x/100*k;  d=y*100/i;e=y*100/j;f=y*100/k;  printf(\  printf(\}  ////ProblemE:

求字符的值////  Description  从键盘输入3个字符,分别输出每个字符的十进制值、八进制值和十六进制值。

Input  输入为3个字符。

Output  输出为3行。

  每一行为每个字符的十进制、八进制和十六进制值,用空格分隔开。

每个输出的值占3个字符,不足3个字符前面补0。

SampleInput  0A  SampleOutput  048060030032040020  065101041  #includeintmain(){  charx,y,z;  scanf(\  printf(\  printf(\  printf(\}  ProblemA:

简单的打折计算Description  商店规定:

消费满n元,可以打八八折。

设某件商品标价m元,输入购买的件数x,计算出需要支付的金额,精确到分。

Input  输入只有一行,三个整数m、n和x,且0  输出金额,精确到分。

SampleInput  953004  SampleOutput    HINT  了解浮点型的输出控制,注意整型和浮点型混合运算过程中的数据类型转换。

#includeintmain(){intm,n,x;floats;  scanf(\if(m*x>=n)  s=m*x*;else  s=m*x;  printf(\}  ProblemC:

水仙花数Description  如果一个三位十进制数等于其各位数字的立方和,则称这个数为水仙花数。

如:

13+53+33=153。

Input  一个整数x,100  x是水仙花数,则输出“YES”,否则为“NO”。

  #includeintmain(){  intx,a,b,c;  scanf(\  a=x;  b=x/10;  c=x/100;  if(a*a*a+b*b*b+c*c*c==x)  printf(\  else  printf(\}  ProblemA:

多少张钞票Description  客户去商店买东西时,不超过100美金的账单喜欢用现金支付。

商店喜欢用最少的钞票给付客户的找零。

请你编写一个程序帮助商店计算出:

当客户买了x元商品给了一张100美元的钞票后,商店应该付给客户多少张20美元、10美元、5美元和1美元的钞票,使得钞票总数最少。

假设不存在其他面值的钞票,也不会有几角几分的价格,商店的各种钞票总是够用的。

Input  输入一个整数x,0  按顺序输出20美金、10美金、5美金和1美金面值的钞票张数。

输出格式见sample。

SampleInput  7  SampleOutput  $20bills:

4$10bills:

1$5bills:

0$1bills:

3  #includeintmain()  {intx,s,a,b,c,d;scanf(\s=100-x;a=s/20;  b=(s-20*a)/10;  c=(s-20*a-10*b)/5;d=s-20*a-10*b-c*5;  printf(\printf(\printf(\printf(\}  ProblemB:

自动拨出电话的程序SampleInput  (0532)621-15486  SampleOutput  008653262115486  HINT  这是个可以用scanf()解决的问题,请注意电话号码都是数字这个规律。

#includeintmain(){  inta,b,c;  scanf(\  printf(\}  ///////ProblemC:

求1+2+...+n=?

  Description  给定一个n,求出s=1+2+3+...+n的值。

Input  输入只有一行,包含一个正整数n(n  输出一行,为1+2+...+n的值。

SampleInput  10  SampleOutput  55  HINT  n的数据范围大,需注意数据类型的选择和计算次序,以避免数据溢出。

#includeintmain(){  unsignedlonglongintn,s,i;  scanf(\  if(n%2==0)  s=n/2*(n+1);  else  s=(n+1)/2*n;  printf(\}  /////////////ProblemD:

2的多少次幂Description  从键盘输入一个数x,x是2的整数次幂,请编程求出y的值。

Input  一个非负有理数x,x在[0,2256]范围内。

Output  一个整数y。

  #include#includeintmain(){doublex,n;  scanf(\  n=(log10(x))/(log10

(2));printf(\}  ////ProblemA:

输出是m的倍数或n的倍数、但不是m和n的公倍数的数  Description  输出1~k之间是m的倍数或n的倍数、但不是m和n的公倍数的数,其中1  输入三个整数,依次为k、m、n。

Output  从小到大输出符合题意的所有整数,两数之间用一个空格分开。

SampleInput  1523  SampleOutput  23489101415  #includeintmain(){  intk,m,n,i=0,j;  scanf(\  for(j=1;j  if((j%m==0&&j%n!

=0)||(j%m!

=0&&j%n==0))  {i++;  if(i==1)  printf(\  else  printf(\  }}  /////ProblemB:

n个数的最大值和最小值  Description  找出n个数中最大的数和最小的数,并将它们的值输出出来。

Input  输入为n+1个整数,都在int类型范围内。

这些数可能用若干空格或者换行符分隔开。

输入的第1个数为n,表示后续有n个数输入。

从输入的第2个数开始,求出直到第n+1个数中最大的数和最小的数。

SampleInput  301-1  SampleOutput  Themaximumnumberis1.Theminimumnumberis-1.  #includeintmain(){  inti,n,m,max,min;  scanf(\  min=max;  for(i=1;i  {scanf(\  if(m>max)  max=m;  if(m  printf(\}  ProblemC:

成绩的等级Description

  

      把百分制的考试成绩转换成五级制的成绩:

90~100:

Excellent80~89:

Good70~79:

Average60~69:

Pass0~59:

Failing  不在0~100之间的输入是非法数据,输出“Error”。

Input  输入多行,每行一个整数。

Output  输入所对应的成绩等级。

#include#include#include\intmain(){  intn;  while(scanf(\  {  if(n==100)  printf(\  elseif(n100)  printf(\  else  switch(n/10)  {case9:

printf(\  case8:

printf(\  case7:

printf(\  case6:

printf(\  default:

printf(\  }  }  return0;}  /////ProblemE:

A+BProblem(II):

Input/OutputPratice  Description  计算a+b,0  输入的第一行是一个整数N,后面有N对整数a和b,每对a和b占一行,a,b用空格分开。

Output  每行输出一个a+b的和,顺序与输入对应。

SampleInput  2121020  SampleOutput  330  HINT  N给出了测试样例数,用for循环处理方便。

#includeintmain(){  intN,i,j;  scanf(\  inta[N][2];  for(i=0;i  for(j=0;j  scanf(\  }  for(i=0;i  printf(\}  ProblemA:

A+BProblem(III):

Input/OutputPraticeDescription  计算a+b,0  输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。

当测试样为00时表示输入结束,00不参与运算。

SampleInput  12102000  SampleOutput  330  #includeintmain(){inta,b;  while

(1)  {  scanf(\  if(a==0&&b==0)  break;  else  printf(\  }}  ProblemC:

只有一个二元运算符的表达式运算Description  编程序读入并计算只有一个二元运算符的表达式的值。

用到的二元运算符有:

“+”、“-”、“*”、“/”、“%”,与C语言的语法一致。

Input  每行输入一个表达式,格式为:

二个整型的操作数a和b,中间用一个符号分开,这个符号就是运算符。

测试样例不存在除数为0的情况。

输入以a和b为0,且用一个空格分开结束。

Output  每行对应输入的运算符为“+”、“-”、“*”、“/”、“%”,则计算a+b、a-b、a*b、a/b、a%b的值;否则输出“invalidop”。

  HINT  教材上有非常相似的例题可以参考。

#includeintmain(){  inta,b;  chari;  while

(1)  {scanf(\  if(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1