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

上传人:hw****26 文档编号:2234108 上传时间:2019-05-02 格式:DOC 页数:28 大小:208.50KB
下载 相关 举报
山东科技大学OJ部分题目记答案.doc_第1页
第1页 / 共28页
山东科技大学OJ部分题目记答案.doc_第2页
第2页 / 共28页
山东科技大学OJ部分题目记答案.doc_第3页
第3页 / 共28页
山东科技大学OJ部分题目记答案.doc_第4页
第4页 / 共28页
山东科技大学OJ部分题目记答案.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、/Problem D: 货币兑换Description给出人民币对美元、欧元、日元的当日汇率,求给定金额的人民币能兑换成外币的金额,求给定金额的外币能兑换成人民币的金额。要计算的外币有三种:美元、欧元、日元。Input输入有三行。第一行依次为美元、欧元、日元外币汇率,用空格分开。汇率用100外币为单位,精确到小数点后4位,如668.5200表示“100美元=668.5200人民币”。汇率浮动范围为(0,10000) 。第二行为外币金额x,第三行为人民币金额y。x,y均为整数,且0int main()double i,j,k,a,b,c,d,e,f;double x,y;scanf (“%lf

2、%lf %lf“,scanf (“%lf%lf“,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 (“%.2lf %.2lf %.2lfn“,a,b,c);printf (“%.2lf %.2lf %.2lfn“,d,e,f);/Problem E: 求字符的值/Description从键盘输入3个字符(不含双字节字符),分别输出每个字符的十进制值(ASCII码)、八进制值和十六进制值。Input输入为3个字符。Output输出为3行。每一行为每个字符(对应输入顺序)的十进制、八进制和十六进制值,用空格分隔开

3、。每个输出的值占3个字符,不足3个字符前面补0。Sample Input0 ASample Output048 060 030032 040 020065 101 041#include int main()char x,y,z;scanf (“%c%c%c“,printf (“%.3d %.3o %.3xn“,x,x,x);printf (“%.3d %.3o %.3xn“,y,y,y);printf (“%.3d %.3o %.3xn“,z,z,z);Problem A: 简单的打折计算Description商店规定:消费满n元,可以打八八折。设某件商品标价m元,输入购买的件数x,计算出需

4、要支付的金额(单位:元),精确到分。Input输入只有一行,三个整数m、 n和x,且0int main()int m,n,x;float s;scanf (“%d %d %d“,if (m*x=n)s=m*x*0.88;elses=m*x;printf (“%.2f“,s);Problem C: 水仙花数Description如果一个三位十进制数等于其各位数字的立方和,则称这个数为水仙花数。如:1 3+53+33=153。Input一个整数x,100int main()int x,a,b,c;scanf (“%d“,a=x%10;b=x/10%10;c=x/100;if(a*a*a+b*b*b

5、+c*c*c=x)printf (“YES“);elseprintf (“NO“);Problem A: 多少张钞票Description客户去商店买东西时,不超过100美金的账单喜欢用现金支付。商店喜欢用最少的钞票给付客户的找零。请你编写一个程序帮助商店计算出:当客户买了x元商品给了一张100美元的钞票后,商店应该付给客户多少张20美元、10美元、5美元和1美元的钞票,使得钞票总数最少。假设不存在其他面值的钞票,也不会有几角几分的价格,商店的各种钞票总是够用的。Input输入一个整数x,0int main()int x,s,a,b,c,d;scanf (“%d“,s=100-x;a=s/20

6、;b=(s-20*a)/10;c=(s-20*a-10*b)/5;d=s-20*a-10*b-c*5;printf (“$20 bills: %dn“,a);printf (“$10 bills: %dn“,b);printf (“ $5 bills: %dn“,c);printf (“ $1 bills: %dn“,d);Problem B: 自动拨出电话的程序Sample Input(0532)621-15486Sample Output008653262115486HINT这是个可以用scanf()解决的问题,请注意电话号码都是数字这个规律。#include int main()int

7、a,b,c;scanf(“(0%d)%d-%d“,printf(“0086%d%d%d“,a,b,c);/Problem C: 求1+2+.+n=?Description给定一个n,求出s = 1+2+3+.+n的值。Input输入只有一行,包含一个正整数n(nint main()unsigned long long int n,s,i;scanf(“%llu“,if(n%2=0)s=n/2*(n+1);elses=(n+1)/2*n;printf (“%llu“,s);/Problem D: 2的多少次幂Description从键盘输入一个数x,x是2的整数次幂(x=2 y),请编程求出y的

8、值。Input一个非负有理数x,x在0,2 256范围内。Output一个整数y。#include #include int main()double x,n;scanf (“%lf“,n=(log10(x)/(log10(2);printf (“%d“,(int)n);/Problem A: 输出是m的倍数或n的倍数、但不是m和n的公倍数的数Description输出1k之间是m的倍数或n 的倍数、但不是m 和n的公倍数的数,其中 1int main()int k,m,n,i=0,j;scanf (“%d %d %d“,for (j=1;jint main()int i,n,m,max,mi

9、n;scanf (“%d%d“,min=max;for(i=1;imax)max=m;if(m#include #include “string.h“int main()int n;while (scanf (“%d“,else if(n100)printf (“Errorn“);elseswitch (n/10)case 9:printf (“Excellentn“);break;case 8:printf (“Goodn“);break;case 7:printf (“Averagen“);break;case 6:printf (“Passn“);break;default :print

10、f (“Failingn“);return 0;/Problem E: A+B Problem (II) : Input/Output PraticeDescription计算a+b,0int main()int N,i,j;scanf(“%d“,int aN2;for (i=0;iint main() int a,b;while(1)scanf(“%d %d“,if(a=0elseprintf(“%dn“,a+b);Problem C: 只有一个二元运算符的表达式运算Description编程序读入并计算只有一个二元运算符的表达式的值。用到的二元运算符有:“+”、“-”、“*” 、 “/”、

11、“%”,与C语言的语法一致。Input每行输入一个表达式,格式为:二个整型的操作数a和b,中间用一个符号分开,这个符号就是运算符。测试样例不存在除数为0的情况。输入以a和b为0,且用一个空格分开结束。Output每行对应输入的运算符为“+”、“-”、“*”、“/” 、“%”,则计算a+b、a-b、a*b、a/b、a%b的值;否则输出 “invalid op”。HINT教材上有非常相似的例题可以参考。#include int main()int a,b;char i;while(1)scanf (“%d%c%d“,if(a=0elseswitch(i)case +:printf(“%dn“,a+

12、b);break;case -:printf(“%dn“,a-b);break;case *:printf(“%dn“,a*b);break;case /:printf(“%dn“,a/b);break;case %:printf(“%dn“,a%b);break;default:printf(“invalid opn“);Problem D: 求100以内的素数Description素数是只能被1和自身整除的正整数,根据数学定义1不是素数。素数也叫质数。Input输入为两个整数m和n,满足 0int main()int m,n,i,j,k;scanf(“%d %d“,printf(“=n“)

13、;for(i=n;i=m;i-) k=0;for(j=1;jint main()int i,j,m,n,k;int a17;while(scanf(“%d“,elsefor(m=0;m=0;m-)if(am=1)k=m;break;for(m=k;m=0;m-)printf(“%d“,am);printf(“n“);/Problem F: 辗转相除法 最大公约数的算法Description辗转相除法,也称欧几里得算法,是求最大公约数的算法。Input输入为多行,每行有一对非负整数a,b,且a*b不会超出int类型的数据范围。输入至EOF结束。Output每行输出一对a,b的最大公约数和最小公倍数,顺序与输入对应。从数论上的整除定义出发:若a整除b(b除以a没有余数),则b是a的倍数,a是b的约数,这里要求b不为0。因此0是任意整数的倍数,但是0不能是约数。#include int main() int a,b,c,m,t;while(scanf(“%d %d“,else if(a!=0else if(ab) t=a; a=b; b=t; m=a*b;c=a%b;while(c!=0) a=b; b=c; c=a%b; printf(“%d %dn“,b,m/b);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 课程笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。