c语言新生求指点

huee812 2019-12-17 08:47:24
问题:
在debug,发现前面sum的求值就不对,是因为两个scanf的原因吗?


#include<stdio.h>
#include<stdlib.h>
int main(){
int t,n,a[5],i,j,sum,sum1,sum2,c,d;
while(scanf("%d",&t)==1){
while(t--){
scanf("%d",&n);
sum=0;
for(i=0;i<n;i++) scanf("%d",&a[i]);
for(i=0;i<n;i++) sum+=a[i];
printf("%d\n",sum);
for(i=0;i<n-1;i++){
for(j=0;j<n-1-i;j++){
if(a[j]>a[j+1]){d=a[j];a[j]=a[j+1];a[j+1]=d;}
}}
c=sum-a[0];
for(i=1;i<(n/2+1);i++){
a[i]=a[n-1-i];
}
for(i=1;i<=n;i++){
sum1=0;sum2=0;
for(j=0;j<i;j++){
sum1+=a[j];
sum2=sum-sum1;
}printf("%d %d\n",sum1,sum2);
if(abs(sum2-sum1)<c) c=abs(sum2-sum1);

}printf("%d\n",c);
}
}
return 0;
}
...全文
60 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
huee812 2019-12-18
  • 打赏
  • 举报
回复
继续捞继续捞
huee812 2019-12-18
  • 打赏
  • 举报
回复
捞一下捞一下
自信男孩 2019-12-18
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<stdlib.h>

int main()
{
int t,n,a[5],i,j,sum,sum1,sum2,c,d;

while (scanf("%d", &t) == 1) {
while (t--) {
scanf("%d", &n);
if (n > 5) //avoid overflow
n = 5;
//sum = 0;
for(i=0;i<n;i++)
scanf("%d",&a[i]);

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

for(i=0;i<n-1;i++){
for(j=0;j<n-1-i;j++){
if(a[j]>a[j+1]) {
d=a[j];
a[j]=a[j+1];
a[j+1]=d;
}
}
}

c=sum-a[0];
for(i=1;i<(n/2+1);i++){
a[i] = a[n-1-i];
}
for(i=1;i<=n;i++){
sum1=0;
sum2=0;
for(j=0;j<i;j++){
sum1+=a[j];
sum2 = sum-sum1;
}
printf("%d %d\n", sum1,sum2);
if(abs(sum2-sum1) < c)
c = abs(sum2-sum1);

}
printf("%d\n",c);
}
}
return 0;
}


供参考~

如果认为sum1, sum2结果不对建议找一下自己的算法问题,代码没发现什么问题,应该是逻辑问题~再分析一下需求~
@矛盾综合体 2019-12-18
  • 打赏
  • 举报
回复
代码格式有点混乱,代码感觉写的也有点乱,但是求和和输入,冒泡排序之类的应该没什么,不过感觉对n的输入数值应该要求有点严格,前面要求1-5,后面又必须2-5,额,剩下的就留给楼主自己看吧,不过求和应该没什么问题,只需要严格按照你自己设计的输入去,例如 1 5 1 2 3 4 5,这样求和至少没什么,而且感觉有点不知道楼主想做什么

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧