0722考试题

该程序包含两个部分:一是用C++实现二维数组表示的员工工时排序,二是将输入的十进制数转换为二进制。员工工时排序通过冒泡法实现,同时保持员工序号的对应。十进制转二进制部分,对正负数均能处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>
void arr1(int arr2[2][8],int i,int j); 
int main()
{
    int arr[8][7]={{2,4,3,4,5,8,8},
                   {7,3,4,3,3,4,4},
                   {3,3,4,3,3,2,2},
                   {9,3,4,7,3,4,1},
                   {3,5,4,3,6,3,8},
                   {3,4,4,6,3,4,4},
                   {3,7,4,8,3,8,4},
                   {6,3,5,9,2,7,9}};
    int i,j,sum;
    
    printf("\t Su  M  T  W  TH F  Sa\n");
    for(i=0;i<8;i++)
    {
        printf("Employee%d",i);
        for(j=0;j<7;j++)
        {
            printf(" %d ",arr[i][j]); // 打印二维数组 
        }
        printf("\n");    
    }
    int a[2][8]={{0,1,2,3,4,5,6,7},{34,28,20,31,32,28,37,41}};
    //arr1(a,8);
    int n,k;
    for(k=0;k<8;k++)
    {
        printf(" Employee%d: ",a[0][k]);  //未排序前打印每个员工的序号和总工时 
        printf(" %d\n",a[1][k]);
    }

    printf("\n");
    arr1(a,2,8);
    for(k=0;k<8;k++)
    {
        printf(" Employee%d: ",a[0][k]);  //排序后分别打印每个员工的序号和工时 
        printf(" %d\n",a[1][k]);
    }
    
    return 0;
}
void arr1(int arr2[2][8],int i,int j)
{
    int b,a;
    int n,m;
    for(a=0;a<7;a++)
        for(b=0;b<7;b++)
        {
            int temp,ret;
            if(arr2[1][b+1]>arr2[1][b])
            {
                temp=arr2[1][b+1];           //员工工时排序 
                arr2[1][b+1]=arr2[1][b];
                arr2[1][b]=temp;
                
                ret=arr2[0][b+1];               //员工工时排序的同时给每个员工的序号野也进行排序 
                arr2[0][b+1]=arr2[0][b];
                arr2[0][b]=ret;
                
            }
        }

    
}

#include <stdio.h>
#include <math.h>
/*十进制转换为2进制*/
void er(long long num);

int main()
{
    signed long long int num;
    printf("十进制转换为二进制\n请输入这个十进制(正/负数都行):"); 
    scanf("%lld",&num);
    er(num);
    return 0;
}

void er(long long num)
{
    int arr[64]={0};
    int i;
    if(num<0){
        //        arr[0]=1;
//    else{
//        arr[0]=0;
        num=fabsl(num);
        num-=1;
        for(i=0;i<63;i++){
        arr[64-1-i]=num%2;
        num/=2;
        }
        for(i=0;i<64;i++){
            if(1==arr[i])
                arr[i]=0;
            else
                arr[i]=1;
        }
        for(i=0;i<64;i++)
        printf("%d",arr[i]);
        
    }
    else{
    for(i=0;i<64;i++){
        arr[64-1-i]=num%2;
        num/=2;
    }
    for(i=0;i<64;i++)
        printf("%d",arr[i]);
    }

}
    
        
//        printf("%d\n",num);
    
//    printf("第一位显示为 1 则表示这个数为 负数 ,显示为 0 表示这个数为 正数 \n");
//    if(num<0)
//        arr[0]=1;
//    else
//        arr[0]=0;
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值