C语言作业(4)

1、要求实现下面的函数,给定一个整数数组,找出其中3个整数,这三个整数进行加减法运算的结果最大,并且返回这三个数字。 int*maxmumNumbers(const int* nums,int numsSize)

输入样例:{12,5,-5,1,4}

返回:{12,5,-5}

#include<stdio.h>                                                                                                                      
#include<math.h>
int* maximumNumbers(const int*nums ,int numsSize)
{
        int i,j,temp;
        int sum = 0;
        int *p = NULL;
        p = (int*)malloc(sizeof(int)*3);
        memset(p , 0 , sizeof(int)*3);

                for( j=0 ; j<numsSize - 2 ; j++)
                {
                        if( abs(nums[j]) > abs(*p)) 
                                *p = nums[j];
    
                        else if( abs(nums[j+1]) > abs(*(p+1)))
                                *(p+1) = nums[j+1];
    
                        else if( abs(nums[j+2]) > abs(*(p+2)))
                                *(p+2) = nums[j+2];
                }

        return p;
}

2、给定非负整数a,b,m,利用基本的算术运算符号(+ - / * %)以及位运算符,计算a^b mod m 输入要求:一行三个非负整数,空格相间,分为a,b,m的值,其中m不为0。

输出要求:a^b mod m的结果

例如

输入:2 10 5

输出:4

#include<stdio.h>                                                                                                                      
int func(int a, int b, int c)
{
        int num = 1;
        int i;

        for( i=0 ; i<b ; i++)
        {   
                num *= a;
        }   

        num = num % c;
        return num;
}

int main(void)
{
        int a , b , m;

        printf("请输入a,b,m的值:");
        scanf("%d%d%d",&a,&b,&m);

        int ret = func(a,b,m);
        printf("%d\n",ret);
}

3、小明是一个间谍,现在他的任务是将一个整数n传给一个客户,要进行加密,加密方式是将n换成一个整数x,使得x的每个位数上的数字不小于n,那么最小满足条件的x就是小明想要找到的,现在小明需要传递一个整数n,你能帮助小明找下这个数么?

例如:当n=12,当x=20时,20-2-0>=12

输入描述: 10

输出描述: 输出一个整数,表示伪装后的数字

输入样例:12

输出:20

#include<stdio.h>
int func(int x)
{
        int num = 0;
        while(x >= 1)
        {
                num += x % 10;
                x /= 10;
        }
        return num;                                                                                                                    
}

int main(void)
{
        int n , x ,ret;

        printf("请输入n的值:");
        scanf("%d",&n); 

        x = n;
        while(1)
        {
                ret = func(x);
                if( x - ret > n )
                {
                        printf("%d\n",x);
                        return 0;
                }       
                                                                                                                                       
                x++;                            
        }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值