C语言:输入若干个数,知道0结束,要求(1):统计正数和负数的个数(2):重新排列,正数在前负数在后

如题所述

#include <stdio.h>
#include <stdlib.h>

int main()
{
int* a=NULL; //array
int entity=0;
int length=0; //length of a
int numpos=0; //number of positive integers
int nummin=0; //number of minus integers
int i, j;
int temp; //used in sorting the array

//get the array
while(1) {
printf("Please input an integer (0 to exit): ");
scanf("%d", &entity);
if (entity == 0)
break;
else {
length++;
a = (int*) realloc(a, length*sizeof(int));
if (a==NULL) {
printf("Allocate memory failed.\n");
exit(1);
}
a[length-1] = entity;
}
};

//output the original array
printf("Array length: %d\n", length);
printf("Array: ");
for (i=0; i<length; i++)
printf("%d\t", a[i]);
printf("\n");

//count positive integers and minus integers
for (i=0; i<length; i++)
if (a[i]>0)
numpos++;
else
nummin++;
printf("Number of positive integers: %d\n", numpos);
printf("Number of minus integers: %d\n", nummin);

//sort the array
j=numpos;
for (i=0; i<numpos; i++) {
if (a[i]<0) {
while (j<length) {
if (a[j]>0) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
j++;
break;
} else {
j++;
}
}
}
}

//output the sorted array
printf("The sorted array: ");
for (i=0; i<length; i++)
printf("%d\t", a[i]);
printf("\n");

return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-29
#include <stdio.h>
main()
{
int i,j=0,n,m;
double a[100],b[100];
for(i=0;;i++)
{
scanf("%lf",&a[i]);
if(a[i]==0)break;
if(a[i]<0)
{
b[j++]=a[i];
i--;
}
n=i+1;
m=j;

}

for(i=0;i<n+m;i++)
{
if(i>=n)a[i]=b[i-n];
printf("%lf\n",a[i]);
}
printf("正数个数:%d\n负数个数:%d\n",n,m);

}本回答被网友采纳
第2个回答  2012-04-30
任务,请理解
相似回答