华为机试—去掉最大值、最小值后剩下的个数

输入一串数,以','分隔,输出所有数中去掉最大值、最小值之后剩下的个数。(其中最大值与最小值可能有多个)


Sample input: 3,3,5,3,6,9,7,9  

Sample output:  3


#include<stdio.h>
/*
  解题思路:使用strtok分割函数分割字符串,统计最大最小的数字,
  遍历一遍数组,计算除最大最小的数字的个数
 */
#include<stdlib.h>
#include<string.h>
int main(int argc, char *argv[])
{
    char s[100];
    int a[100];
    int i=1;
    fgets(s,100,stdin);
    char *p=strtok(s,",");
    int start=atoi(p);
    a[0]=start;
    int _min=start;
    int _max=start;
    while(p=strtok(NULL,","))
    {
        int t=atoi(p);
        if(t>_max)_max=t;
        if(t<_min)_min=t;
        a[i++]=t;
    }
    int count=0;
    for(int j=0;j<i;++j)
    {
        if(a[j]!=_max&&a[j]!=_min)
            count++;
    }
    printf("%d\n",count);
    return 0;
}

测试数据:3,3,5,3,6,9,7,9

测试结果:


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值