石琼璘为什么离开央视:一首家简单的vc++试题

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 20:24:05
一、设计方法和基本原理
课题功能描述
将一个数字如12349将其转换为16进制为303DH,则数字16进制下和为十进制的19,(因为16进制的D为13,所以3+0+3+13=19);然后将这个16进制数字翻转为D303H,并在次转换为十进制输出54019。
问题的解决方案:
将读入的整数,转换到16进制并输出;
计算16进制下各位和的十进制值并输出;
将16进制数据按照位置进行翻转,获得新的16进制数据,然后转换成十进制值并输出。
二、创新要求
在基本要求达到后,进行创新设计,一个数字超过232-1的情况下,进行进制转换并翻转。

#include <iostream>
using namespace std;

//功能函数1,实现数制形式的转换并实现输出
void fun1(int b[])
{
for(int i=0;b[i]!=16;i++);

for(i-=1;i>=0;i--)
{
if(b[i]==0) cout<<"0";
if(b[i]==1) cout<<"1";
if(b[i]==2) cout<<"2";
if(b[i]==3) cout<<"3";
if(b[i]==4) cout<<"4";
if(b[i]==5) cout<<"5";
if(b[i]==6) cout<<"6";
if(b[i]==7) cout<<"7";
if(b[i]==8) cout<<"8";
if(b[i]==9) cout<<"9";
if(b[i]==10) cout<<"A";
if(b[i]==11) cout<<"B";
if(b[i]==12) cout<<"C";
if(b[i]==13) cout<<"D";
if(b[i]==14) cout<<"E";
if(b[i]==15) cout<<"F";

}
}
//功能函数2,实现数值各位上10进制和值并实现输出
void fun2(int b[])
{
int sum=0;
for(int i=0;b[i]!=16;i++)
{
sum+=b[i];
}
cout<<endl<<"the sum of the number is:"<<sum<<endl;
}

//功能函数3,实现从16进制到10进制的转换并实现输出
void fun3(int c[],int j)
{ int value=0;
for(int k=j;k>=1;k--,j--)
{
int i=j-1;
for(;i>0;i--)
{
c[k]*=16;
}
value+=c[k];
}
cout<<"the last value is:"<<value<<endl;

}

//功能函数4,实现16进制数的特定转换(即:末位数位移动至首位数//位,并调用功能函数5
void fun4(int b[])
{
//int temp;
for(int i=0;b[i]!=16;i++);

b[i]=b[0];
b[0]=16;
// temp=b[i-1];
// b[i-1]=b[0];
//b[0]=temp;
fun3(b,i);
}

int main(void)
{
int a[30]={16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16};//由于本人一时记不起如何同时初始化一个数组,故用了如此让人发笑的方法,不过有方法总比没方法好吧
int n;
cout<<"Please input the value of n:"<<endl;
cin>>n;

//下面的功能函数,实现从10进制到16进制的转换 由于躲避函数调用涉及数组传值,所以写在主函数中,违反C++模块化要求,请老师指正^_^
{
for(int i=0;n>=16;i++)
{
a[i]=n%16;
n=n/16;
}
a[i]=n;

}

fun1(a);
fun2(a);
fun4(a);
fun1(a);

return 0;

}

给你点提示吧!位操作!很快的!