筛选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步的作业吧