为什么我写的程序acm中显示是wrong answer?? 急需高人指点

第一题:网址是:http://acm.hdu.edu.cn/showproblem.php?pid=2020
#include<stdio.h>
#include <math.h>
int main()
{
int n,i,j;
while(scanf("%d",&n)!=EOF&&n!=0)
{
int a[100],d=0,b=0,c=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]<0)
{
d=-a[i];
}
else d=a[j];
if(a[j]<0)
{
b=-a[j];
}
else b=a[j];
if(d<b)
{
c=a[i];
a[i]=a[j];
a[j]=c;
}
}
}
for(i=0;i<n;i++)
{
printf("%d",a[i]);
if(i<(n-1))
{
printf(" ");
}
}
printf("\n");
}
}

第二题:网址是:http://acm.hdu.edu.cn/showproblem.php?pid=2021
#include<stdio.h>
int main()
{
int n,i;
while(scanf("%d",&n),n)
{
int a[100],b=0,c=0,d=0,e=0,f=0,g=0,j=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
c=a[i]/100;
d=(a[i]%100)/50;
e=(a[i]%50)/10;
f=(a[i]%10)/2;
g=a[i]%2;
b=c+d+e+f+g;
j+=b;
}
printf("%d\n",j);
}
return 0;
}

第1个回答  推荐于2016-05-01
你用的是c语言,最好不要在半路定义变量,那是c++的写法

第一题你的测试数据都没过怎么能交呢?
/*
if(a[i]<0)
{
d=-a[i];
}
else d=a[j]; //你的这里错了,应该是a[i]
*/

#include<stdio.h>
#include <math.h>
int main()
{
int n,i,j;
int a[100],d,b,c;
while(scanf("%d",&n)!=EOF&&n!=0){
for(i=0;i<n;i++)
scanf("%d",&a[i]);

for(i=0;i<n;i++){
for(j=i+1;j<n;j++)
{
d=abs(a[i]);
b=abs(a[j]);
if(d<b)
{
c=a[i];
a[i]=a[j];
a[j]=c;
}
}
}

printf("%d",a[0]);
for(i=1;i<n;i++)
printf(" %d",a[i]);
printf("\n");
}
return 0;
}

第二题你没更新a[i]的值:

#include<stdio.h>
int main()
{
int n,i,j;
int a[100],mon;
int money[6]={100,50,10,5,2,1};
while(scanf("%d",&n),n)
{
mon=0;
for(i=0;i<n;i++)
scanf("%d",&a[i]);

for(i=0;i<n;i++)
for(j=0;j<6;j++)
{
mon+=a[i]/money[j];
a[i]%=money[j];
}
printf("%d\n",mon);
}
return 0;
}本回答被提问者采纳
第2个回答  2010-08-04
第一题
else d=a[j]; 你的这里错了,应该是a[i]
还有你为什么不在输入时做下处理,把他们改成自己的绝对值,就不用在排序中那么麻烦了。

第二题 你似乎没考虑5块钱,还有你试试1 15。。。而且每次要更a[i]的值,这样才是剩下的零钱数。

下面是我的程序
第一题
#include<iostream>
using namespace std;
int main()
{
int n,i,m,j,a[101],b[101];
while (scanf("%d",&n))
{
if (n==0) break;
for (i=1;i<=n;i++)
{
scanf("%d",&a[i]);
b[i]=abs(a[i]);
}
for (i=1;i<n;i++)
{
m=i;
for (j=i+1;j<=n;j++)
if (b[j]>b[m])
m=j;
swap(a[i],a[m]);
swap(b[i],b[m]);
}
for (i=1;i<=n;i++)
{
if (i!=1) printf(" ");
printf("%d",a[i]);
}
printf("\n");
}
return 0;
}
第二题
#include<iostream>
using namespace std;
int gongzi(int n)
{
int a,b,c,d,e,f;
a=n/100;
n%=100;
b=n/50;
n%=50;
c=n/10;
n%=10;
d=n/5;
n%=5;
e=n/2;
f=n%2;
return a+b+c+d+e+f;
}
int main()
{
int n,a,s;
while (scanf("%d",&n))
{
if (n==0) break;
s=0;
while (n--)
{
scanf("%d",&a);
s+=gongzi(a);
}
printf("%d\n",s);
}
return 0;
}

为什么我写的程序acm中显示是wrong answer?? 急需高人指点
你用的是c语言,最好不要在半路定义变量,那是c++的写法 第一题你的测试数据都没过怎么能交呢?\/ if(a[i]<0){ d=-a[i];} else d=a[j]; \/\/你的这里错了,应该是a[i]\/ include<stdio.h> include <math.h> int main(){ int n,i,j;int a[100],d,b,c;while(scanf("%d"...

C++请教!运行正确,ACM提示wrong answer
你的算法错误,在大量的数据测试下,得到的结果并不是全都正确,所以出现WRONG ANSWER,没有题目,也查不出错,可能是哪里边界条件没控制好。

麻烦大神帮我看一下杭电acm2034为什么总是Wrong Answer?
手机版 我的知道 麻烦大神帮我看一下杭电acm2034为什么总是Wrong Answer? \/*ProblemDescription参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法... \/* Problem Description 参加过上个月月赛的同学...

这是一道acm题的代码,帮忙看看为什么是wrong answer
你的错误在于你的输出不对 输出是:f91(91) = 91 你的是:f(91) = 91 少了91

...acm 的题提交会总显示 WrongAnswer 是怎么回事啊?
因为在VC中,你是从键盘一行一行输入。输入一行之后在输入下一行之前,计算机把键盘换从去清除是没有问题的。计算机运行很快,你的下一行输入会再上一行处理完之后一段时间才会被送入计算机,清除输入设备没有问题。但在ACM中,它的输入一般是通过重定向,从文件中输入的,你清除标准输入设备,会把后面...

ACM1002为什么我的答案总是说Wrong Answer,可是我运行结果都没有错...
有什么问题没有考虑到吧,比如有前导0什么的,再比如99999 1这个用例你的代码就得到了错误的结果。

提交acm 1005时总是说wrong answer
回答:首先指出你的一个错误 int n;的定义在c中是要在前面定义的,不能半路定义这是规定。 然后下面是我的代码ac的,看看哪里有不足的: #include<stdio.h> int main() { int f[1000]={0},n,i,a,b; while(scanf("%d%d%d",&a,&b,&n)!=EOF) { f[0]=1; f[1]=1; if(a==0&&...

一道acm题目 报错是wrong answer 求大神找错
最明显的错误,就是 No carry operation.这些最后面都有一个句号。。你的输出没有。这题是算有多少次进位吧,你是模拟加法运算,if(maxs[max-1]+mins[min-1]>=106||maxs[max-1]>=58) 这些别人只能猜出来是什么意思,maxs[max-2]++;这个百分百溢出 。当max = 1的时候 ,即原来的长度...

为什么在acm上的一个简单的程序总是出现wrong answer在自己上面就不会...
你输出的东西多了吧……System.out.println(cattle_number+"---|"+cattle_big);还有不要自定义包,主类的名称是Main

请大家帮我看看这道ACM题为什么总是WRONG ANSWER
for(int i=0;i<T;i++)for(int i=0;i<=tl;i++) printf("%d",s[i]-48);for(int i=0;i<=tl;i++) printf("%d",s[i]-48);在这三个语句中都有int i=0,是这里出现错误了,你在开始的时候定义一下int i;这样的用法估计不对吧!改过之后运行没有问题!

相似回答