键盘输入一批数,输入零时结束,分别计算负数与正数的总和,最后输出结果.求源程序啊.
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/12 05:16:16
![键盘输入一批数,输入零时结束,分别计算负数与正数的总和,最后输出结果.求源程序啊.](/uploads/image/z/10100167-7-7.jpg?t=%E9%94%AE%E7%9B%98%E8%BE%93%E5%85%A5%E4%B8%80%E6%89%B9%E6%95%B0%2C%E8%BE%93%E5%85%A5%E9%9B%B6%E6%97%B6%E7%BB%93%E6%9D%9F%2C%E5%88%86%E5%88%AB%E8%AE%A1%E7%AE%97%E8%B4%9F%E6%95%B0%E4%B8%8E%E6%AD%A3%E6%95%B0%E7%9A%84%E6%80%BB%E5%92%8C%2C%E6%9C%80%E5%90%8E%E8%BE%93%E5%87%BA%E7%BB%93%E6%9E%9C.%E6%B1%82%E6%BA%90%E7%A8%8B%E5%BA%8F%E5%95%8A.)
键盘输入一批数,输入零时结束,分别计算负数与正数的总和,最后输出结果.求源程序啊.
键盘输入一批数,输入零时结束,分别计算负数与正数的总和,最后输出结果.求源程序啊.
键盘输入一批数,输入零时结束,分别计算负数与正数的总和,最后输出结果.求源程序啊.
#include <malloc.h>
#include <string.h>
#include <math.h>
#define MAX(a, b) (a > b ? a : b)
#define MIN(a, b) (a < b ? a : b)
#define POSITIVE(a) (a > 0 ? 1 : 0)
#define NEGTIVE(a) (a < 0 ? 1 : 0)
int main()
{
printf("Input:\n");
int max_size = 128; // max size, can be extended
double *data = (double*) malloc(max_size * sizeof(double));// allocate memory
int num = 0;
while (1)
{
char szBuf[16];
memset(szBuf, 0, 16);
scanf("%s", szBuf);
if (0 == strcmp(szBuf, "over")) break;//input "over" as input over
data[num++] = atof(szBuf);
if (num == max_size) // extend memory
{
max_size *= 2;
data = (double*) realloc(data, max_size);
}
}
double max = data[0], min = data[0];
int posNum = 0, negNum = 0;
for (int i = 0; i < num; ++i)
{
max = MAX(max, data[i]);
min = MIN(min, data[i]);
posNum += POSITIVE(data[i]);
negNum += NEGTIVE(data[i]);
}
printf("\nOutput:\n");
printf("max: %f\nmin: %f\npositive num: %d\nnegtive num: %d\n",
max, min, posNum, negNum);
free(data); // free memory
return 0;
}
数据输入以“over”结束