为什么我写的程序acm中显示是wrong answer?? 急需高人指点
第一题:网址是:http://acm.hdu.edu.cn/showproblem.php?pid=2020#include<stdio.h>#include<math....
第一题:网址是: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;
} 展开
#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;
} 展开
展开全部
你用的是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;
}
第一题你的测试数据都没过怎么能交呢?
/*
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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一题
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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询