谁能帮我用c语言编程?
发布网友
发布时间:2024-03-06 22:14
我来回答
共4个回答
热心网友
时间:2024-04-12 01:03
关键是要把基数大于10的进制的计算控制好。
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int base(char *p,int r){
int nDec,i;
for(nDec=i=0;p[i];i++)
(nDec*=r)+=(p[i]<='9' ? p[i]-'0' : (p[i]&0xDF)-0x37);
return nDec;
}
int main(void){
int i;
char d[11],r;
while(1){//这个循环保证输入合法
printf("Please enter r & d(like 3 211,0 0 end)...\n");
scanf("%d%s",&r,d);
if(r>1 && r<17){//基数在2~16范围内才处理
for(i=0;d[i];i++)
if((d[i]<='9' ? d[i]-'0' : (d[i]&0xDF)-0x37)>=r){
r=17;
break;
}
if(r-17)
printf("%s(%d) <--> %d\n\n",d,r,base(d,r));
}
if(r>16 || r==1)//若输入有错则要求重新输入
printf("Error, redo: ");
else if(r==0 && *d=='0')//输入0 0结束
break;
}
printf("\n");
return 0;
}
热心网友
时间:2024-04-12 00:59
你要写什么程序??
热心网友
时间:2024-04-12 01:04
/*
请输入进制和数字串(空格隔开) : 3 211
22
请按任意键继续. . .
*/
#include <stdio.h>
long Stod(char s[],int base) {//将base进制的数字串转换为10进制数
long i,t,n = 0;
for(i = 0; s[i]; ++i) {
if((s[i] >= 'a') && (s[i] <= 'z')) t = s[i] - 'a' + 10;
if((s[i] >= 'A') && (s[i] <= 'Z')) t = s[i] - 'A' + 10;
if((s[i] >= '0') && (s[i] <= '9')) t = s[i] - '0';
n = n*base + t;
}
return n;
}
int main() {
int base;
char s[10];
printf("请输入数字串和进制(空格隔开) : ");
scanf("%d %s",&base,s);
printf("%d\n",Stod(s,base));
return 0;
}
热心网友
时间:2024-04-12 01:04
函数名也叫 base,其第一个参数也叫 base,可以么?
另,str 是 C 保留字吧?能用作变量名么?
long base(int b,char *p)
{
long n;
if *p<=57 then n=*p-48; else n=*p-55;
*p++;
while(~*p)
{
n=n*b;
if *p<=57 then n=n+(*p-48); else n=n+(*p-55);
*p++;
}
return n;
}
void main()
{
int b;char s[20];
scanf(&b,s);
printf("%d",base(b,s));
}