C语言考试平台_c语言考试平台图文

2020-02-27 其他范文 下载本文

C语言考试平台由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言考试平台图文”。

一 A+B Problem

Time Limit:1000MS Memory Limit:65536K

Total Submit:2153 Accepted:1096 Description

Calculate a+b

Input

Two integer a,b(0

Output

Output a+b

Sample Input 2

Sample Output

Hint

Here is a sample solution for problem using C/GCC:

#include

int main(){

int a,b;

scanf(“%d %d”,&a, &b);printf(“%dn”,a+b);return 0;}

#include

int main(){

int a,b;

scanf(“%d %d”,&a, &b);printf(“%dn”,a+b);return 0;}

第三届程序设计大赛 让气球飞起来

Time Limit:1000MS Memory Limit:65536K

Total Submit:325 Accepted:103 Description

比赛又一次开始了,看着气球漂浮在周边是多么兴奋的事情啊,但是告诉你一个秘密,裁判最喜欢做的事情就是猜一个问题,即数目最多的气球颜色。当比赛结束时,他们会数每种颜色的气球数目并公布结果。今年,他们决定将数气球的事情交给你做。

Input

测试数据第一行是一个N(0

Output

对于每组测试数据,对应一行输出颜色最多的气球颜色,测试数据能保证对应的结果唯一。Sample Input green red blue red red

Sample Output

red

Source

#include #include int main(){

int a[100]={0};char str[100][16];int x,i,j;scanf(“%d”,&x);for(i=0;i

scanf(“%s”,&str[i][0]);} for(i=0;i

for(j=i;j

if(strcmp(&str[i][0],&str[j][0])==0)

++a[i];}

for(i=1;i

if(a[0]

{

strcpy(&str[0][0],&str[1][0]);

}

a[0]=a[i];} } printf(“%s”,&str[0][0]);return 0;

3_6搬砖问题

Time Limit:1000MS Memory Limit:65536K

Total Submit:2842 Accepted:823 Description

某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块,有多少种搬法用45人正好搬45块砖?

Input

Output

men= women= child=

Sample Input

Sample Output

men=0 women=15 child=30 men=3 women=10 child=32 men=6 women=5 child=34 men=9 women=0 child=36 Source

#include main(){ float c,y,m,w;for(m=0;m

for(w=0;w

{

c=45-m-w;

y=m*3.0+w*2.0+c/2.0;

if(y==45)

printf(“men=%.0f women=%.0f child=%.0fn”,m,w,c);

} } return 0;}

3_3统计不同类型字符

Time Limit:1000MS Memory Limit:65536K

Total Submit:1954 Accepted:397 Description

输入一行字符,分别统计其中英文字母、空格、数字和其它字符的个数。

Input

键盘上的任意字符串,以;结束。Output

character= ,blank= ,digit= ,other=;

Sample Input

case 1:printf(“very good!”);

Sample Output

character=18,blank=2,digit=1,other=6;

Source

#include #include main(){ char str[100];int c=0,b=0,d=0,o=0;int i,sum=0;for(i=0;;i++){

scanf(“%c”,&str[i]);

++sum;

if(str[i]==';')

break;} for(i=0;i

if(str[i]>='a' && str[i]='A')

++c;

else if(str[i]==' ')

++b;

else if(str[i]='0')

++d;

else

++o;} printf(“character=%d,blank=%d,digit=%d,other=%d;”,c,b,d,o);}

return 0;

3_5求正整数的位数及各位数字和

Time Limit:1000MS Memory Limit:65536K

Total Submit:2612 Accepted:585 Description

输入个正整数num,求它的位数以及各位数字之和。

Input

正整数num(0≤num≤100000)

Output

位数n;各位数字之和sum。

Sample Input

123

Sample Output

n=3;sum=6

Source

#include main(){

} int a[50]={0};int x,sum=0,n=0;int i,them,p=10;scanf(“%d”,&x);them=x;for(i=0;;i++){ them/=10;++n;if(them==0)

break;} for(i=1;i

3_4计算无限序列

Time Limit:1000MS Memory Limit:65536K

Total Submit:1025 Accepted:530 Description

输入一个正整数n,计算1-1/4+1/7-1/10+1/13-1/16+...的前n项之和,输出时保留3位小数。Input

正整数n(1≤n≤20)

Output

结果保留3位小数。

Sample Input

Sample Output

0.893

Source

#include #include main(){ float x,y=1,p=1,sum=0;int n,i=1;scanf(“%d”,&n);while(i

sum+=p;

y=y+3;

if(i%2==0)

p=1/y;

else

p=-1/y;

++i;} printf(“%.3f”,sum);return 0;}

3_1分段程序求值

Time Limit:1000MS Memory Limit:65536K

Total Submit:1617 Accepted:662 Description

输入x,计算并输出下列分段函数f(x)的值。

Input

实数x(-20≤n≤20)

Output

保留2位小数。

Sample Input

Sample Output

-3.00

Source

#include #include main(){

}

float x,y;scanf(“%f”,&x);if(x

3_2二次方程求根

Time Limit:1000MS Memory Limit:65536K

Total Submit:2476 Accepted:554 Description

输入参数a、b、c,求一元二次方程ax2+bx+c=0的根。

Input

三个实数a、b、c,并确保Δ≥0。

Output

方程两个实根,保留两位小数。

Sample Input 2-8

Sample Output x1=2.00 x2=-4.00

Source

#include #include main(){ float a,b,c;float x1,x2;scanf(“%f%f%f”,&a,&b,&c);x1=(-b+sqrt(b*b-4*a*c))/(2*a);x2=(-b-sqrt(b*b-4*a*c))/(2*a);printf(“x1=%.2f x2=%.2f”,x1,x2);return 0;}

Exp3_1温度转换

Time Limit:1000MS Memory Limit:65536K

Total Submit:1263 Accepted:542 Description

输入一个华氏温度f,要求输出摄氏温度c。公式为c=5/9(f-32)。

Input

华氏温度

Output

摄氏温度,保留2位小数。Sample Input

100.25

Sample Output

37.92

Source

#include #include main(){ float f,c;scanf(“%f”,&f);c=5.0/9.0*(f-32.0);printf(“%.2f”,c);return 0;}

Exp3_5手机收费

Time Limit:1000MS Memory Limit:65536K Total Submit:1518 Accepted:684 Description

假设手机有两种收费方式,第一种是每分钟0.6元,无月租费;另一种是每分钟0.4元再收50元月租费,输入一个月打电话的时间(分钟),判断那一种方案更省钱。

Input 输入一个月打电话的时间,整型。

Output

输出最经济的话费,实型,保留两位小数。

Sample Input

Sample Output

60.00

Source

#include #include main(){ float m1,m2;int t;scanf(“%d”,&t);m1=0.6*t;m2=50.0+0.4*t;if(m1>m2)

printf(“%.2f”,m2);else

printf(“%.2f”,m1);return 0;}

十一

Exp3_6税收问题

Time Limit:1000MS Memory Limit:65536K

Total Submit:1350 Accepted:396 Description

假设某国家收税是分段计费,标准如下:在1万元以上部分收税20%;5000-10000元部分收税10%;1000-5000元部分收税5%;1000元以下部分免税。根据输入的金额计算应缴纳的税金。

如:某人收入是12000元,则应缴纳的税金为4000*5%+5000*10%+2000*20%=1100元

Input

输入一个月的收入,实型。

Output

输出应缴纳的税金,实型,保留两位小数。

Sample Input

12000

Sample Output

1100.00

Source

#include main(){ float x,sum;scanf(“%f”,&x);if(x

sum=0;else if(x

sum=(x-1000.0)*0.05;else if(x

sum=(x-5000.0)*0.1+200.0;

}

else sum=(x-10000.0)*0.2+700.0;printf(“%.2f”,sum);return 0;

十二

第三届程序设计大赛 大优惠

Time Limit:1000MS Memory Limit:65536K

Total Submit:680 Accepted:212 Description

中国移动推出最新的手机资费优惠方案,按照这个方案Tom的手机每天消费1元,每消费K元就可以获赠1元,一开始Tom有M元,问最多可以用多少天?

Input

输入的测试数据为一行,实例包括2个整数M, K(2

Output

输出一个整数,表示M元可以用的天数。

Sample Input 3

Sample Output

Source #include main(){ int m,k;int d=0,i;scanf(“%d%d”,&m,&k);for(i=1;i

++d;

if(i==k)

{

++m;

i=0;

}

if(d==m)

break;} printf(“%d”,d);return 0;}

十三

第三届程序设计大赛 阶乘之和

Time Limit:1000MS Memory Limit:65536K

Total Submit:143 Accepted:76 Description

给你一个非负数整数N,判断N是不是一些数(这些数不允许重复使用,且为正数)的阶乘之和,如9=1!+2!+3!,如果是,则输出Yes,否则输出No

Input

第一行有一个整数M(0

每组测试数据有一个正整数N(0

如果符合条件,输出Yes,否则输出No;

Sample Input 24 29 31

Sample Output

Yes No Yes

Source

#include main(){ long int n[101],a[101];int m,p=0;long int y=0,them=1;int i,j,k;scanf(“%d”,&m);for(i=0;i

scanf(“%d”,&n[i]);for(i=0;i

p=0;

y=0;

them=1;

for(j=1;j

{

y+=them;

a[j]=them;

them*=(j+1);

if(them>=n[i])

{

}

for(k=j;k>0;k--)

{

if(n[i]-a[k]==0)

{

p=1;

break;

}

else if(n[i]-a[k]>0)

n[i]=n[i]-a[k];

}

} } if(p==1)

printf(“Yesn”);else

printf(“Non”);} return 0;

十四

第三届程序设计大赛 五彩的卡片

Time Limit:1000MS Memory Limit:65536K

Total Submit:132 Accepted:60 Description

Tom拥有许多色彩缤纷的卡片,一共有4种颜色,分别为:红,绿,蓝,黄。

Tom随机取出N张卡片排成一列,他突然觉得不够美观。他决定替换掉某些卡片使得相邻两张卡片的颜色各不相同。

你的任务就是帮他计算出至少需要替换掉的卡片数量。由于每种颜色的卡片他都有很多,所以可以认为每种颜色的卡片数量是无限的。

Input 输入数据的第一行为一个整数N,表示序列中有N个字符(1

Output

输出一个整数C,表示至少需要替换掉的卡片数。

Sample Input RGGBBBRYYB

Sample Output

Source

#include main(){ int n,m=0,i;char str[10000];scanf(“%d”,&n);scanf(“%s”,str);for(i=1;i

if(str[i]==str[i-1])

{

str[i]='0';

++m;

} } printf(“%d”,m);return 0;}

十五

第三届程序设计大赛 汽车加油

Time Limit:1000MS Memory Limit:65536K

Total Submit:296 Accepted:74 Description

一辆汽车加满油后可行驶N公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。

Input

第一行有2 个正整数N和K(1

Output

将编程计算出的最少加油次数输出。如果无法到达目的地,则输出

No Solution(注意:No和Solution之间有一个空格)

Sample Input 8 3 2 3 6 5 4 2 7 2

Sample Output

Source

#include main(){

}

int n,k,p=1,time=0;int i;int a[102];scanf(“%d%d”,&n,&k);for(i=0;in){

p=0;

break;} } for(i=1;in){

++time;}

else if(a[i]+a[i-1]==n){

++time;

++i;} else {

a[i]=a[i-1]+a[i];} } if(p==1)printf(“%d”,time);else printf(“No Solution”);return 0;

十六

第三届程序设计大赛 搬果实

Time Limit:1000MS Memory Limit:65536K

Total Submit:161 Accepted:55 Description

在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆,只有相邻的两堆可以合并。

每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过N-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。

因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。

Input

输入包括两行,第一行是一个整数N(1

Output

包括一行,这一行只包含一个整数,也就是最小的体力耗费值。

Sample Input 1 2 9

Sample Output Source

#include main(){ int n,sum=0,p,temp,k;int a[105]={0},b[104]={0};int i,j;scanf(“%d”,&n);for(i=0;i

scanf(“%d”,&a[i]);k=n;while(k>=2){

temp=0;

for(i=0;i

{

b[i]=a[i]+a[i+1];

}

for(i=0;i

if(b[0]>b[i])

{

b[0]=b[i];

temp=i;

}

sum+=b[0];

a[temp]=b[0];

for(i=temp+1;i

{

a[i]=a[i+1];

}

--k;} printf(“%d”,sum);return 0;}

测试时用的数据

#include main(){ int n,sum=0,p,temp,k;int a[105]={0},b[104]={0};

}

int i,j;scanf(“%d”,&n);for(i=0;i=2){ temp=0;for(i=0;i

b[i]=a[i]+a[i+1];

printf(“%d****”,b[i]);} for(i=0;i

if(b[0]>b[i])

{

b[0]=b[i];

temp=i;

} sum+=b[0];printf(“b[0]=%d,sum=%d,temp=%d”,b[0],sum,temp);a[temp]=b[0];for(i=temp+1;i

a[i]=a[i+1];}--k;for(i=0;i

printf(“..%d..”,a[i]);printf(“,k=%d”,k);printf(“n”);} printf(“%d”,sum);return 0;

十七 第三届程序设计大赛 哥德巴赫猜想

Time Limit:1000MS Memory Limit:65536K

Total Submit:134 Accepted:60 Description

1742年,哥德巴赫在给好友欧拉的一封信里陈述了他著名的猜想——哥德巴赫猜想:任何一个大于4的偶数都是两个素数之和。

例如:

8=3+5,3和5都是素数。

20=3+17=7+13

42=5+37=11+31=13+29=19+23

你的任务是写出10000以内的哥德巴赫猜想。

Input

输入包含一组或多组测试数据。

测试数据每一行是一个偶数N(0

输入数据以0为结束符,0不需要处理。

Output

对于每行测试数据,对应一行形式为N=a+b输出(a

Sample Input 20 42 0

Sample Output

8=3+5 20=3+17 42=5+37 Source

#include #define N 10000 main(){ int n[N];int k=0,p,a,b;int str[10002];int i,j,v,m=0,x;for(i=2;i

x=0;

for(j=2;j

{

if(i%j==0)

x=1;

}

if(x==0)

{

str[m]=i;

++m;

} } for(i=0;;i++){

scanf(“%d”,&n[i]);

++k;

if(n[i]==0)

break;}--k;for(i=0;i

p=1;

for(j=0;j

{

for(v=m;v>=0;v--)

{

if(n[i]==str[j]+str[v])

{

a=str[j];

b=str[v];

}

}

}

}

} printf(“%d=%d+%dn”,n[i],a,b);p=0;break;if(p==0)break;return 0;

十八

第二届程序设计大赛 亏多少?

Time Limit:1000MS Memory Limit:65536K

Total Submit:91 Accepted:71 Description

商人能赚钱也能赔钱。

比如,商人吕不韦花40元买了某商品,他决定70元卖掉。一个顾客给了吕不韦100元,吕不韦找了他30元,理论上吕不韦赚了30元。但很不幸,吕不韦发现那100元是假的,于是他亏了70元(40元商品+30元的找钱)。

Input

我们有多组测试数据,第一行是一个X(1

接下来的X行中,每行由4个数字构成,分别为N,M,P和C(数字范围0-32767),数字之间以一个空格分开。

N:商品的成本

M:商品的售价

P:吕不韦收到假钱总数 C:吕不韦找给顾客的钱

其中:N

Output

每行输入数据对应一个输出数据,告诉吕不韦亏多少钱,如果还是赚钱的,那么请输出负数。

Sample Input 40 70 100 30 40 70 50 20 14604 32391 3902 153

Sample Output

20-13885

Hint

提示:例子2分析:顾客支付了90元(50元假钱+40元真钱),吕不韦亏了20元(得到40元真钱-找给顾客20元-40元商品价格)

Source

#include int main(){ int x,n,m,p,c;int sum[21]={0};int i;scanf(“%d”,&x);for(i=0;i

scanf(“%d %d %d %d”,&n,&m,&p,&c);

if(p==m+c)

sum[i]+=(c+n);

}

else

sum[i]+=(n+p-m);} for(i=0;i

十九

第二届程序设计大赛 IP地址

Time Limit:1000MS Memory Limit:65536K

Total Submit:110 Accepted:57 Description

常见的IP地址的表示方式为x.x.x.x,如172.16.163.66,它还可以用“位”来表示。

你的任务是将32个‟0‟和‟1‟构成的二进制序列转换为十进制的表示格式,每8位之间以‟.‟间隔。

Input

输入数据第一行是一个正整数N(1

接下来的N行表示N组数据。

Output

每行输入数据对应一行输出数据。

每行输入的二进制数据对应一个十进制的输出数据,每8位以‟.‟间隔。

Sample Input 4 ******00 ******11 ******00 ******01

Sample Output

0.0.0.0 3.128.255.255 203.132.229.128 80.16.0.1

Source

#include int fact(int n);int main(){ int n,i,j,k;int a[20][4]={0},b[8];char str[32];scanf(“%d”,&n);for(i=0;i

scanf(“%s”,str);

for(k=0;k

{

for(j=8*k;j

{

if(str[j]=='0')

b[j-8*k]=0;

else

b[j-8*k]=fact(7-j+8*k);

}

for(j=8*k;j

a[i][k]+=b[j-8*k];

}

} for(i=0;i

printf(“%d.%d.%d.%dn”,a[i][0],a[i][1],a[i][2],a[i][3]);return 0;} int fact(int n){ int res;if(n==0)

res=1;else

res=2*fact(n-1);return res;}

二十

求和问题

Time Limit:1000MS Memory Limit:65536K

Total Submit:861 Accepted:349 Description

求s=a+aa+aaa+aaaa+aaa……a的值,其中a是一个数字,例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘输入。

Input

输入的测试数据为1行,实例包括2个整数,分别是a的值和加数的个数。

Output

输出1个整数,表示求和结果。

Sample Input 5 Sample Output

37035

Source

#include int main(){ int a,n,sum=0,p=1;int j;scanf(“%d%d”,&a,&n);

for(j=n;j>0;j--)

{

p=a*j;

a*=10;

sum+=p;

} printf(“%d”,sum);return 0;}

二十一

Problem A:字符串

Time Limit:1000MS Memory Limit:65536K

Total Submit:277 Accepted:132 Description

从键盘中输入一串字符串(长度不超过80个字符),假定输入的字符串中只含有字母和#号,请将字符串中的前导#全部移到字符串的尾部,中间的#保持不变。可使用数组或指针实现,不能使用字符串复制函数。Input

输入一串字符串,长度不超过80个字符,只包含字母和#号,并且以#开头和结束。

Output

输出移动后的字符串。

Sample Input

#####A#BC#DEF#G###

Sample Output

A#BC#DEF#G

#

Source

#include #include int main(){ char str[80];int i,j,k=0;scanf(“%s”,str);for(i=0;i

if(str[i]>='a' && str[i]='A')

{

break;

} for(j=i;j

if(j

printf(“%c”,str[j]);

else

{

printf(“%c”,str[k]);

k++;

} return 0;}

二十二

完数

Time Limit:1000MS Memory Limit:65536K

Total Submit:540 Accepted:307 Description

输入一个正整数x,判断是否为完数。说明:“完数”是指这个数正好等于它的因子之和。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”

Input

一个正整数。

Output

yes 或者 no

Sample Input

Sample Output

yes

Source

#include int main(){

}

int n,sum=0;int i,j;scanf(“%d”,&n);for(i=1;i

sum+=i;} } if(sum==n)printf(“yes”);else printf(“no”);return 0;

二十三

多项式求和

Time Limit:1000MS Memory Limit:65536K

Total Submit:462 Accepted:282 Description

输入一个正整数m,计算y的值(y=1+1/3+1/5+1/7+…+1/(2m+1))。

Input

一个正整数。

Output

一个实数,保留小数点后六位。Sample Input

Sample Output

2.133256

Source

#include int main(){ float m,sum,y=1,i;scanf(“%f”,&m);for(i=1;i

y+=1.0/(2*i+1);

} printf(“%f”,y);return 0;}

二十四

求和问题

Time Limit:1000MS Memory Limit:65536K

Total Submit:715 Accepted:303 Description

计算1-x/2+x/3-x/4+……+x/99-x/100的值。其中,x是一个正整数。(1000)

输入一个正整数,代表x的值。

Output

输出一个实数,表示求和结果,保留2位小数。

Sample Input

Sample Output

0.69

Source

#include int main(){ int x;float y,temp=1.0,i,sum=1;scanf(“%d”,&x);for(i=2;i

temp*=-1;

y=temp*x/i;

sum+=y;} printf(“%.2f”,sum);return 0;}

二十五

求和问题

Time Limit:1000MS Memory Limit:65536K

Total Submit:237 Accepted:151 Description

计算1+x/2-x/3+x/4-x/5+……+x/98-x/99+x/100的值。其中,x是一个正整数。

Input

输入一个正整数,代表x的值。

Output

输出一个实数,表示求和结果,保留2位小数。

Sample Input

Sample Output

1.31

Source

#include int main(){ int x;float y,temp=1.0,i,sum=1;scanf(“%d”,&x);for(i=2;i

y=temp*x/i;

sum+=y;

temp*=-1;}

}

printf(“%.2f”,sum);return 0;

二十六

判断字符类型

Time Limit:1000MS Memory Limit:65536K

Total Submit:152 Accepted:70 Description

判断输入的单个字符是否为小写字母。

Input

输入单个字符。

Output

是小写字母,屏幕输出Yes 不是小写字母,屏幕输出No

Sample Input

a

Sample Output

Yes

Source #include int main(){ char ch;scanf(“%c”,&ch);if(ch='a')

printf(“Yes”);else

printf(“No”);return 0;}

二十七

级数求和问题

Time Limit:1000MS Memory Limit:65536K

Total Submit:209 Accepted:66 Description

计算x-x/2+x/3-x/4+…+x/99-x/100+…,直到最后一项的绝对值小于0.00001为止。

Input

正整数x(1 =

Output

一个实数,小数点后保留2位。

Sample Input Sample Output

2.08

Source

#include #include int main(){ int x;float i,y,sum=0,temp=1;scanf(“%d”,&x);for(i=1;;i++){

y=temp*x/i;

temp*=-1;

sum+=y;

if(fabs(y)

break;} printf(“%.2f”,sum);return 0;}

二十八

符合条件的数

Time Limit:1000MS Memory Limit:65536K

Total Submit:118 Accepted:66 Description 一个正整数与3的和是5的倍数,与3的差是6的倍数,编写一个程序求符合条件的前n个数。

Input

正整数n(1 =

Output

符合条件的数,每个一行。

Sample Input

Sample Output 57 87 117 147 Source

#include

int main(){ int n,x[500],i,k=0;for(i=1;i

if((i+3)%5==0 &&(i-3)%6==0)

{

x[k]=i;

++k;

} } scanf(“%d”,&n);for(i=0;i

}

printf(“%dn”,x[i]);return 0;

二十九

Problem B:交换字符

Time Limit:1000MS Memory Limit:65536K

Total Submit:97 Accepted:42 Description

从键盘中输入一串字符串(长度不超过80个字符),假定输入的字符串中只含有字母和数字,请将字符串中的前导数字全部移到字符串的尾部,中间的数字保持不变。可使用数组或指针实现,不能使用字符串复制函数。

Input

输入一串字符串,长度不超过80个字符,只包含字母和数字,并且以数字开头和结束。

Output

输出移动后的字符串。

Sample Input

1234A5BC6DEF7G89

Sample Output

A5BC6DEF7G891234

#include #include int main(){ char str[80];int i,j,k=0;scanf(“%s”,str);for(i=0;i

if(str[i]>='a' && str[i]='A')

{

break;

} for(j=i;j

if(j

printf(“%c”,str[j]);

else

{

printf(“%c”,str[k]);

k++;

} return 0;}

三十

PK赛

Time Limit:1000MS Memory Limit:65536K

Total Submit:397 Accepted:222 Description

一年一度的厦门理工学院程序设计大赛又开始了,今年是第五届。今年赛会组织方决定用一种新规则决定获胜的选手。在每一轮比赛中,参赛者都是成对的,两两比赛。输者将被淘汰,赢者将自动晋级到下一轮比赛中。比赛一直进行到只剩一个人为止,这个人就是冠军。

在一轮比赛中,如果比赛人数不是偶数,那么将随机选择一个参赛者自动晋级下一轮,而其它人还是一对一地完成本轮比赛。赛会组织方想知道要产生冠军需要进行多少轮比赛。

Input

参赛的人数N(1

Output

比赛需要的总轮数。

Sample Input

Sample Output

Source

#include

int main(){ int n,sum=0,i;scanf(“%d”,&n);for(i=1;;i++){

if(n%2!=0)

{

--n;

n/=2;

++n;

++sum;

}

else

{

n/=2;

++sum;

}

} if(n==1)

break;} printf(“%d”,sum);return 0;

三十一

第四届程序设计大赛 数字四的游戏

Time Limit:1000MS Memory Limit:65536K

Total Submit:314 Accepted:113 Description

一年一度的厦门理工学院程序设计大赛又开始了,今年是第四届。今年赛会组织方决定用一种新规则决定获胜的选手。他们将参赛选手从1编号到N并围成一圈,从第一个人开始报数,报到4的人退出,下一个人从 1 开始重新报数,报到4 的人退出。如此循环,直到留下最后一个人,他就是获胜者。

Input

参赛的人数N(1

Output

获胜选手的编号。

Sample Input

Sample Output 1

Source

#include int main(){ int a[1001]={0};int i=1,k;int n,p=0;scanf(“%d”,&n);for(i=1;i

a[i]=i;k=n;i=1;while(k!=1){

if(a[i]!=0)

++p;

if(p==4)

{

a[i]=0;

p=0;

--k;

}

if(i==n)

{

i=0;

}

++i;} for(i=1;i

if(a[i]!=0)

printf(“%d”,a[i]);return 0;}

三十二

搬家的烦恼

Time Limit:1000MS Memory Limit:65536K

Total Submit:635 Accepted:76 Description

理工学院的学生每个学年结束以后都要搬宿舍,搬宿舍的烦恼还只是暂时的,搬宿舍以后发现插座不够用是永远的伤痛。

同学们发现新宿舍只有一个插座,但他们有很多台电脑需要同时使用,于是他们买来了好几个排插,每个排插可支持的插头不一样多,你的任务是帮他们计算一下他们的排插能支持多少台电脑同时使用。(注意:排插本身也需要电源接入)

Input

输入数据由一个整数N打头(1

接下来是N行,每行描述了一个测试案例。每个测试案例以一个整数K打头(1

Output

每个测试案例对应一行整数输出,这个整数表示最多能支持的电脑数量。

Sample Input 3 2 3 4 4 10 10 10 10

Sample Output 37

Source

#include int main(){ int n,k,a[11],y,sum;int i,j;scanf(“%d”,&n);for(i=0;i

sum=0;

scanf(“%d”,&k);

for(j=0;j

{

scanf(“%d”,&y);

sum+=y;

}

a[i]=sum-k+1;} for(i=0;i

printf(“%dn”,a[i]);return 0;}

三十三

Description

输入一个正整数m,计算y的值(y=1+1/2+1/4+1/6+…+1/(2m))。

Input

一个正整数。

Output

一个实数,保留小数点后2位。

Sample Input

《C语言考试平台.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
C语言考试平台
点击下载文档
相关专题 c语言考试平台图文 考试 语言 平台 c语言考试平台图文 考试 语言 平台
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文