ImageVerifierCode 换一换
格式:DOCX , 页数:104 ,大小:42.61KB ,
资源ID:12388241      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12388241.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(山东科技大学OJ部分题目记答案.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、山东科技大学OJ部分题目记答案Problem A: Hello world!DescriptionXiao_ming有两个哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放学回家,父母分别跟他们打招呼。Input无Output请输出:Hello Da_min,Hello Er_min,Hello Xiao_ming!Sample InputSample OutputHello Da_min,Hello Er_min,Hello Xiao_ming!HINT请注意换行符#include int main() printf(Hello Da_min,nHello Er_min,nHello X

2、iao_ming!);Problem A: 算术基本运算Description计算两整数x和y(0x,y1000)的和、差、积、商、余数、x的平方和y的三次方。Input输入只有一行,格式见sample。Output输出为多行,按顺序每行输出x,y的和、差、积、商、余数、x的平方和y的三次方,格式见sampleSample Inputx = 11, y = 3Sample Outputx + y : 14x - y : 8x * y : 33x / y quotient: 3, remainder: 2x 2 : 121y 3 : 27HINT注意输入输出格式。了解C语言整数除法运算符的特点,

3、并且没有求幂的运算符。#include int main() int x,y; scanf (x = %d, y = %d,&x,&y); printf (x + y : %dn,x+y); printf (x - y : %dn,x-y); printf (x * y : %dn,x*y); printf (x / y quotient: %d, remainder: %dn,x/y,x%y); printf(x 2 : %dn,x*x); printf (y 3 : %dn,y*y*y);Problem B: 求圆的面积和周长Description从键盘输入圆的半径,求圆的面积和周长,圆周

4、率取3.14。Input输入一个浮点型数据,有效数字不会超过十进制的6位。Output输出为两行。第一行为圆的面积,第二行为圆的周长,格式见sample。Sample Input3Sample OutputArea: 28.260000Perimeter: 18.840000HINT了解浮点类型的输入、输出和算术运算符#include #define PI 3.14int main() float r,Area,Perimeter; scanf (%f,&r); Area=PI*r*r; Perimeter=2*PI*r; printf (Area: %fn,Area); printf (Pe

5、rimeter: %fn,Perimeter);Problem C: 平均值Description求3个数的平均值。Input输入只有一行,为3个较小的整数。Output输出为这3个整数的平均值,保留3位小数。Sample Input1 2 3Sample Output2.000#include int main() int x,y,z; float a; scanf (%d %d %d,&x,&y,&z); a=(x+y+z)/3.0; printf (%.3f,a);Problem D: 货币兑换Description给出人民币对美元、欧元、日元的当日汇率,求给定金额的人民币能兑换成外币的

6、金额,求给定金额的外币能兑换成人民币的金额。要计算的外币有三种:美元、欧元、日元。Input输入有三行。第一行依次为美元、欧元、日元外币汇率,用空格分开。汇率用100外币为单位,精确到小数点后4位,如668.5200表示“100美元=668.5200人民币”。汇率浮动围为(0,10000)。第二行为外币金额x,第三行为人民币金额y。x,y均为整数,且0x,y10000。Output输出为两行。第一行为金额为x的美元、欧元、日元兑换成人民币的金额,用空格分开。第二行为金额为y的人民币兑换成美元、欧元、日元的金额,用空格分开。所有金额精确到小数点后两位。Sample Input668.5200 9

7、08.0685 7.985215001500Sample Output10027.80 13621.03 119.78224.38 165.19 18784.75HINT了解浮点数据类型的精确度和输出控制。#include int main() double i,j,k,a,b,c,d,e,f; double x,y; scanf (%lf %lf %lf,&i,&j,&k); scanf (%lf%lf,&x,&y); 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 %.2lf

8、n,a,b,c); printf (%.2lf %.2lf %.2lfn,d,e,f);Problem E: 求字符的值Description从键盘输入3个字符(不含双字节字符),分别输出每个字符的十进制值(ASCII码)、八进制值和十六进制值。Input输入为3个字符。Output输出为3行。每一行为每个字符(对应输入顺序)的十进制、八进制和十六进制值,用空格分隔开。每个输出的值占3个字符,不足3个字符前面补0。Sample Input0 ASample Output048 060 030032 040 020065 101 041HINT了解字符值的存储和整型的关系。#include in

9、t main() char x,y,z; scanf (%c%c%c,&x,&y,&z); printf (%.3d %.3o %.3xn,x,x,x); printf (%.3d %.3o %.3xn,y,y,y); printf (%.3d %.3o %.3xn,z,z,z);Problem F: 奇数还是偶数?Description输入一个整数,判读它是奇数还是偶数。Input输入只有一行,为一个100以的正整数。Output输出为一行。若输入为偶数则输出“even”,奇数输出“odd”。Sample Input30Sample OutputevenHINT用整数运算可以解决,练习“?:

10、”表达式。#include int main() int x; scanf (%d,&x); x%2=0?printf (even):printf (odd);Problem G: 绝对值Description求整型数据和浮点型数据的绝对值。Input输入两个数,第一个是整数,第二个是浮点数。Output输出为两行,第一行为整数的绝对值,第二行为浮点数的绝对值,注意浮点数的绝对值不输出无意义的0。Sample Input-11Sample Output11HINT求绝对值可以用标准库函数来完成,也可以自己判断。注意浮点数的输出格式。求绝对值的函数在哪个头文件?貌似很多人会搞错,包括很多编书的人

11、!#include int main() int x; float y; scanf (%d%f,&x,&y); x=0?printf(%dn,x):printf(%dn,-x); y=0?printf(%g,y):printf(%g,-y);Problem A: 简单的打折计算Description商店规定:消费满n元,可以打八八折。设某件商品标价m元,输入购买的件数x,计算出需要支付的金额(单位:元),精确到分。Input输入只有一行,三个整数m、n和x,且0xmn1000。Output输出金额,精确到分。Sample Input95 300 4Sample Output334.40HIN

12、T了解浮点型的输出控制,注意整型和浮点型混合运算过程中的数据类型转换。#include int main()int m,n,x;float s;scanf (%d %d %d,&m,&n,&x);if (m*x=n) s=m*x*0.88;else s=m*x;printf (%.2f,s);Problem B: 判断闰年Description输入一个正整数的年份,判断是否为闰年。Input输入只有一行,为一个10000以的正整数。Output输出为一行。若输入为闰年偶数则输出“Yes”,否则输出“No”。Sample Input2010Sample OutputNoHINT了解逻辑运算符和关

13、系运算符。#include int main() int y; scanf (%d,&y); if(y%4=0&y%100!=0|y%400=0) printf (Yes); elseprintf (No);Problem C: 水仙花数Description如果一个三位十进制数等于其各位数字的立方和,则称这个数为水仙花数。如:13+53+33=153。Input一个整数x,100=x=999。Outputx是水仙花数,则输出“YES”,否则为“NO”。Sample Input153Sample OutputYESHINT#include int main() int x,a,b,c; sca

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

15、100。Output按顺序输出20美金、10美金、5美金和1美金面值的钞票数。输出格式见sample。Sample Input7Sample Output$20 bills: 4$10 bills: 1 $5 bills: 0 $1 bills: 3HINT当能支付大面值钞票时不要支付更小面值的钞票,才能满足钞票总数最少,注意scanf()格式的控制。#include int main()int x,s,a,b,c,d;scanf (%d,&x);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 ($

16、20 bills: %dn,a);printf ($10 bills: %dn,b);printf ( $5 bills: %dn,c);printf ( $1 bills: %dn,d);Problem B: 自动拨出的程序Description 某外国销售公司需要向国的一些大型单位打推销产品。这个公司的工作场景是这样推销员坐在自己电脑旁边,通过一款自动拨的软件与客户联系。所有需要被拨打的都事先存储在服务器上,推销员不需要每次都很麻烦的输入客户的,当推销员点击软件里拨打的按钮,下一个将会自动拨出。 现在你需要编写个程序来模拟这个自动拨软件的工作过程。是按照中国的习惯存储下来的,可能是从上抓取

17、的,也可能是扫描的手写件。不过它们都被按照这样的格式存储下来: (城市区号)分区前缀-分机号比如的一个大型单位的某部是(0532)621-15486,是指如果在单位部直接拨打15486就行,在的其他地方要拨打62115486,而在要拨打6。根据常识,先拨0就是要转外线,所以一般的各个部分都不会以0开头。 你的程序可以把如上格式的翻译成一个只包含有数字的串,发送给机并拨出。值得注意的是中国的城市区号长度并不相同,比如是010。再有不同城市的位数也不相同,并且不同单位根据部分机数目多少,有的可能只有3位分机,有的可能分区前缀号会只有2位。但不管怎样中国现在还没有哪个城市的超过十位数的。中国的国际区

18、号是0086。 这里不含像114这样的特服。Input输入只有一行,是符合“(城市区号)分区前缀-分机号”规律的,这里面除了英文字符“(”、“)”、“-”之外只有数字。Output输出只有一行,是带中国区号的能。注意从国外打国的,城市区号前面的0是不用拨打的。比如中国的国际分区号是0086532。Sample Input(0532)621-15486Sample Output5486HINT这是个可以用scanf()解决的问题,请注意都是数字这个规律。#include int main() int a,b,c; scanf(0%d)%d-%d,&a,&b,&c); printf(0086%d%

19、d%d,a,b,c);Problem C: 求1+2+.+n=?Description给定一个n,求出s = 1+2+3+.+n的值。Input输入只有一行,包含一个正整数n(n=232)。Output输出一行,为1+2+.+n的值。Sample Input10Sample Output55HINTn的数据围大,需注意数据类型的选择和计算次序,以避免数据溢出。#include int main() unsigned long long int n,s,i; scanf(%llu,&n); if(n%2=0) s=n/2*(n+1); else s=(n+1)/2*n; printf (%llu

20、,s);Problem D: 2的多少次幂Description从键盘输入一个数x,x是2的整数次幂(x=2y),请编程求出y的值。Input一个非负有理数x,x在0,2256围。Output一个整数y。Sample Input1Sample Output0HINT看起来数据很大,但是用double完全可以存储。为什么?请研究下IEEE-754标准的浮点数存储格式。这里要用到C语言标准库的数学函数。#include #include int main()double x,n; scanf (%lf,&x); n=(log10(x)/(log10(2); printf (%d,(int)n);P

21、roblem E: 三个数比较大小Description从键盘上输入0100之间的三个数,按从小到大的顺序输出。Input输入只有一行,为三个整数。Output按从小到大输出这三个数。Sample Input15 10 20Sample Output10 15 20HINT用if语句判断各种情况可以解决这个问题。#include int main() int x,y,z,a; scanf (%d %d %d,&x,&y,&z); if(xy) a=x; x=y; y=a; if(xz) a=x; x=z; z=a; if(yz) a=y; y=z; z=a; printf (%d %d %d,

22、x,y,z); Problem A: 输出是m的倍数或n的倍数、但不是m和n的公倍数的数Description输出1k之间是m的倍数或n的倍数、但不是m和n的公倍数的数,其中1=m,nk100,且m与n不相等。Input输入三个整数,依次为k、m、 n。Output从小到大输出符合题意的所有整数,两数之间用一个空格分开。Sample Input15 2 3Sample Output2 3 4 8 9 10 14 15HINT难点在于输出格式的控制:空格在数的中间,学会用循环时边界情况的特殊处理。#include int main() int k,m,n,i=0,j; scanf (%d %d

23、%d,&k,&m,&n); for (j=1;j=k;j+) if (j%m=0&j%n!=0)|(j%m!=0&j%n=0) i+; if(i=1) printf (%d,j); else printf ( %d,j); Problem B: n个数的最大值和最小值Description找出n个数中最大的数和最小的数,并将它们的值输出出来。Input输入为n+1个整数,都在int类型围。这些数可能用若干空格或者换行符分隔开。输入的第1个数为n,表示后续有n个数输入。从输入的第2个数开始,求出直到第n+1个数中最大的数和最小的数。Output输出为两行,格式见sample。Sample Inp

24、ut3 0 1 -1Sample OutputThe maximum number is 1.The minimum number is -1.HINT分隔符是空格还是回车都是空白符,对scanf(%d)来说没有区别;先读入n,然后用for循环就很容易控制读入n个数的过程。#include int main() int i,n,m,max,min; scanf (%d%d,&n,&max); min=max; for(i=1;imax) max=m; if(mmin) min=m; printf(The maximum number is %d.nThe minimum number is %

25、d.,max,min);Problem C: 成绩的等级Description把百分制的考试成绩转换成五级制的成绩:90100:Excellent8089:Good7079:Average6069:Pass059:Failing不在0100之间的输入是非法数据,输出“Error”。Input输入多行,每行一个整数。Output输入所对应的成绩等级。Sample Input-18192356872100Sample OutputErrorGoodExcellentFailingPassAverageExcellentHINT用switch语句解决这个问题比较方便。#include #includ

26、e #include string.hint main() int n; while (scanf (%d,&n)!=EOF) if (n=100) printf (Excellentn); else if(n100) printf (Errorn); else switch (n/10) case 9:printf (Excellentn);break; case 8:printf (Goodn);break; case 7:printf (Averagen);break; case 6:printf (Passn);break; default :printf (Failingn); re

27、turn 0;Problem D: A+B ProblemDescription计算a+b,0=a,b1000。Input输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。Output每行输出一个a+b的值,顺序与输入对应。Sample Input1 210 20Sample Output330HINTOJ系统上测试输入结束符为EOF(End Of File),其值为-1。用scanf()把文件所有容读完后,会读到EOF,所以可以用来判断输入是否完成,测试时可以用Ctrl+Z产生EOF。本题解法参看FAQ。Append Code#include int main() int a,b;while(scanf(%d %d,&a,&b)!=EOF) printf(%dn,a+b); return 0;Problem E: A+B Problem (II) : Input/Output PraticeDescription计算a+b,0=a,b1000。Input输入的第一行是一个整数N,后面有N对整数a和b,每对a和b占一行,a,b用空格分开。Output每行输出一个a+b的和,顺序与输入对应。Sample In

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

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