
/
今天朋友问这个问题,我百度了一下,看到你这个提问了,感觉解答都差强人意;
正好也做出来了,就顺便贴出来分享。
注:我这些文字你全复制了就能运行,核心函数是Function(),核心语句看标注
/
# include <stdioh>
# define BITS 8 // 自定义比特数
unsigned int Function(unsigned int number); // 倒置
void PrintBit(unsigned int number); // 按位输出,长度锁定为BITS
int main(void)
{
unsigned int number;
unsigned int result;
printf("请输入十进制转化后的数字:");
scanf("%d", &number);
result = Function(number);
printf("结果是:");
PrintBit(result);
putchar('\n');
}
unsigned int Function(unsigned int number) // 倒置
{
unsigned int i;
unsigned int result; // 保存结果
if(!number) // 全为0时需特殊处理
return 0;
for(i=0,result=0; i<BITS; ++i) // (核心语句)
{
result = result2 + ((number>>(i))%2); // 倒序按位取数,同时依次装入结果,每装入一个新数字时原结果数乘2,实现正序填装 ;右移是消去右边的多余位,取余是消除左边的多余位
}
return result;
}
void PrintBit(unsigned int number) // 按位输出,长度锁定为BITS
{
unsigned int i;
for(i=BITS; i>0; --i)
{
printf("%d", (number>>(i-1))%2);
}
}
/
时间:2016年10月30日15:43
平台:win7(64位)--cfree
测试结果:
输入 输出
0 00000000
1 10000000
2 01000000
3 11000000
174 01110101
255 11111111
注:暂不考虑输入超过255的情况。
/
int i=10,j;
printf("请输入一个字符串\n");
scanf("%s",string[i]);
这里100位的字符数组,这只输入了一个字符啊,输入给第10位的字符了。
这时i = 10,你用for循环从0到i - 1遍历一遍,这个范围内的字符都没有初始化啊。
在这里你想做的是把原字符数组倒置,也就是把string的值改变了。我告诉你个不用改变string值的方法啊。
你可以多定义一个int型的变量length来记录当前string的长度,当然,初始值为0。用一个while语句,用个getchar()循环输入单个字符,同时length加1;遇到回车符结束循环。string的值就这么确定好了。
要倒序输出string,就可以从length - 1位 到 0 位遍历一遍string,同时用putchar()输出对应的字符。这样string在没有改变值的情况下,输出了倒序的样子啦。
你看看行不行。
#include <iostreamh>
main()
{
char a[9],b[9];
char p1,p2,p3,p4;
int count,fg;
cout<<"输入一个基本数:";
cin>>a;
cout<<endl<<"输入基本数的一个变序数:";
cin>>b;
count=0;
p2=b;
while(p2){
fg=0;
for(p1=a;p1;p1++)
if(p1==p2)
{
fg=1;
break;
}
if(fg){
for(p3=a;p3<p1;p3++)
for(p4=p2+1;p4;p4++)
if(p3==p4)count++;
}
p2++;
}
cout<<"逆序数为:"<<count;
system("pause");
return 0;
}
上述代码经编译通过
以上就是关于一个8比特的数,要求编写一端C程序实现位倒序功能.全部的内容,包括:一个8比特的数,要求编写一端C程序实现位倒序功能.、编写程序,使输入的字符串倒序输出:、用C++写一个求逆序数的程序.等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)