精品偷拍一区二区三区,亚洲精品永久 码,亚洲综合日韩精品欧美国产,亚洲国产日韩a在线亚洲

  • <center id="usuqs"></center>
  • 
    
  • 306905482,

    306905482,
    其他人氣:481 ℃時間:2020-07-04 18:49:33
    優(yōu)質(zhì)解答
    5-1
    #include
    #include
    #include
    typedef struct{
    unsigned shortA;//百位
    unsigned shortB;//十位
    unsigned shortC;//個位
    }Digital_t;
    typedef struct{
    Digital_tDigInfo;
    unsigned shortData;//數(shù)據(jù)
    unsigned short Key;
    }Hundred_t;
    #define Divide(pData)\
    (pData)->DigInfo.A = (pData)->Data / 100;\
    (pData)->DigInfo.B = ((pData)->Data - (pData)->DigInfo.A * 100) / 10;\
    (pData)->DigInfo.C = (pData)->Data - ((pData)->DigInfo.A * 100) - ((pData)->DigInfo.B *10);
    // Function Declaration
    int DigitalSort(Hundred_t *pDataList, int num);
    int sort(Hundred_t *pDataList,int num);
    int output(Hundred_t *pDataList, int iDataNum );
    int main(int argc, char* argv[])
    {
    intiDataNum, iDataSize;
    inti;
    Hundred_t*pDataList = NULL;
    printf("請輸入個數(shù):\n");
    scanf("%d", &iDataNum);
    iDataSize = sizeof(Hundred_t) * iDataNum;
    pDataList = (Hundred_t*) malloc(iDataSize);
    if (pDataList ==NULL){
    return -1;
    }
    memset((void *)pDataList, 0, iDataSize);
    printf("請輸入數(shù)字:\n");
    // input
    for (i = 0; i < iDataNum; i++)
    {
    scanf("%d", &((pDataList + i)->Data));
    }
    // sort
    DigitalSort(pDataList, iDataNum);
    // output
    printf("\n最后排序結(jié)果:");
    output(pDataList,iDataNum);
    free(pDataList);
    getchar();
    return 0;
    }
    // sort function
    int DigitalSort(Hundred_t *pDataList, int num)
    {
    int i;
    // divide digital
    for ( i= 0; i {
    Divide(pDataList+i);
    }
    //個位
    for ( i= 0; i {
    (pDataList+i)->Key = (pDataList+i)->DigInfo.C;
    }
    sort(pDataList, num);
    printf("個位排序:");
    output(pDataList,num);
    //十位
    for ( i= 0; i {
    (pDataList+i)->Key = (pDataList+i)->DigInfo.B;
    }
    sort(pDataList, num);
    printf("十位排序:");
    output(pDataList,num);
    //百位
    for ( i= 0; i {
    (pDataList+i)->Key = (pDataList+i)->DigInfo.A;
    }
    sort(pDataList, num);
    printf("百位排序:");
    output(pDataList,num);
    return 0;
    }
    int sort(Hundred_t *pDataList,int num)
    {
    inti,j;
    Hundred_tPD;
    for (i=0; i{
    for (j=0; j{
    if ((pDataList+j)->Key > (pDataList+j+1)->Key)
    {
    PD = *(pDataList + j);
    *(pDataList + j) = *(pDataList + j +1);
    *(pDataList + j +1) = PD;
    }
    }
    }
    return 0;
    }
    int output(Hundred_t *pDataList, int iDataNum )
    {
    int i;
    for (i = 0; i < iDataNum; i++)
    {
    printf("%d ", (pDataList + i)->Data);
    }
    printf("\n");
    return 0;
    }
    7-1
    typedef struct
    {
    unsigned long low;
    unsigned long high;
    }Bit64_t;
    int ADD(Bit64_t *Ope1, Bit64_t *Ope2, Bit64_t *Result)
    {
    //容錯處理
    if ((0xFFFF - Ope1->high) < Ope2->high)
    {
    // 發(fā)生溢出
    printf("發(fā)生溢出");
    return -1;
    }
    if ((0xFFFF - Ope1->low) >= Ope2->low)
    {
    Result->low= Ope1->low + Ope2->low;
    Result->high= Ope1->high + Ope2->high;
    }
    else//有進(jìn)位
    {
    Result->low= Ope1->low + Ope2->low - 0x10000;
    Result->high= Ope1->high + Ope2->high + 1;
    }
    return 0;
    }
    int SUB(Bit64_t *Minuend, Bit64_t *Subtrahend, Bit64_t *Result)
    {
    if ( ( Minuend->high < Subtrahend->high) ||
    (( Minuend->high == Subtrahend->high) && ( Minuend->low < Subtrahend->low))
    )
    {
    // 發(fā)生溢出
    printf("發(fā)生溢出");
    return -1;
    }
    if ( Minuend->low >= Subtrahend->low)
    {
    Result->low= Minuend->low - Subtrahend->low;
    Result->high= Minuend->high - Subtrahend->high;
    }
    else
    {
    //注意0xFFFF - Subtrahend->low + 1不能顛倒順序
    Result->low= Minuend->low + (0xFFFF - Subtrahend->low + 1);
    Result->high= Minuend->high - Subtrahend->high - 1;
    }
    return 0;
    }
    int main(int argc, char* argv[])
    {
    Bit64_t A,B,E,F;
    unsigned long a,b;
    char f;
    printf("輸入第一個數(shù):");
    scanf("%x,%x",&A.high,&A.low);
    printf("輸入第二個數(shù):");
    scanf("%x,%x",&B.high,&B.low);
    printf("輸入符號:");
    scanf("%s",&f);
    if(f == '+')
    {
    if(-1 != ADD(&A,&B,&E))
    {
    if (E.high == 0)
    {
    printf("0x%X\n", E.low);
    }
    else
    {
    printf("0x%X%X\n", E.high, E.low);
    }
    }
    }
    else if(f == '-')
    {
    if(-1 != SUB(&A, &B, &F))
    {
    if (F.high == 0)
    {
    printf("0x%X\n", F.low);
    }
    else
    {
    printf("0x%X%X\n", F.high, F.low);
    }
    }
    }
    return 0;
    }
    我來回答
    類似推薦
    請使用1024x768 IE6.0或更高版本瀏覽器瀏覽本站點(diǎn),以保證最佳閱讀效果。本頁提供作業(yè)小助手,一起搜作業(yè)以及作業(yè)好幫手最新版!
    版權(quán)所有 CopyRight © 2012-2024 作業(yè)小助手 All Rights Reserved. 手機(jī)版