小题目

1、判断回文数

【功能】:判断一个数是否回文数,如1221,232, 3;

【输入】:一个整型数iNumber

【输出】: 0:iNumber不是回文数
                       1:iNumber是回文数

     int isPlalindromeNumber(int iNumber)
        {
              int tempInt=iNumber;
              int reverseInt=0;
              while(tempInt)
                {
                     reverseInt=reverseInt*10+tempInt%10;
                     tempInt/=10;
                  }
              if(reverseInt==iNumber)
                     return 1;
              else 
                     return 0;
     }

2、问题描述: 比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。请编程实现上述比较,并返回比较中发现的不相等元素的个数比如:数组{1,3,5}和数组{77,21,1,3,5}按题述要求比较,不相等元素个数为0;数组{1,3,5}和数组{77,21,1,3,5,7}按题述要求比较,不相等元素个数为3。

• 要求实现函数:int array_compare(int len1, int array1[], int len2, int array2[]) 

【输入】int len1:输入被比较数组1的元素个数;

              int array1[]:输入被比较数组1; 

              int len2:输入被比较数组2的元素个数; 

              int array2[]:输入被比较数组2;

【输出】 无 
【返回】 不相等元素的个数,类型为int
示例 1) 输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5},int len2 = 5 函数返回:0
        2) 输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5,7},int len2 = 6 函数返回:3

int array_compare(int len1, int array1[], int len2, int array2[])
{
           int len3,count=0;
           if (len1<len2)
                len3=len1;
           else 
                len3=len2;
          for(int i=0;i<len3;i++)
                  if(array1[len1-1-i]!=array2[len2-1-i])
                       count++;
           return count;
}


3.问题描述:给定一个数组input[],如果数组长度n为奇数,则将数组中最大的元素放到output[]数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到output[]数组中间两个位置偏右的那个位置上,然后按从打到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。

要求实现函数:sort(int input[],int n,int output[])

【输入】input[] 

【输出】 output[]

示例: 

input[]={3,6,1,9,7}output[]={3,7,9,6,1}

input[]={3,6,1,9,7,8}output[]={1,6,8,9,7,3}

先通过快速排序就地对input进行排序

int Partition(int A[],int p,int r)

         {

             int i=p-1;

             int temp;

             for(int j=p;j<r;j++)

                  {

                      if(A[j]<A[r])

                         {

                             i++;

                             temp=A[i];

                             A[i]=A[j];

                             A[j]=temp;

                         }

                  }

                temp=A[i+1];

                A[i+1]=A[r];

                A[r]=temp;

                return i+1;

          }

        void QuickSort(int A[],int p,int r)

            {

                if(p<r)

                    {

                         int q=Partition(A,p,r);

                          QuickSort(A,p,q-1);

                          QuickSort(A,q+1,r);

                    }

            }


void sort(int input[],int n,int output[])
{
       QuickSort(input,0,n-1);
       output[n/2]=input[n-1];
       int i=n/2-1;
       int j=n/2+1;
       for(int k=1;k<n;k++)
      {
            if(k%2==1)
                 output[i--]=input[n-1-k];
           else
                 output[j++]=input[n-1-k];
      }
}

3、操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 < 50,用户任务的优先级 >= 50且 <= 255。优先级大于255的为非法任务,应予以剔除。现有一任务队列task[],长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。函数scheduler实现如下功能,将task[] 中的任务按照系统任务、用户任务依次存放到 system_task[] 数组和 user_task[] 数组中(数组中元素的值是任务在task[] 数组中的下标),并且优先级高的任务排在前面,数组元素为-1表示结束。
例如:task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99}    system_task[] = {0, 3, 1, 7, -1}   user_task[] = {4, 8, 2, 6, -1}
函数接口    void scheduler(int task[], int n, int system_task[], int user_task[])

void scheduler(int task[], int n, int system_task[], int user_task[])
{
    int array[256];
    for(int i=0;i<n;i++)
    {
       array[task[i]]=i;
    }
    QuickSort(task,0,n-1);
    int j=0,k=0;
    for(i=0;i<n;i++)
    {
         if(task[i]<50)
              system_task[j++]=array[task[i]];
         else
              user_task[k++]=array[task[i]];
     }
    system_task[j]=-1;
    user_task[k]=-1;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值