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\n", 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\n",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\n", dTestNo); } printf("0."); for(iNo=0; iNo<8; iNo++) printf("%d", iT[iNo]); printf("\n"); } int main ( ) { double dTestNo= 0.795; int iBase; for(iBase=2;iBase<=9;iBase++) fun(dTestNo,iBase); printf("\n"); system("pause"); return 0; }
3、