请各位C语言高手指导指导。

来源:百度知道 编辑:UC知道 时间:2024/06/27 12:10:42
赋变量初值
输入字符不为EOF和不超过定义长度而且flag==1
T 合法的十六进制字符 F
Flag=1 将输入的字符存入数组 T flag=1 F
赋数组结尾字符为‘\0’
调htoi函数进行数制转换
T 不再继续做了 F
flag1=0 flag=0
i=0

本人最近遇到一个C语言问题(编写一个函数,输入一个十六进制数,输出相应的十进制数)。由于水平原因,找到答案却看不懂,所以请教各位C语言强人!敬请赐教!谢谢!
第一张图是主函数main的N-S图;第二张图是十进制数的函数htoi的N-S图(因为个人水平原因,图中部分线没有能够被画出,敬请谅解!)

n=1
对于每一位字符S[i]
T S[i]在‘0’到‘9’之间 F
n=n*16+S[i]—‘0’
T S[i]在‘a’到‘f’之间 F
n=n*16+S[i]—‘a’+10
T S[i]在‘A’到‘F’之间 F
n=n*16+S[i]—‘A’+10
返回n

#include<stdio.h>
#define MAX 1000 (为什么定义MAX为1000?)
void main()

N-S 图没关系。不用自责,只要多加几分,你只要题目放这里
答案就有了。。。

#include<stdio.h>
#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<MAX&&flag1) //(这一行中划下划线的语句表示什么意思?) 你应该指c=getchar())!='\0'吧,判断是不是结尾了 ,'\0'是文件结为符
{
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?")