本文共 1408 字,大约阅读时间需要 4 分钟。
[IDE][提交][状态][讨论版]
题目描述
设有一个字符串A 的 结 构 为 : A 的结构为: A 的结构为:A=’mp’
其中m为数字串(长度<=20),而n,p均为1或2位的数字串(其中所表达的内容在2-10之间)。
要求:从键盘上读入A 后 ( 不 用 正 确 性 检 查 ) , 将 A 后(不用正确性检查),将A 后(不用正确性检查),将A中的数字串m(n进制),以p进制的形式输出。
例如:48<10>8
其意义为:将10进制数48,转换成8进制数输出。
输出结果为:60<8>
输入
字符串A$
输出
按要求进行进制转换后的数
样例输入
48<10>8样例输出
60<8>代码
#include<stdio.h> #include<string.h> #include<stdlib.h> int TenNum(char a[],int B); //将输入的数字转换成10进制数 void Numchange(int m, int B); //将转换好了的10进制数转换为所需进制数 int TenNum(char a[], int B) { int len, i, num; int sum = 0; len = strlen(a); //求得字符串长度 for (i = 0; i < len; i++) { if (a[i] >= ‘0’ && a[i] <= ‘9’) num = a[i] - ‘0’; else if (a[i] >= ‘A’ && a[i] <= ‘F’) num = a[i] - ‘A’ + 10; sum = sum * B + num; } return sum; } void Numchange(int m, int b) { int n; if (m) { Numchange(m / b, b); n = m % b; if (n < 10) printf("%d", n); //小于10直接输出 else printf("%c", n + 55); //大于10转换成字符输出 } }int main()
{ int B,b=0,i,j,k; char a[20]={0},c[20]={0},d[20]={0},e[20]={0}; scanf("%s",c);i=0,j=0,k=0; for(i=0;i<strlen©;i++) {if(c[i]>='0'&&c[i]<='9') {a[i]=c[i]; continue; } if(c[i]=='<') { i++; while(c[i]>='0'&&c[i]<='9') { d[j++]=c[i]; i++; } } if(c[i]=='>') { i++; while(c[i]>='0'&&c[i]<='9') { e[k++]=c[i]; i++; } } }
for(i=strlen(d)-1,j=1;i>=0;i–,j=j10) { int x=d[i]-‘0’; B=B+xj;
} for(i=strlen(e)-1,j=1;i>=0;i–,j=j10) { int y=e[i]-‘0’; b=b+yj; } int m = TenNum(a, B); Numchange(m, b); printf("<%d>",b); }转载地址:http://tbue.baihongyu.com/