三九宝宝网宝宝教育教学论文

C语言输入罗马数字转换成十进制的数字

03月15日 编辑 39baobao.com

[如何将数字转换为2进制?]10进制数转换为2进制数给你一个十进制,比如:6,如果将它转换成二进制数呢?10进制数转换成二进制数,这是一个连续除2的过程:把要转换的数,除以2,得到商和余数,将商继续除以2,直到商为0。...+阅读

#include

#include

#include

#define SYMBOLNUM 7

int GetSymbolIndex(char symbols[],char symbol,int n)

{

while(--n>0)

if(toupper(symbol)==symbols[n])

return n;

return n;

}

int main()

{

char r[16];

char symbols[SYMBOLNUM]={'I','V','X','L','C','D','M'};

int power[SYMBOLNUM]={1,5,10,50,100,500,1000};

int n,len,i=0,*rslt,value=0;

printf("罗马数字个数:");

scanf("%d",&n);

rslt=(int*)malloc(n*sizeof(int));

while(i

{

scanf("%s",r);

len=strlen(r)-1;

while(len>=0)

{

int index=GetSymbolIndex(symbols,r[len],SYMBOLNUM);

if(index<0)

{

puts("输入了非法字符!");

free(rslt);

return 0;

}

if(len>0)

{

int index_1=GetSymbolIndex(symbols,r[len-1],SYMBOLNUM);

if(index_1<0)

{

puts("输入了非法字符!");

free(rslt);

return 0;

}

else if(index==index_1+2||index==index_1+1)

{

value+=power[index]-power[index_1];

len-=2;

}

else

{

value+=power[index];

len--;

}

}

else

{

value+=power[index];

break;

}

}

rslt[i++]=value;

value=0;

}

for(i=0;i

printf("%d\n",rslt[i]);

free(rslt);

return 0;

}

有什么不对的地方给我说一下。

更正:GetSymbolIndex中while(--n>0)应是while(--n>=0)

c语言程序二进制转化成十进制程序怎么写

#include #include #include int zhuan(char op); int main(void) { int i, len, jieguo = 0; char str[20]; printf("请输入一个二进制数据:"); gets(str); len = strlen(str); for (i = 0; i < len; i++) { jieguo = jieguo + zhuan(str[i]) * (int)pow(2 , len - i - 1); } printf("%d\n", jieguo); return 1; } int zhuan(char op) { if (op == '1') { return 1; } else { return 0; } }

关于C语言16进制转换为10进制的问题

首先,说明一下,上面的程序是有错误的,正确的for循环应该这样写: for(i=length(s);s[i]!='\0';i--) length是输入的有效长度,转换运算应该是从最高位到最低位,才能用那些转换公式,下面解释一下公式的含义: n=n*16+s[i]-'0'............

(1) n=n*16+s[i]-'a'+10; .......

(2) 两个公式中s[i]-'0'和s[i]-'a'+10都是为了将字符转换成对应的数值,因为输入的是字符型,例如字符'2',因为它的对应数值是2,由'2'-'0'得到,如果直接类型转换,那么得到的是字符'2'的ANSIC码值,不是2;如果是'e',对应值是14,同理,'e'-'a'+10=14,因为他们的ANSIC码值是连续的,差值加上10就是对应的整数值; 再次,每次循环都n*16,是因为权值越高,基数的阶数越高,说再多也没用,举个例子就一目了然了,例如有16进制字符数组: 2 3 E 5 转换成整型数对应是2 3 14 5 运用上面转换公式计算:((2*16+3)*16+14)*16+5 展开之后,看吧,刚好是2乘16的3次方,3乘16的2次方,14乘16的1次方,5乘16的0次方,再累加,完全符合手动计算的过程,现在应该明白了吧

以下为关联文档:

C语言将输入整数转换成字符串输出改你的代码真是太麻烦了,你看看哪些地方修改了吧。前面的define pow是编译器不同造成的。 #include #include int power(int a, int n) { return pow((double)a, n); } #defi...

c语言中如何将数字转换为字符串函数char*digitToAlpha(intval,char*buf,unsignedradix)的功能是将数值转换为字符串。参数:第一个是要转化的整数,第二个是转化后的字符串,第三个是要转化整数的基数,就是说如果...

c语言怎么把输入的数字从小到大排列1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #define N 10 main() {inta[N],i,j,t; for(i=0;i<N;i++) scanf("%d",&a[i]); for(i=0;i<N-1;i++) for(j=0;j<N-1-i;j++) if(a[j]>a[j...

C语言怎么把字符的ASCII码转换成数字参考代码如下: #includeint main() { unsigned char b; scanf("%c",&b); printf("字符变量%c对应的ASCII值为:%d\n", b,b);//直接整型输出 return 0; } 拓展资料: ASCII(American Stand...

怎么用C语言编程把十进制转化成二进制c语言中没有二进制的格式输出符号. 你可以用itoa函数很方便的将一个10进制int转变成二进制字符串. 如: int i; char s[128]; scanf("%d",&i); itoa(i, s, 2); /*3个参数,第一个...

如何用c语言将十进制数转换为二进制数//--------------------------------------------------------------------------- #include <stdio.h> long int btd(char *s) /*将以字符串形式存储在s地址中的二进制数字...

如何用c语言编写将十进制的数转换成二进制数的程序简单办法是用联合体,直接打印出来。 typedef union DANDB { unsigned long int i; // 存放十进制数 unsigned char c[4]; // 按字元(bit) 直接打印它出来 } DandB; int main() {...

C语言如何输入一个十进值数转换成二进值数让这个数不断与除2取余输出余数序列的倒数即可。 #include <stdio.h> int main( ) { int num, tmp, t = 0; int data[ 1000 ]; printf("请输入一个十进制数: "); scanf("%d", &num);...

C语言把数字字符串转化成整数字符串是不能转换成整数的,单独一个数字字符可以转换为整数。 例如:字符'0'可以转换成整数 48 字符'1'转换成 49 .... 字符'9'转换成 57 原理:C语言中的int类型和 char类型在 0...

推荐阅读
图文推荐