**1.**请写一段正负数统计的程序。
输入格式:
为若干整数,以-1结束(测试数据保证这组数中只有最后一个-1)。
输出格式:
共两行,第一行为三个整数(用一个空格分隔),依次为这组数中正数的个数,0的个数和负数的个数(不统计最后的-1)。
第二行为用一个空格分隔的两个整数,依次为这组数中所有正数的和及所有负数的和(不包括最后的-1)。
测试数据保证求和的结果可以用int型存储。
int main()
{
int a;
int b=0,c=0,d=0,e=0,f=0;
do
{
scanf("%d",&a);
if(a==-1)
{
printf("%d %d %d\n%d %d",b,c,d,e,f);
break;
}
if(a>0)
{
b++;
e+=a;
}else if(a<0)
{
d++;
f+=a;
}if (a==0)
{
c++;
}
}
while(a!=-1);
return 0;
}
曾经错误原因:用了第二个do-while语句来做break和当a!=-1时的输出但是会使编译错误 以及找不到正确添加break的地方使程序死循环
改进:理清楚每一个循环结构循环的步骤以及控制的语句和语句之间的关系
**2.**请写一段程序求一个数列的最大值和最小值。
输入格式:
为2行,第一行为整数n(1<n<200)。第二行为n个整数,这些整数均大于-10000且小于10000。
输出格式:
只有一行,为用一个空格分隔的两个整数,依次为这n个整数中的最小值和最大值,中间用一个空格分隔。
#include<stdio.h>
int main()
{
int n,m,a,max=