您的位置:首页 > 其它

一个给定的数值由左边开始升位到右边第N 位

2011-08-23 19:46 309 查看
一个给定的数值由左边开始升位到右边第N 位,如

0010<<1 == 0100

或者

0001 0011<<4 == 0011 0000

请用C 或者C++或者其他X86 上能运行的程序实现。

#include <iostream>
using namespace std;

void Convert(char* input,int num)
{
int i,r,j=0;
for (i=0;input[i+num]!='\0';i++)
{
if (isspace(input[i+num])){ //过滤掉空格
input[i]='@'; //把input[i+num]本要赋值的input[i]赋值为'@'
continue;
}
input[i]=input[i+num];//把下标为i+num处的值赋到下标为i处
}

for (r=0;r<num;r++) //把右边空缺位补零
input[i+r]='0';
input[i+num]='\0';
j=0;
for (i=0;input[i]!='\0';i++)
{
int flag=0;
if(input[i]=='@'){ //遇到'@' 将flag标志为1,同时j自减1
flag=1;
--j;
}
if(flag!=1) //值不为'@'则输出
cout<<input[i];//输出字符
if (++j%4==0){ //每输出4个字符,输出一个空格
cout<<" ";
}
}
}

void main(){
char a[20];
int number;
cout<<"input string:\n";
cin.getline(a,20);
cout<<"input number:\n";
cin>>number;
Convert(a,number);
system("pause");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐