华为机试题一
题目描述:输入1到50个数字,求最大和最小数的和,输入的数以逗号#include <stdio.h>
#define N 50
int getAverage(int a[], int count);
int main() {
char str;
int a = {0};//保存解析出来的数
int i = 0;
int j = 0;
int sign = 1;
gets(str); //以字符串方式获取输入
while(str != '\0') {
if(str != ',') {
if(str == '-') {
i++;
sign = -1; //如果输入字符是负号,把正负标志置-1
}
else {
if(sign == 1) {//要保存的是一个正数
if(a == 0)
a = (str - '0'); //当前字符是普通整数并且上一个字符是逗号的情况
else if(a > 0)
a = a * 10 + (str - '0');//当前字符和上一个字符都是普通整数的情况
} else if(sign == -1) {//要保存的是一个负数
if(a == 0)
a = (-1) * (str - '0'); //当前字符是普通整数而上一个字符是负号的情况
else if(a < 0)
a = a * 10 - (str - '0');//当前字符和上一个字符都是普通正式的情况
}
i++;
}
} else {//读到“,”号意味着准备保存一个新的整数
j++;
i++;
sign = 1;
}
}
printf("最小数和最大数之和平均值:%d", getAverage(a, N));
return 0;
}
int getAverage(int a[], int count) {
int max, min;
int i;
max = min = a;
for(i = 0; i < count; i++) {
if(a > max)
max = a;
if(a < min)
min = a;
}
return (max + min) / 2;
}
隔开
页:
[1]