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

上传人:b****2 文档编号:17756595 上传时间:2023-08-03 格式:DOCX 页数:115 大小:96.13KB
下载 相关 举报
山东科技大学OJ部分题目记答案.docx_第1页
第1页 / 共115页
山东科技大学OJ部分题目记答案.docx_第2页
第2页 / 共115页
山东科技大学OJ部分题目记答案.docx_第3页
第3页 / 共115页
山东科技大学OJ部分题目记答案.docx_第4页
第4页 / 共115页
山东科技大学OJ部分题目记答案.docx_第5页
第5页 / 共115页
山东科技大学OJ部分题目记答案.docx_第6页
第6页 / 共115页
山东科技大学OJ部分题目记答案.docx_第7页
第7页 / 共115页
山东科技大学OJ部分题目记答案.docx_第8页
第8页 / 共115页
山东科技大学OJ部分题目记答案.docx_第9页
第9页 / 共115页
山东科技大学OJ部分题目记答案.docx_第10页
第10页 / 共115页
山东科技大学OJ部分题目记答案.docx_第11页
第11页 / 共115页
山东科技大学OJ部分题目记答案.docx_第12页
第12页 / 共115页
山东科技大学OJ部分题目记答案.docx_第13页
第13页 / 共115页
山东科技大学OJ部分题目记答案.docx_第14页
第14页 / 共115页
山东科技大学OJ部分题目记答案.docx_第15页
第15页 / 共115页
山东科技大学OJ部分题目记答案.docx_第16页
第16页 / 共115页
山东科技大学OJ部分题目记答案.docx_第17页
第17页 / 共115页
山东科技大学OJ部分题目记答案.docx_第18页
第18页 / 共115页
山东科技大学OJ部分题目记答案.docx_第19页
第19页 / 共115页
山东科技大学OJ部分题目记答案.docx_第20页
第20页 / 共115页
亲,该文档总共115页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

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

ProblemA:

Helloworld!

Description

Xiao_ming有两个哥哥,大哥叫Da_min,二哥叫Er_min。

三兄弟放学回家,父母分别跟他们打招呼。

Input

Output

请输出:

SampleInput

SampleOutput

HelloDa_min.

HelloEr_min,

HelloXiao_ming!

HINT

请注意换行符

#includeintmain()

{

printf("HelloDa_min,\nHelloEr_min,\nHelloXiao_ming!

");

ProblemA:

算术基本运算

Description

计算两整数x和y(0

Input

输入只有一行,格式见sample。

Output

输出为多行,按顺序每行输出x,y的和、差、积、商、余数、x的平方和y的三次方,格式

见sample

SampleInput

x=11,y=3

SampleOutput

x+y:

14

x-y:

8

x*y:

33

x/yquotient:

3,remainder:

2

xA2:

121

ya3:

27

注意输入输出格式。

了解C语言整数除法运算符的特点,并且没有求幕的运算符。

#inelude

intmain()

{

intx,y;

scanf("x=%d,y=%d",&x,&y);

printf("x+y:

%d\n",x+y);

printf("x-y:

%d\n",x-y);

printf("x*y:

%d\n",x*y);

printf("x/yquotient:

%d,remainder:

%d\n”,x/y,x%y);

printf("xA2:

%d\n",x*x);

printf("ya3:

%d\n",y*y*y);

}

ProblemB:

求圆的面积和周长

Description

从键盘输入圆的半径,求圆的面积和周长,圆周率取3.14。

Input

输入一个浮点型数据,有效数字不会超过十进制的6位。

Output

输出为两行。

第一行为圆的面积,第二行为圆的周长,格式见sample。

SampleOutput

Area:

28.260000

Perimeter:

18.840000

HINT

了解浮点类型的输入、输出和算术运算符

#include

#definePI3.14

intmain()

{

floatr,Area,Perimeter;

scanf("%f",&r);

Area=PI*r*r;

Perimeter=2*PI*r;

printf("Area:

%f\n",Area);

printf("Perimeter:

%f\n”,Perimeter);

}

ProblemC:

平均值

Description

求3个数的平均值。

输入只有一行,为3个较小的整数。

Output

输出为这3个整数的平均值,保留3位小数。

SampleInput

123

SampleOutput

2.000

#inelude

intmain()

{

intx,y,z;

floata;

scanf("%d%d%d",&x,&y,&z);

a=(x+y+z)/3.0;

printf("%.3f",a);

}

ProblemD:

货币兑换

Description

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

要计算的外币有三种:

美元、欧元、日元。

输入有三行。

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

汇率用100外币为单位,精确到

小数点后4位,女口668.5200表示“10美元=668.5200人民币”。

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

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

x,y均为整数,且0

Output

输出为两行。

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

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

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

SampleInput

668.5200908.06857.9852

1500

1500

SampleOutput

10027.8013621.03119.78

224.38165.1918784.75

HINT

了解浮点数据类型的精确度和输出控制。

#inelude

intmain()

{

doublei,j,k,a,b,c,d,e,f;

doublex,y;

seanf("%lf%lf%lf",&i,&j,&k);

seanf("%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\n",a,b,c);

printf("%.2lf%.2lf%.2lf\n",d,e,f);

}

ProblemE:

求字符的值

Description

从键盘输入3个字符(不含双字节字符),分别输出每个字符的十进制值(ASCII码)、

八进制值和十六进制值。

Input

输入为3个字符。

Output

输出为3行。

每一行为每个字符(对应输入顺序)的十进制、八进制和十六进制值,用空格分隔开。

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

SampleInput

0A

SampleOutput

048060030

032040020

065101041

HINT

了解字符值的存储和整型的关系。

#inelude

intmain()

{

charx,y,z;

seanf("%c%c%c",&x,&y,&z);

printf("%.3d%.3o%.3x\n",x,x,x);

printf("%.3d%.3o%.3x\n",y,y,y);

printf("%.3d%.3o%.3x\n",z,z,z);

}

ProblemF:

奇数还是偶数?

Description

输入一个整数,判读它是奇数还是偶数。

Input

输入只有一行,为一个100以内的正整数。

Output

输出为一行。

若输入为偶数则输出“even;'奇数输出“odd。

SampleInput

SampleOutput

even

HINT

用整数运算可以解决,练习“?

:

表达式。

#inelude

intmain()

{

intx;

scanf("%d",&x);

x%2==0?

printf("even"):

printf("odd");

}

ProblemG:

绝对值

Description

求整型数据和浮点型数据的绝对值。

Input

输入两个数,第一个是整数,第二个是浮点数。

Output

输出为两行,第一行为整数的绝对值,第二行为浮点数的绝对值,注意浮点数的绝对值不输出无意义的o。

SampleInput

SampleOutput

HINT

求绝对值可以用标准库函数来完成,也可以自己判断。

注意浮点数的输出格式。

求绝对值的函数在哪个头文件?

貌似很多人会搞错,包括很多编书的人!

#inelude

intmain()

{

intx;

floaty;

seanf("%d%f",&x,&y);

x>=0?

printf("%d\n",x):

printf("%d\n",-x);

y>=0?

printf("%g",y):

printf("%g",-y);

}

ProblemA:

简单的打折计算

Deseription

商店规定:

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

设某件商品标价m元,输入购买的件数x,计算

出需要支付的金额(单位:

元),精确到分。

Input

输入只有一行,三个整数m、n和x,且0

Output

输出金额,精确到分。

SampleInput

953004

SampleOutput

334.40

HINT

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

#inelude

intmain()

{intm,n,x;

floats;

seanf("%d%d%d",&m,&n,&x);

if(m*x>=n)

s=m*x*0.88;

else

s=m*x;

printf(%2f",s);

ProblemB:

判断闰年

Description

输入一个正整数的年份,判断是否为闰年。

Input

输入只有一行,为一个10000以内的正整数。

Output

输出为一行。

若输入为闰年偶数则输出“Yes;否则输出“N0'。

SampleInput

2010

SampleOutput

No

HINT

了解逻辑运算符和关系运算符。

#include

intmain()

{

inty;

scanf("%d",&y);

if(y%4==0&&y%100!

=0||y%400==0)

printf("Yes");

else

printf("No");

}

ProblemC:

水仙花数

Description

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

如:

13+53+33=153。

Input

一个整数x,100<=x<=999。

Output

x是水仙花数,则输出“YES;否则为“NO'。

SampleInput

153|

SampleOutput

YES

HINT

#inelude

intmain()

{

intx,a,b,c;

scanf("%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");

}

ProblemA:

多少张钞票

Description

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

商店喜欢用最少的钞票

给付客户的找零。

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

当客户买了x元商品给了一张100

美元的钞票后,商店应该付给客户多少张20美元、10美元、5美元和1美元的钞票,使得

钞票总数最少。

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

Input

输入一个整数x,0

Output

按顺序输出20美金、10美金、5美金和1美金面值的钞票张数。

输出格式见sample。

SampleInput

SampleOutput

$20bills:

4

$10bills:

1

$5bills:

0

$1bills:

3

HINT

当能支付大面值钞票时不要支付更小面值的钞票,才能满足钞票总数最少,注意scanf()格

式的控制。

#include

intmain()

{intx,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("$20bills:

%d\n",a);

printf("$10bills:

%d\n",b);

printf("$5bills:

%d\n",c);

printf("$1bills:

%d\n",d);

}

ProblemB:

自动拨出电话的程序

Description

某外国销售公司需要向国内的一些大型单位打电话推销产品。

这个公司的工作场景是这样推销员坐在自己电脑旁边,通过一款自动拨电话的软件与客户联系。

所有需要被拨打的电话号码都事先存储在服务器上,推销员不需要每次都很麻烦的输入客户的电话号码,当推销员点击软件里拨打的按钮,下一个电话将会自动拨出。

现在你需要编写个程序来模拟这个自动拨电话软件的工作过程。

电话号码是按照中国的习惯存储下来的,可能是从网站上抓取的,也可能是扫描的手写件。

不过它们都被按照这样的格式存储下来:

(城市区号)分区前缀-分机号

比如青岛的一个大型单位的某部电话是(0532)621-15486,是指如果在单位内部直接拨打

15486就行,在青岛的其他地方要拨打62115486,而在北京要拨打6。

根据常识,先拨0

就是要转外线,所以一般电话号码的各个部分都不会以0开头。

你的程序可以把如上格式的电话号码翻译成一个只包含有数字的串,发送给电话机并拨

出。

值得注意的是中国的城市区号长度并不相同,比如北京是010。

再有不同城市的电话

号码位数也不相同,并且不同单位根据内部电话分机数目多少,有的可能只有3位分机号

码,有的可能分区前缀号会只有2位。

但不管怎样中国现在还没有哪个城市的电话号码超

过十位数的。

中国的国际区号是0086。

这里不含像114这样的特服电话。

Input

输入只有一行,是符合“城市区号)分区前缀-分机号”规律的电话号码,这里面除了英文字

符“(、‘“)、”-”之外只有数字。

Output

输出只有一行,是带中国区号的能电话号码。

注意从国外打国内的电话,城市区号前面的

0是不用拨打的。

比如中国青岛的国际分区号是0086532。

SampleInput

(0532)621-15486

SampleOutput

5486

HINT

这是个可以用scanf()解决的问题,请注意电话号码都是数字这个规律。

#include

intmain()

{

inta,b,c;

scanf("(0%d)%d-%d",&a,&b,&c);

printf("0086%d%d%d",a,b,c);

}

ProblemC:

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

Description

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

Input

输入只有一行,包含一个正整数n(n<=232)。

Output

输出一行,为1+2+...+n的值。

SampleInput

10

SampleOutput

55

HINT

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

#inelude

intmain()

{

unsignedlonglongintn,s,i;

scanf("%llu",&n);

if(n%2==0)

s=n/2*(n+1);

else

s=(n+1)/2*n;

printf("%llu",s);

}

ProblemD:

2的多少次幂

Description

从键盘输入一个数x,x是2的整数次幕(x=2y),请编程求出y的值。

Input

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

Output

一个整数y。

SampleInput

i

SampleOutput

HINT

看起来数据很大,但是用

double完全可以存储。

为什么?

请研究下

IEEE-754标准的浮点

数存储格式。

这里要用到

C语言标准库的数学函数。

#inelude

#include

intmain()

{doublex,n;

scanf("%lf",&x);

n=(log10(x))/(log10

(2));

printf("%d",(int)n);

}

ProblemE:

三个数比较大小

Description

从键盘上输入0〜100之间的三个数,按从小到大的顺序输出。

Input

输入只有一行,为三个整数。

Output

按从小到大输出这三个数。

SampleInput

151020

SampleOutput

101520

HINT

用if语句判断各种情况可以解决这个问题。

#inelude

intmain()

{

intx,y,z,a;

scanf("%d%d%d",&x,&y,&z);

if(x>y)

{

a=x;

x=y;

y=a;

}

if(x>z)

a=x;

x=z;

z=a;

}

if(y>z)

{

a=y;

y=z;

z=a;

}

printf("%d%d%d",x,y,z);

}

ProblemA:

输出是m的倍数或n的倍数、但不是m

和n的公倍数的数

Description

输出1〜k之间是m的倍数或n的倍数、但不是m和n的公倍数的数,其中

1<=m,*k<100,且m与n不相等。

Input

输入三个整数,依次为k、m、n。

Output

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

SampleInput

1523

SampleOutput

23489101415

HINT

难点在于输出格式的控制:

空格在数的中间,学会用循环时边界情况的特殊处理。

#include

intmain()

{

intk,m,n,i=0,j;

scanf("%d%d%d",&k,&m,&n);

for(j=1;jv=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);}

}

}

ProblemB:

n个数的最大值和最小值

Description

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

Input

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

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

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

从输入的第2个数开始,求出直到第n+1

个数中最大的数和最小的数。

Output

输出为两行,格式见sample。

SampleInput

301-1

SampleOutput

Themaximumnumberis1.

Theminimumnumberis-1.

HINT

分隔符是空格还是回车都是空白符,对scanf("%d")来说没有区别;先读入n,然后用for循

环就很容易控制读入n个数的过程。

#include

intmain()

{

inti,n,m,max,min;

scanf("%d%d",&n,&max);

min=max;

for(i=1;i

{scanf("%d",&m);

if(m>max)

max=m;

if(m

min=m;}

printf("Themaximumnumberis%d.\nTheminimumnumberis%d.",max,min);

}

ProblemC:

成绩的等级

Description

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

90〜100:

Excellent

80〜89:

Good

70〜79:

Average

60〜69:

Pass

0〜59:

Failing

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

Input

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

Output

输入所对应的成绩等级。

SampleInput

81

92

35

68

72

100

SampleOutput

Error

HINT

用switch语句解决这个问题比较方便。

#include

#include

#include"string.h"

intmain()

{

intn;

while(scanf("%d",&n)!

=EOF)

{

if(n==100)

printf("Excellent\n");

elseif(n<0||n>100)

printf("Error'n");

else

switch(n/10)

{case9:

printf("Excellent\n”);break;

case8:

printf("Good\n");break;

case7:

printf("Average'n");break;

case6:

printf("Pass'n");break;

default:

printf("Failing\n");

}

}

return0;

}

ProblemD:

A+BProblem

Description

计算a+b,0<=a,b<1000。

Input

输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。

Output

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

SampleInput

12

1020

SampleOutput

3

30

HINT

OJ系统上测试输入结束符为EOF(EndOfFile),其值为-1。

用scanf()把文件所有内容读

完后,会读到EOF,所以可以用来判断输入是否完成,测试时可以用Ctrl+Z产生EOF。

题解法参看FAQ。

AppendCode

#include

intmain()

{inta,b;

while(scanf("%d%d",&a,&b)!

=EOF)

{

printf("%d\n",a+b);

}

return0;

}

ProblemE:

A+BProblem(II):

Input/Output

Pratice

Description

计算a

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2