筛选16进制字符,进制转换
#include <stdio.h>
int main()
{
char c;
char a[80];
int i=0;
while((c=getchar())!='#')
{
if((c>='0'&&c<='9')||(c>='a'&&c<='f')||(c>='A'&&c<='F'))
{
a[i]=c;
i++;
}
}
int j;
for(j=0;j<i;j++)
{
printf("%c",a[j]);
}
return 0;
}
秦九韶算法
#include <stdio.h>
int main()
{
char c;
char a[80];
int i=0;
while((c=getchar())!='#')
{
if((c>='0'&&c<='9')||(c>='a'&&c<='f')||(c>='A'&&c<='F'))
{
a[i]=c;
i++;
}
}
int j;
for(j=0;j<i;j++)
{
printf("%c",a[j]);
}
int hextovalue(char a)
{
if(a>='0'&&a<='9')
{
return a-'0';
}
else if(a>='A'&&a<='F')
{
return 10+(a-'A');
}
else if(a>='a'&&a<='f')
{
return 10+(a-'a');
}
else return -1;
}
int digit;
long long result=0;
for(j=0;j<i;j++)
{
char c=a[j];
digit=hextovalue(c);
result = result*16+digit;
}
printf("\n%lld",result);
return 0;
}
改动后的代码
函数定义位置改动
c变量进行初始化
进制包含字符0~9,A~F,a~f
(用星火AI检查时的漏洞,改动错误)
#include <stdio.h>
#include <string.h>
int hextovalue(char a);
int main()
{
char c='\0';
char a[80];
int i=0;
while((c=getchar())!='#')
{
if((c>='0'&&c<='9')||(c>='a'&&c<='f')||(c>='A'&&c<='F'))
{
a[i]=c;
i++;
}
}
puts(a);
int digit;
long long result=0;
int j;
for(j=0;j<i;j++)
{
char c=a[j];
digit=hextovalue(c);
result = result*16+digit;
}
printf("%lld",result);
return 0;
}
int hextovalue(char a)
{
if(a>='0'&&a<='9')
{
return a-'0';
}
else if(a>='A'&&a<='F')
{
return 10+(a-'A');
}
else if(a>='a'&&a<='f')
{
return 10+(a-'a');
}
else return -1;
}
小作业小作业 文章被收录于专栏
小作业,姑且叫做操作步骤超过5步的作业吧
