C语言找错2

来源:百度知道 编辑:UC知道 时间:2024/05/15 04:59:04
#include"stdio.h"
main()
{int data=0,i,n;
char str[10];
printf("aaaaaaaa\n");
gets(str);
for(i=0;str[i];i++)
{if(str[i]>='0'&&str[i]<='9')
n=str[i]-'0';
else if(str[i]>='A'&&str[i]<='F')
n=str[i]-'A'+10;
else
exit(0);
data=data*16+n;
}
printf("%d",data);
}

#include"stdio.h"
main()
{int data=0,i,n;
char str[10];
printf("aaaaaaaa\n");
gets(str);
for(i=0;str[i];i++)
{
if(str[i]>='0'&&str[i]<='9')
n=str[i]-'0';
else if(str[i]>='A'&&str[i]<='F')
n=str[i]-'A'+10;
else
; //这里直接退出了,改为空语句
data=data*16+n;
}
printf("%d",data);
}

我觉得把exit(0)这句改成break比较好。因为输入了非法字符,就应该退出for循环的。如果只是去掉exit(0),data还会继续计算这就导致所得的结果是错误的。

#include"stdio.h"
main()
{int data=0,i,n;
char str[10];
printf("aaaaaaaa\n");
gets(str);
for(i=0;str[i];i++)
{
if(str[i]>='0'&&str[i]<='9')
n=str[i]-'0';
else if(str[i]>='A'&&str[i]<='F')
n=str[i]-'A'+10;
else
break; //如果有非法字符就退出循环
data=data*16+n;
}
printf("%d",data);
}