输入数据有多组,每组有多个,每组一行,每行第一个数n是个数,后面跟着n个数,以输入0为结束,输出每行的和。如:
Sample Input
4 1 2 3 4
5 1 2 3 4 5
0
Sample Output
10
15
Source
请高手帮忙!!!
注意:请一定严格按照我说的格式输入输出,谢谢!!!
第1个回答 2009-12-29
楼主注意素质哈,不要拿了程序不给分哈
楼主加分
想了一会,貌似只能拿链表做
#include <stdio.h>
#include <stdlib.h>
struct link_list //负责储存每次的输入的数据
{
int a;
link_list *next;
};
struct link_s //负责储存每一行的和
{
int s;
link_s *next;
};
int sum(int n,link_list *tail);
struct link_list *build(int n);//建立链表
void put_link_s(link_s *tail);
void main()
{
int n,count=0;
link_list *head;
link_s *Head,*tail,*new_s;
Head=tail=NULL;
printf("Sample Input \n");
while (1)
{
scanf("%d",&n);
if(n==0)//当输入为零时,循环终止
break;
head=build(n);
new_s=new link_s;
new_s->s=sum(n,head);
new_s->next=NULL;
if (tail==NULL)
{
Head=tail=new_s;
}
else
{
tail->next=new_s;
tail=new_s;
}
}
printf("Sample Output \n");
put_link_s(Head);
printf("Source\n");
}
int sum(int n,link_list *tail)
{
int s=0;
while(tail!=NULL)
{
s+=tail->a;
tail=tail->next;
}
return s;
}
struct link_list *build(int n)
{
link_list *head,*tail,*list;
int i;
head=tail=NULL;
for(i=0;i<n;i++)
{
list=new link_list;
scanf("%d",&list->a);
list->next=NULL;
if(tail==NULL)
tail=head=list;
else
{
tail->next=list;
tail=list;
}
}
return head;
}
void put_link_s(link_s *tail)
{
while(tail!=NULL)
{
printf("%d\n",tail->s);
tail=tail->next;
}
}
楼主加分
想了一会,貌似只能拿链表做
#include <stdio.h>
#include <stdlib.h>
struct link_list //负责储存每次的输入的数据
{
int a;
link_list *next;
};
struct link_s //负责储存每一行的和
{
int s;
link_s *next;
};
int sum(int n,link_list *tail);
struct link_list *build(int n);//建立链表
void put_link_s(link_s *tail);
void main()
{
int n,count=0;
link_list *head;
link_s *Head,*tail,*new_s;
Head=tail=NULL;
printf("Sample Input \n");
while (1)
{
scanf("%d",&n);
if(n==0)//当输入为零时,循环终止
break;
head=build(n);
new_s=new link_s;
new_s->s=sum(n,head);
new_s->next=NULL;
if (tail==NULL)
{
Head=tail=new_s;
}
else
{
tail->next=new_s;
tail=new_s;
}
}
printf("Sample Output \n");
put_link_s(Head);
printf("Source\n");
}
int sum(int n,link_list *tail)
{
int s=0;
while(tail!=NULL)
{
s+=tail->a;
tail=tail->next;
}
return s;
}
struct link_list *build(int n)
{
link_list *head,*tail,*list;
int i;
head=tail=NULL;
for(i=0;i<n;i++)
{
list=new link_list;
scanf("%d",&list->a);
list->next=NULL;
if(tail==NULL)
tail=head=list;
else
{
tail->next=list;
tail=list;
}
}
return head;
}
void put_link_s(link_s *tail)
{
while(tail!=NULL)
{
printf("%d\n",tail->s);
tail=tail->next;
}
}
第2个回答 2009-12-24
//---------------------------------------------------------------------------
#include <stdio.h>
int main(void)
{
int i,a,b,sum;
scanf("%d",&a);
while (a)
{
sum=0;
for (i = 0; i<a; i++) {
scanf("%d",&b);
sum+=b;
}
printf("%d\n",sum);
scanf("%d",&a);
}
puts("Source");
return 0;
}
//---------------------------------------------------------------------------本回答被提问者和网友采纳
#include <stdio.h>
int main(void)
{
int i,a,b,sum;
scanf("%d",&a);
while (a)
{
sum=0;
for (i = 0; i<a; i++) {
scanf("%d",&b);
sum+=b;
}
printf("%d\n",sum);
scanf("%d",&a);
}
puts("Source");
return 0;
}
//---------------------------------------------------------------------------本回答被提问者和网友采纳