蓝桥杯

1、 反转串

我们把“cba”称为“abc”的反转串。

下面的代码可以把buf中的字符反转。其中n表示buf中待反转的串的长度。请补充缺少的代码。

#include <stdio.h>
#include <string.h>
#include<stdlib.h>
void reverse_str(char* buf, int n)
{
    char tmp;
    printf("%c %c
", buf[0], buf[n-1]);
    if (n<2) return;
    tmp = buf[0];
    buf[0] =  buf[n-1];
    buf[n-1] = tmp;
    reverse_str(buf+1,n-2);    //char *buf; buf+1; 数组开始元素变化。
}

int main()
{
    char a[10] = "zhangguo";
    reverse_str(a,strlen(a));
    printf("%s
",a);
    system("pause");
    return 0;
}

2、n进制小数;

十进制整数转换为二进制整数:

十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

十进制小数转换为二进制小数:

十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。 然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。

#include <stdio.h>
#include<stdlib.h>
void fun(double dTestNo, int iBase)
{
    int iT[8];
    int iNo;
    printf("十进制正小数 %f 转换成 %d 进制数为:",dTestNo, iBase);
    for(iNo=0;iNo<8;iNo++)
    {
        dTestNo *= iBase;
        printf("%f ", dTestNo);
        iT[iNo] = (int)dTestNo;
         dTestNo -= iT[iNo];
        //printf("%f
", dTestNo);
    }
    printf("0.");
    for(iNo=0; iNo<8; iNo++) printf("%d", iT[iNo]);
    printf("
");
}

int main ( )
{    
    double dTestNo= 0.795;
    int iBase;
    for(iBase=2;iBase<=9;iBase++)
        fun(dTestNo,iBase);
    printf("
");
    system("pause");
        return 0;
}

3、

原文地址:https://www.cnblogs.com/soTired/p/5238948.html