求x的n次方编程_每日一道编程题(409):复旦大学上机题(一)

复旦大学上机题(一)

每日编程中遇到任何疑问、意见、建议请公众号留言或加入每日编程群聊739635399

求众数。众数就是一个序列中出现次数最多的数字。如果不唯一,则输出小的那个值。给定第一个代表有几个数字。1<=n<=10^5,每个数字在 int 范围内。

输入样例:

8
10 3 8 8 3 2 2 2

输出样例:
2
3ba70c9a650b66700cb1231d530375b8.gif
解决方法:

(1)代码实现:

#include 

int main(){
    /*首先将数字输入到一个数组里面*/
    int m;
    printf("请输入数字的个数:");
    scanf("%d", &m);
    printf("请输入数字:");
    int n[100];
    int i = 0;
    while (i     {
        scanf("%d", &n[i]);
        ++i;
    }
    /*计算出每个数字是第几次出现,用另外的数组将这些次数存储*/
    int j = 0;
    int cs = 0;
    int k[100] = {0};
    for (i = 0; i     {
        cs = 1;
        for (j = 0; j         {
            if (n[j] == n[i])
            {
                cs++;
            }
        }
        k[i] = cs;
    }
    /*找出数组k中的最大值,也就是出现最多的次数,以及下标位置*/
    int max = 0, t = 0;
    for (i = 0; i     {
        if (max <= k[i])
        {
            max = k[i];
            t = i;
        }
    }
    /*上一步找到了出现最多的次数,但是可能会出现有两个或多个数字都出
   现这么多次的情况,所以要遍历数组k,找出所有的max*/
    int p[m];
    for (i = 0; i     {
        p[i] = -1;
    }
    j = 0;
    for (i = 0; i     {
        if (k[i] == max)
        {
            p[j] = i;
            ++j;
        }
    }
    /*上面几行是找到出现最多次数的数字的下标,并存储在数组p中,下面几行是找到这些数字中最小的一个*/
    int w[m];
    j = 0;
    while (p[j] != -1)
    {
        w[j] = n[p[j]];
        ++j;
    }
    int min = 1000;
    for (i = 0; i     {
        if (min > w[i])
        {
            min = w[i];
        }
    }
    printf("%d", min);
    return 0;
}
明日预告:复旦大学上机题(二)

解方程。给定一个字符串,代表一个一元一次方程。如果有解求解,输出格式“x=数字” ,如果解的个数无穷,输出 “infinite solutions”。如果没有解输出“no solution”

字符串长度不超过 256 。

输入格式:

输入一个一元一次方程,未知数用x表示。

输出格式:

输出 “x=数字” 或者 “infinite solutions”或者“no solution”

输入样例:
10x-2x-8=4x+7+x
输出样例:
x=5
8c9a01cd95acf184127253fc026f239b.png
050121125d0696f2956ede2d20ec2375.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值