请各位C语言高手指导指导。
答案:1 悬赏:70 手机版
解决时间 2021-01-30 21:42
- 提问者网友:缘字诀
- 2021-01-29 20:51
请各位C语言高手指导指导。
最佳答案
- 五星知识达人网友:想偏头吻你
- 2021-01-29 22:07
N-S 图没关系。不用自责,只要多加几分,你只要题目放这里
答案就有了。。。
#include
#define MAX 1000 //(为什么定义MAX为1000?)答:这个是用来定数组大小的数。。你可以改100,只要你输入位数够用就行
void main()
{
int htoi(char s[]);
int c,i,flag,flag1;
char t[MAX];// (为什么定义char t[MAX]?其有什么作用?) 数组t[1000]用来存放输入的每个字符,最长可以到999个字符。
i=0;
flag=0; //标记
flag1=1; //标记
printf("\ninput a HEX number:");
while((c=getchar())!='\0'&&i {
if(c>='0'&&c<='9'IIc>='a'&&c<='f'IIc>='A'&&c<='F') //(我想问一下,十六进制数的表示形式中有没有a,b,c,d,e,f?) 这个只是照顾大小写,16进制大小写表示都可以。
{
flag=1;
t[i++]=c;
}
else if(flag)
{
t[i]='\0';
printf("decimal number %d:\n",htoi(t));// (这行中划下划线的部分是不是函数调用?) 是的!
printf("contiune or not?");// (从这一行到main函数最后(即四个花括号)表示什么意思?)
c=getchar(); //读入一个字符,你键盘输入
if(c=='N'||c=='n') //判断是 N或n 表示否
flag1=0; //一个标记值设为 0 ;结束
else
{
flag=0;
i=0;
printf("\ninput a HEX number:");
}
}
}
}
int htoi(char s[])
{
int i,n;
n=0;
for(i=0;s[i]!='\0';i++)
{
if(s[i]>='0'&&s[i]<= '9')
n=n*16+s[i]-'0';// (当s[i]中有数字(0—9)时,在计算n时为什么要在最后加上一个“—‘0’”?)因为s[i]是字符ascii码,'0' 的ascii码是48.1是49,类推,所以ascii减一下就是他实际 数字大小。实现了字符转等值数字的运算。
if(s[i]>='a'&&s[i]<='f')
n=n*16+s[i]-'a'+10;
if(s[i]>='A'&&s[i]<='F')
n=n*16+s[i]-'A'+10; //(当s[i]中有A,B,C,D,E,F时,为什么不直接把 n=n*16+s[i]-'A'+10写成n=n*16+s[i]?(也就是说为什么要在最后添一个“—‘A’+10?))这里和上面一样,也是算ascii,实现字符转数字 ,你可以去查ascii码表,
}
return(n);
}
答案就有了。。。
#include
#define MAX 1000 //(为什么定义MAX为1000?)答:这个是用来定数组大小的数。。你可以改100,只要你输入位数够用就行
void main()
{
int htoi(char s[]);
int c,i,flag,flag1;
char t[MAX];// (为什么定义char t[MAX]?其有什么作用?) 数组t[1000]用来存放输入的每个字符,最长可以到999个字符。
i=0;
flag=0; //标记
flag1=1; //标记
printf("\ninput a HEX number:");
while((c=getchar())!='\0'&&i
if(c>='0'&&c<='9'IIc>='a'&&c<='f'IIc>='A'&&c<='F') //(我想问一下,十六进制数的表示形式中有没有a,b,c,d,e,f?) 这个只是照顾大小写,16进制大小写表示都可以。
{
flag=1;
t[i++]=c;
}
else if(flag)
{
t[i]='\0';
printf("decimal number %d:\n",htoi(t));// (这行中划下划线的部分是不是函数调用?) 是的!
printf("contiune or not?");// (从这一行到main函数最后(即四个花括号)表示什么意思?)
c=getchar(); //读入一个字符,你键盘输入
if(c=='N'||c=='n') //判断是 N或n 表示否
flag1=0; //一个标记值设为 0 ;结束
else
{
flag=0;
i=0;
printf("\ninput a HEX number:");
}
}
}
}
int htoi(char s[])
{
int i,n;
n=0;
for(i=0;s[i]!='\0';i++)
{
if(s[i]>='0'&&s[i]<= '9')
n=n*16+s[i]-'0';// (当s[i]中有数字(0—9)时,在计算n时为什么要在最后加上一个“—‘0’”?)因为s[i]是字符ascii码,'0' 的ascii码是48.1是49,类推,所以ascii减一下就是他实际 数字大小。实现了字符转等值数字的运算。
if(s[i]>='a'&&s[i]<='f')
n=n*16+s[i]-'a'+10;
if(s[i]>='A'&&s[i]<='F')
n=n*16+s[i]-'A'+10; //(当s[i]中有A,B,C,D,E,F时,为什么不直接把 n=n*16+s[i]-'A'+10写成n=n*16+s[i]?(也就是说为什么要在最后添一个“—‘A’+10?))这里和上面一样,也是算ascii,实现字符转数字 ,你可以去查ascii码表,
}
return(n);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯