POJ简洁版文档格式.docx
《POJ简洁版文档格式.docx》由会员分享,可在线阅读,更多相关《POJ简洁版文档格式.docx(44页珍藏版)》请在冰豆网上搜索。
函数abs()定义在stdlib.h中
#include<
stdio.h>
stdlib.h>
#defineN400
intmain(){
inta[N],D[N];
inti,n,max,m,min,D_min;
scanf("
%d"
&
n);
for(i=0;
i<
n;
i++)
a[i]);
max=a[0];
for(i=1;
i++){
if(max<
a[i])
max=a[i];
}
min=a[0];
if(min>
min=a[i];
}
D[i]=abs(abs(a[i]-max)-abs(a[i]-min));
}
D_min=D[0];
i++){
if(D_min>
D[i]){
D_min=D[i];
m=a[i];
}
printf("
m);
return0;
}
题目描述
请把输入整数的每位数字转换成英文。
如当输入1024时,输出:
one,zero,two,four
输入为一个整数
按整数每一位输出其英文单词,单词间用逗号加空格分隔,单词由小写字母组成。
20345
two,zero,three,four,five
注意:
大家要考虑数据为"
0"
的情况,此时如果取对0取对数会出错
#defineN200
intmain(){
intn,k,j,s;
inta[N];
j=0;
s=0;
while(n!
=0){
k=n%10;
n=n/10;
a[j]=k;
j++;
s=s+j;
for(j=s-1;
j>
0;
j--){
switch(a[j]){
case0:
zero,"
);
break;
case1:
one,"
case2:
two,"
case3:
three,"
case4:
four,"
case5:
five,"
case6:
six,"
case7:
seven,"
case8:
eight,"
case9:
nine,"
switch(a[0]){
case0:
zero"
one"
two"
case3:
three"
four"
five"
six"
case7:
seven"
case8:
eight"
case9:
nine"
}
给定一个字符串,将其中所有的小写字母转换成大写字母
一个字符串
将输入的字符串中所有小写字母转换成大写字母后的字符串
helloworld123Ha
HELLOWORLD123HA
#include<
intmain(){
inti;
charc,str[N];
gets(str);
i=0;
while(str[i]!
='
\0'
){
if(str[i]>
a'
&
str[i]<
z'
str[i]=str[i]-32;
i++;
puts(str);
输入1行单词(不多于200个单词),空格和逗号都是单词间的间隔,试输出第1个最长的单词和第1个最短单词。
如果所有单词长度相同,那么第一个单词既是最长单词也是最短单词。
一行单词,空格和逗号都是单词间的间隔
输出
两行输出
第1行,第一个最长的单词
第2行,第一个最短的单词
IamstudyingProgramminglanguageCinNanjingUniversityofInformationandTechnology
Programming
string.h>
charstr[4000];
charout[200][200];
intlength[200];
intmain(void){
gets(str);
inti,j=0,k=0,n=strlen(str);
for(i=0;
i++){
if(str[i]=='
'
||str[i]=='
'
out[j][k]='
;
length[j]=strlen(out[j]);
j++;
k=0;
continue;
out[j][k++]=str[i];
intmax=0,min=0;
for(i=1;
j;
if(length[max]<
length[i])
max=i;
if(length[min]>
min=i;
puts(out[max]);
puts(out[min]);
return0;
学校对本科生的成绩施行平均学分绩点制(GPA)。
将学生的实际考分根据不同的学科的不同学分按一定的公式进行计算。
曾经使用的规定如下:
实际成绩绩点
90-1004.0
85-893.7
82-843.3
78-813.0
75-772.7
72-742.3
68-712.0
64-671.5
60-631.0
60以下0
1.一门课程的学分绩点=该课绩点*该课学分
2.总评绩点=所有学科绩点之和/所有课程学分之和
现要求你编写程序求出某人A的总评绩点(GPA)。
第一行总的课程数n(n<
10);
第二行相应课程的学分(两个学分间用空格隔开);
第三行对应课程的实际得分;
此处输入的所有数字均为整数。
输出有一行,总评绩点,精确到小数点后2位小数。
(printf("
%.2f"
GPA);
)
43423
9188726956
2.52
math.h>
intn,i;
floata[10],c[10],b[10],sum=0,GPA,d;
=n-1;
%f"
b[i]);
if(b[i]>
=90)
c[i]=4.0;
elseif(b[i]>
=85)
c[i]=3.7;
=82)
c[i]=3.3;
=78)
c[i]=3.0;
=72)
c[i]=2.3;
=68)
c[i]=2.0;
=64)
c[i]=1.5;
=60)
c[i]=1.0;
elseb[i]=0;
sum+=a[i]*c[i];
d+=a[i];
GPA=sum/d;
第一行为一个整数N(1<
=N<
=1000)
第二行为N个绝对值不超过10000的整数,表示需要排序的序列
输出N行,为N个整数按升序排序后的序列样例输入
6
100201681099
681099100201
这N个数需要随机产生
#defineN1000
intn,i,j,temp;
for(j=0;
j<
n-1;
j++){
n-j-1;
if(a[i]>
a[i+1]){
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
%d"
a[i]);
\n"
多项式f(x)=ax3+bx2+cx+d
输入仅一行,分别是x,及参数a、b、c、d的值,每个数都是双精度浮点数。
输出也仅一行,f(x)的值,保留小数点后7位。
2.311.2223
33.0838692
使用printf("
%.7lf"
...)实现保留小数点后7位。
doublef(doublex,doublea,doubleb,doublec,doubled);
doublex,a,b,c,d,e;
%lf%lf%lf%lf%lf"
x,&
a,&
b,&
c,&
d);
if(x==0.0)
inputerror"
else{
e=f(x,a,b,c,d);
e);
doublef(doublex,doublea,doubleb,doublec,doubled){
doublee,p=1.0,g;
inti;
3;
p=p*x;
g=x*x;
e=a*p+b*g+c*x+d;
returne;
八、计算两个分数的和
输入两个分数,形式如1/2,计算它们的和,以分数形式输出
第一行为第一个分数第二行为第二个分数
两个分数的和
1/2
3/4
5/4
intx,y,a,b,m,n,temp,r,p,t,z;
%d/%d"
y);
b);
m=x*b+y*a;
z=m;
n=y*b;
t=n;
if(n<
m){
temp=n;
n=m;
m=temp;
while(m!
=0){
r=n%m;
m=r;
p=n;
z/p,t/p);
五一到了,NUIST-ACM队组织大家去登山观光,队员们发现山上一个有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号。
同时队员们还有另一个登山习惯,就是不连续浏览海拔相同的两个景点,并且一旦开始下山,就不再向上走了。
队员们希望在满足上面条件的同时,尽可能多的浏览景点,你能帮他们找出最多可能浏览的景点数么?
Line1:
N(2<
=N<
=1000)景点数
Line2:
N个整数,每个景点的海拔
最多能浏览的景点数
8
186186150200160130197220
4
intf(inta[1000],intn);
intn,a[1000],i,m;
m=f(a,n);
intf(inta[1000],intn){
inti,j=1,s,m,b[1000];
for(m=n;
m>
m--){
m;
a[i-1]){
j++;
for(i=m-1;
if(a[i]<
b[n-m]=j;
j=1;
s=b[0];
if(s<
b[i]){
s=b[i];
returns;
十、计算平均年龄
intn,m,i;
floatb,a=0.0;
m);
a=a+m;
b=a/n;
b);
以1为中心,用2,3,。
。
,n的数字围绕着中心输出一个数圈,若n=4
78910
61211
54312
16151413
一个整数n(1<
=n<
=10)
一个数圈
2122232425
2078910
1961211
1854312
1716151413
#defineN10
intnum[N][N];
intcircle=2,row,column,n,i=1,j;
//circl为每转半圈的数字个数
/*确定开始的那个1的位置*/
if(n%2)
row=column=n/2;
else
row=column=n/2-1;
num[column][row]=i++;
num[column][++row]=i++;
while(circle<
=n){
while(j<
=circle-1){
/**当circle为奇偶数时,行的增减不一样**/
if(circle%2)
num[--column][row]=i++;
num[++column][row]=i++;
circle++;
=circle-1){/*同上**/
num[column][--row]=i++;
j++)
%3d"
num[i][j]);
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?
(用K表示)5,1,1和1,5,1是同一种分法。
第一行是测试数据的数目t(0<
=t<
=20)。
以下每行均包含二个整数M和N,以空格分开。
1<
=M,N<
=10。
对输入的每组数据M和N,用一行输出相应的K。
173
8
intf(intm,intn){
if(m==1||n==1){
return1;
}elseif(m==n){
return1+f(m,m-1);
}elseif(m<
n){
returnf(m,m);
}elseif(m>
returnf(m,n-1)+f(m-n,n);
}
intt(0);
t);
for(inti=0;
t;
++i){
intm(0),n(0);
%d%d"
m,&
%d\n"
f(m,n));
给你一个数字求它的所有约数的和。
比如12,约数有1,2,3,4,6,12加起来是28
现在给你一个数字I。
(1<
=I<
=1,000)
输入一个数字I
输出约数之和样例输入
12
28
intmain(){
inti,m,sum;
for(i=1,sum=0;
m+1;
if(m%i==0)
sum+=i;
sum);
#defineN5
inti,j,temp;
N;
for(j=0;
=N-2;
N-j-1;
十五、构造新的模运算
给定整数a,b,n,要求计算(a^b)modn
输入多组数据,每组数据一行,为三个用空格隔开的整数a,b,n
=a<
=40,0<
=b<
=3,1<
=500
输出每组数据输出一行,为所求值
235
224
0
inta,b,n;
while(scanf("
%d%d%d\n"
n)!
=EOF){
(int)(pow(a,b))%n);
#defineN100
intn,i,max,min;
min=a[0];
for(i=1