C语言跳绳问题

描述
小朋友玩跳绳比赛,要计算在一分钟内跳了多少下.假设每秒钟跳一下,如果中途失败了,则要花三秒钟后才能开始重跳.一般小朋友跳绳一分钟要跳坏好几次.现在给出小朋友每次跳坏时已经跳的总数,求小朋友在一分钟内跳了多少下.(请注意分析示例数据.)
输入
第一行为n个小朋友
其余各行,每行第一个整数是跳坏的次数m,其余m个整数是跳坏时累计跳了多少下.
输出
输出相应小朋友头一分钟内跳了多少下.
样例输入
6
0
3 12 23 45
1 17
4 10 20 30 40
5 10 20 30 40 58
6 10 20 30 40 47 60样例输出
60
51
57
48
48
47提示
提示,在跳绳比赛时,你可能已经超时了,但自己还在计数,但裁判已经停止计时并得到成绩了.这里相当与自己计数.因此,并非跳坏的时候都是在前一分钟以内.请注意分析示例数据.

#include<stdio.h>
int main()
{
int n, i, a, b, c[10], t=0, x=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a);
if(a==0)
{printf("60\n");continue;}
for(b=0;b<a;b++)
scanf("%d",&c[b]);
for(a=a;;)
{
if(3*(a-1)+c[a-1]>60)
a-=1;
else break;
}
if((60-c[a-1]-3*a)<=3)
{x=c[a-1]; printf("%d\n",x);break;}
else
x=c[a-1]+(60-c[a-1]-3*a);
printf("%d\n",x);
}
return 0;
}

帮忙改一下

第1个回答  2013-02-22
#include<stdio.h>
int main()
{ int n, i, a, b, c[10],num[20], t=0;
scanf("%d",&n);

for(i=0;i<n;i++)
{
scanf("%d",&a);
if(a==0)
{
num[i]=60;
continue;
}
for(b=0;b<a;b++)
scanf("%d",&c[b]);
for(a=a;;)
{
if(3*(a-1)+c[a-1]>60)
a-=1;
else
break;
}
if((60-c[a-1]-3*a)<=3)
{
num[i]=c[a-1];
break;
}
else
num[i]=c[a-1]+(60-c[a-1]-3*a);

}

for(i=0;i<n;i++)
printf("%d\n",num[i]);

return 0;

}
第2个回答  2011-12-17
你的代码是对的,能求解问题,只是格式上就我觉得不是很好。如果是我,会这样(你可以参考一下):
#include<stdio.h>
int main(void)
{
int n, i, a, b, c[10], t=0, x=0;
scanf("%d", &n);
for(i=0; i<n; i++)
{
scanf("%d", &a);
if(a==0)
{
printf("60\n");
continue;
}
for(b=0; b<a; b++)
scanf("%d", &c[b]);
for(a=a; ; )
{
if(3*(a-1)+c[a-1]>60)
a-=1;
else
break;
}
if((60-c[a-1]-3*a)<=3)
{
x=c[a-1];
printf("%d\n", x);
break;
}
else
x=c[a-1]+(60-c[a-1]-3*a);
printf("%d\n",x);
}
return 0;
}

另外这是我试着编的,交流一下
#include<stdio.h>
int a[10], b[10], c[10];
int main(void)
{
void Input(int);
void Solve(int);
void Output(int);
int i, n;
printf("请输入跳绳的小朋友人数:\n");
scanf("%d", &n);
for(i=0; i<n; i++)
{
Input(i);
Solve(i);
}
Output(n);
}
void Input(int i)
{
int j;
printf("请输入第%d个小朋友跳坏的次数:\n", i+1);
scanf("%d", &a[i]);
if(a[i]==0)
return;
printf("请分别输入该小朋友跳坏时已跳的次数:\n");
for(j=0; j<a[i]; j++)
scanf("%d", &b[j]);
}
void Solve(int i)
{
if(a[i]==0)
c[i]=60;
else
{
while(3*a[i]+b[a[i]-1]>60)
a[i]--;
if(b[a[i]-1]>=57)
c[i]=b[a[i]-1];
else
c[i]=60-3*a[i];
}
}
void Output(int n)
{
int i;
for(i=0; i<n; i++)
printf("第%d位小朋友跳绳总数:\t%d\n", i+1, c[i]);
}本回答被提问者和网友采纳
第3个回答  2011-12-17
无语。。
第4个回答  2011-12-17
路过
第5个回答  2011-12-17
改什么东西 我测试了下 可以执行 而且是对的呀?
相似回答