- 浏览: 915273 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
天天来注册:
...
try catch finally 用法 -
tadpole_java:
谢谢你的分享。
二十七、Qt数据库(七)QSqlRelationalTableModel(转) -
359449749tan:
android之EditText文本监听(addTextChangedListener) -
michael_wang:
人过留名 多谢分享
Android NOtification 使用 -
wilsonchen:
wangqi0614 写道这个删除是删除所有的把?能不能值删除 ...
Android的SharedPreferences保存与删除数据简单实例
现在提供一个C语言程序给你,可以实现任何进制(1~16)到任何进制的转换的呢?但是是C语言程序的,可以在VC++6.0Sp6上调试通过的,源程序如下:
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
void main()
{
int i,j,k,m,n,x,b[20],h[20],c,t;
double d,r,p=0;
char a[20];
printf("请输入一个任意进制的数:");
gets(a);//在头文件<string.h>中定义
printf("请输入此数为何种进制的数:");
scanf("%d",&t);
printf("请输入要转换成的进制(1<N<=16):");
scanf("%d",&n);
m=strlen(a);//求字符串的长度
x=m;
for(k=0,j=0;k<m;k++)//主要是分段,以小数点为界限
{
if(a[k]=='.')
{
x=k;
break;
}
if(a[k]=='-')
j++;
}
for(k=x+1;k<m;k++)//修正输入过程中可能会输入不止一个“.”和“-”的问题
{
if(a[k]=='-')
j++;
if(j>1)//如果其中再次遇到“-”证明输入有误,终止程序
{
printf("ERROR!\n");
exit(0);
}
if(a[k]=='.')//如果其中再次遇到“.”证明输入有误,终止程序
{
printf("ERROR!\n");
exit(0);
}
}//注意:前面两个for()循环可以合并成一个循环,这样就可以节约很多的代码的,但是相对而言,两段程序的时间复杂度一样,修改后的代码如下:
/*
i=0;
j=0;
for(k=0;k<m;k++)
{
if(a[k]=='.')
{
i++;
x=k;
}
if(a[k]=='-')
j++;
if(i>1||j>1)
{
printf("ERROR!\n");
exit(0);
}
}*/
for(j=x-1;j>=0;j--)
{
if(a[j]=='-')//符号的处理
break;
if(a[j]=='A')
r=10;
else
if(a[j]=='B')
r=11;
else
if(a[j]=='C')
r=12;
else
if(a[j]=='D')
r=13;
else
if(a[j]=='E')
r=14;
else
if(a[j]=='F')
r=15;
else
if(a[j]<48||a[j]>57&&a[j]<65||a[j]>70)//修正程序输入合不合法问题的判断,此处采用ASCII值进行编辑
//if(a[j]>='G'&&a[j]<='Z'||a[j]>='a'&&a[j]<='z')//此段程序不能判断像输入&、%、#等字符的错误判断
{
printf("ERROR!\n");
exit(0);//在头文件<stdlib.h>中定义,无条件跳出程序的的运行
}
else
r=a[j]-'0';//将字符转换成数字
if(r>=t)
{
printf("ERROR!\n");
exit(0);
}
p=p+r*pow((double)t,(double)(x-j-1));//计算结果
}
if(a[x]=='.')
{
for(j=x+1;j<m;j++)
{
if(a[j]=='A')
r=10;
else
if(a[j]=='B')
r=11;
else
if(a[j]=='C')
r=12;
else
if(a[j]=='D')
r=13;
else
if(a[j]=='E')
r=14;
else
if(a[j]=='F')
r=15;
else
if(a[j]<48||a[j]>57&&a[j]<65||a[j]>70)//修正程序输入合不合法问题的判断,此处采用ASCII值进行编辑
//if(a[j]>='G'&&a[j]<='Z'||a[j]>='a'&&a[j]<='z')//此段程序不能判断像输入&、%、#等字符的错误判断
{
printf("ERROR!\n");
exit(0);
}
else
r=a[j]-'0';//将字符转换成数字
if(r>=t)
{
printf("ERROR!\n");
exit(0);
}
p=p+r*pow((double)t,(double)(x-j));
}
}
if(n==10)//选择性计算,如果是整数就不用进行这一步的计算了,这样可以节约程序的运行时间
{
printf("转换结果为:");
if(a[0]=='-')
{
printf("-");
}
printf("%f",p);
}
else
{
k=p;//强制类型转换,可以使用k=(int)p;代替,从而更加的一目了然
i=0;
while(k)//判定需要转换的数是否变为0
{
h[i++]=k%n;//取余,进行进制转换,但是顺序与正确值相反
k/=n;//转换一位之后进行相应的变化
}
c=0;
//if(p!=(int)p)//选择性计算,如果是整数就不用进行这一步的计算了,这样可以节约程序的运行时间
//{
d=p-(int)p;//取小数部分
while(d!=0)
{
b[c]=(int)(d*n);//算法为×N取整
d=d*n-b[c];
c++;
if(c>=10)
break;//主要是控制小数后面万一出现无限小数的时候好跳出循环以免出现死循环
//}
}
printf("转换结果为:");
if(a[0]=='-')
printf("-");
for(j=i-1;j>=0;j--)//反序输出,大于10的数字进行相应的变化
{
if(h[j]==10)
printf("A");
else
if(h[j]==11)
printf("B");
else
if(h[j]==12)
printf("C");
else
if(h[j]==13)
printf("D");
else
if(h[j]==14)
printf("E");
else
if(h[j]==15)
printf("F");
else
printf("%d",h[j]);
}
if(p!=(int)p)//选择性输出,这样可以节约输出时间和程序的运行时间
{
printf(".");
for(j=0;j<c;j++)//正序输出
{
if(b[j]==10)
printf("A");
else
if(b[j]==11)
printf("B");
else
if(b[j]==12)
printf("C");
else
if(b[j]==13)
printf("D");
else
if(b[j]==14)
printf("E");
else
if(b[j]==15)
printf("F");
else
printf("%d",b[j]);
}
}
if(c>=10)//如果是无限小数则在后以省略号表示
printf("......");
}
printf("\n");//输出换行,以使程序的输出结果美观
}
如果想变为C++程序,只需要做适当的修改就是了的呢?比如输入使用cin,输出使用cout等的就可以了的,主题结果就不用变的就好的!使用函数可以简化程序的,自己可以试一下的,此处只是作为参考的!
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
void main()
{
int i,j,k,m,n,x,b[20],h[20],c,t;
double d,r,p=0;
char a[20];
printf("请输入一个任意进制的数:");
gets(a);//在头文件<string.h>中定义
printf("请输入此数为何种进制的数:");
scanf("%d",&t);
printf("请输入要转换成的进制(1<N<=16):");
scanf("%d",&n);
m=strlen(a);//求字符串的长度
x=m;
for(k=0,j=0;k<m;k++)//主要是分段,以小数点为界限
{
if(a[k]=='.')
{
x=k;
break;
}
if(a[k]=='-')
j++;
}
for(k=x+1;k<m;k++)//修正输入过程中可能会输入不止一个“.”和“-”的问题
{
if(a[k]=='-')
j++;
if(j>1)//如果其中再次遇到“-”证明输入有误,终止程序
{
printf("ERROR!\n");
exit(0);
}
if(a[k]=='.')//如果其中再次遇到“.”证明输入有误,终止程序
{
printf("ERROR!\n");
exit(0);
}
}//注意:前面两个for()循环可以合并成一个循环,这样就可以节约很多的代码的,但是相对而言,两段程序的时间复杂度一样,修改后的代码如下:
/*
i=0;
j=0;
for(k=0;k<m;k++)
{
if(a[k]=='.')
{
i++;
x=k;
}
if(a[k]=='-')
j++;
if(i>1||j>1)
{
printf("ERROR!\n");
exit(0);
}
}*/
for(j=x-1;j>=0;j--)
{
if(a[j]=='-')//符号的处理
break;
if(a[j]=='A')
r=10;
else
if(a[j]=='B')
r=11;
else
if(a[j]=='C')
r=12;
else
if(a[j]=='D')
r=13;
else
if(a[j]=='E')
r=14;
else
if(a[j]=='F')
r=15;
else
if(a[j]<48||a[j]>57&&a[j]<65||a[j]>70)//修正程序输入合不合法问题的判断,此处采用ASCII值进行编辑
//if(a[j]>='G'&&a[j]<='Z'||a[j]>='a'&&a[j]<='z')//此段程序不能判断像输入&、%、#等字符的错误判断
{
printf("ERROR!\n");
exit(0);//在头文件<stdlib.h>中定义,无条件跳出程序的的运行
}
else
r=a[j]-'0';//将字符转换成数字
if(r>=t)
{
printf("ERROR!\n");
exit(0);
}
p=p+r*pow((double)t,(double)(x-j-1));//计算结果
}
if(a[x]=='.')
{
for(j=x+1;j<m;j++)
{
if(a[j]=='A')
r=10;
else
if(a[j]=='B')
r=11;
else
if(a[j]=='C')
r=12;
else
if(a[j]=='D')
r=13;
else
if(a[j]=='E')
r=14;
else
if(a[j]=='F')
r=15;
else
if(a[j]<48||a[j]>57&&a[j]<65||a[j]>70)//修正程序输入合不合法问题的判断,此处采用ASCII值进行编辑
//if(a[j]>='G'&&a[j]<='Z'||a[j]>='a'&&a[j]<='z')//此段程序不能判断像输入&、%、#等字符的错误判断
{
printf("ERROR!\n");
exit(0);
}
else
r=a[j]-'0';//将字符转换成数字
if(r>=t)
{
printf("ERROR!\n");
exit(0);
}
p=p+r*pow((double)t,(double)(x-j));
}
}
if(n==10)//选择性计算,如果是整数就不用进行这一步的计算了,这样可以节约程序的运行时间
{
printf("转换结果为:");
if(a[0]=='-')
{
printf("-");
}
printf("%f",p);
}
else
{
k=p;//强制类型转换,可以使用k=(int)p;代替,从而更加的一目了然
i=0;
while(k)//判定需要转换的数是否变为0
{
h[i++]=k%n;//取余,进行进制转换,但是顺序与正确值相反
k/=n;//转换一位之后进行相应的变化
}
c=0;
//if(p!=(int)p)//选择性计算,如果是整数就不用进行这一步的计算了,这样可以节约程序的运行时间
//{
d=p-(int)p;//取小数部分
while(d!=0)
{
b[c]=(int)(d*n);//算法为×N取整
d=d*n-b[c];
c++;
if(c>=10)
break;//主要是控制小数后面万一出现无限小数的时候好跳出循环以免出现死循环
//}
}
printf("转换结果为:");
if(a[0]=='-')
printf("-");
for(j=i-1;j>=0;j--)//反序输出,大于10的数字进行相应的变化
{
if(h[j]==10)
printf("A");
else
if(h[j]==11)
printf("B");
else
if(h[j]==12)
printf("C");
else
if(h[j]==13)
printf("D");
else
if(h[j]==14)
printf("E");
else
if(h[j]==15)
printf("F");
else
printf("%d",h[j]);
}
if(p!=(int)p)//选择性输出,这样可以节约输出时间和程序的运行时间
{
printf(".");
for(j=0;j<c;j++)//正序输出
{
if(b[j]==10)
printf("A");
else
if(b[j]==11)
printf("B");
else
if(b[j]==12)
printf("C");
else
if(b[j]==13)
printf("D");
else
if(b[j]==14)
printf("E");
else
if(b[j]==15)
printf("F");
else
printf("%d",b[j]);
}
}
if(c>=10)//如果是无限小数则在后以省略号表示
printf("......");
}
printf("\n");//输出换行,以使程序的输出结果美观
}
如果想变为C++程序,只需要做适当的修改就是了的呢?比如输入使用cin,输出使用cout等的就可以了的,主题结果就不用变的就好的!使用函数可以简化程序的,自己可以试一下的,此处只是作为参考的!
发表评论
-
破解VS2008
2012-07-30 10:22 0对于VS2008 Team System 版本的破解 开始- ... -
无法解析的外部符号的 3 种可能
2011-08-19 13:21 27381. lib 文件未引入。可使用“#pragma commen ... -
Qt容器测试
2011-08-14 23:39 1016#include "vectortest.h&quo ... -
const_cast,reinterpret_cast,static_cast,dynamic_cast
2011-08-14 13:34 1101static_cast:用于非多态类型的转换。 dynami ... -
C++调用JAVA方法详解
2011-08-13 20:38 979http://public0821.iteye.com/blo ... -
Music Studio项目心得--JNI实现C++调用JAVA (转)
2011-08-13 19:38 2944http://blog.csdn.net/mdl13412/a ... -
让C++和Java相互调用(2)
2011-08-13 12:53 1151http://chnic.iteye.com/blog/236 ... -
JNI编程 —— 让C++和Java相互调用 (一)
2011-08-13 12:51 1242http://chnic.iteye.com/blog/228 ... -
ava生成dll工具ikvm.net
2011-08-08 14:24 1059IKVM.NET的是开源的基于.NET CLR 的Java虚拟 ... -
Vc中得combox的使用
2011-08-01 00:14 1759一、如何添加/删除Combo Box内容1,在Combo Bo ... -
QT中的元对象系统
2011-07-29 23:42 963Qt中的元对象系统是用来处理对象间通讯的信号/槽机制、运 ... -
C++中this指针的用法.
2011-07-29 23:20 3794this指针只能在一个类的成员函数中调用,它表示当前对象的地址 ... -
QT Designer
2011-07-28 21:44 1161(一)简单继承方式的实现1、QT Designer ... -
QWidget QMainWindow QDialog 之间的区别
2011-07-28 20:27 1165QWidget类是所有用户界面对象的基类。 窗口部件是 ... -
Qt达人
2011-07-27 23:19 982http://www.yafeilinux.com/ ... -
二十七、Qt数据库(七)QSqlRelationalTableModel(转)
2011-07-27 23:16 5791QSqlRelationalTableModel,该类为单张的 ... -
Qt的LineEdit 输入内容控制
2011-07-24 19:42 3395默认下,LineEdit接受任何字符输入,如何让LineEdi ... -
QT + VS2008 环境配置
2011-07-23 10:26 1778最近学习QT,配置环境 ... -
qt4:读取 access 数据库
2011-07-22 09:04 1059一个读取access的例子 1。---------- ... -
QT安装
2011-07-17 22:48 862http://hexlee.iteye.com/blog/49 ...
相关推荐
该项目是一款基于freeRTOS操作系统和STM32F103x微控制器的手机远程控制浴室温度系统设计源码,共包含1087个文件,包括580个C语言源文件、269个头文件、45个汇编源文件、36个数据文件、36个目标文件、35个编译规则文件、28个包含文件、27个文本文件、6个源文件、3个归档文件。此系统通过手机远程实现对浴室温度的有效控制,适用于智能浴室环境管理。
labview程序代码参考学习使用,希望对你有所帮助。
labview程序代码参考学习使用,希望对你有所帮助。
labview程序代码参考学习使用,希望对你有所帮助。
labview程序代码参考学习使用,希望对你有所帮助。