#include<stdio.h> int main(){ int i=0,j,flag=0,n=0; char ch,a[80]; a[0]='\0'; while((ch=getchar())!='#'){ if(ch=='-'&&a[0]=='\0'){ a[i]=ch; i++; } if((ch>='a'&&ch<='f')||(ch>='A'&&ch<='F')||(ch>='0'&&ch<='9')){ a[i]=ch; i++; flag=1; } } if(a[0]=='-'&&flag)printf("-"); j=i; for(i=0;i<j;i++){ if(a[i]>='0'&&a[i]<='9')n=n*16+a[i]-'0'; else if(a[i]>='A'&&a[i]<='Z')n=n*16+a[i]-'A'+10; else if(a[i]>='a'&&a[i]<='z')n=n*16+a[i]-'a'+10; } printf("%d",n); return 0; }
时间: 2023-10-23 11:10:49 浏览: 75
字符串函数string.h应用举例.-综合文档
这是一段 C 语言代码,它的功能是将输入的十六进制数(可以带有负号)转换成对应的十进制数,并输出该十进制数。
具体地,该代码首先定义了一个字符数组 `a` 和一个整数变量 `i`,并将 `a[0]` 的值设为字符 `\0`,`i` 的值设为 0。然后,它使用一个循环读入一个字符,直到读入到字符 `#` 为止。在读入字符的过程中,该代码会根据字符的不同情况,将其存储到字符数组 `a` 中。
具体地,如果读入的字符是 `-`,且字符数组 `a` 中还没有存储任何有效字符,则将该字符存储到 `a` 中,并将 `i` 的值加 1;如果读入的字符是十六进制数中的一个字符(即 `'0'` 到 `'9'`、`'A'` 到 `'F'` 或 `'a'` 到 `'f'`),则将该字符存储到 `a` 中,并将 `i` 的值加 1;如果读入的是其他字符,则不做任何操作。
读入字符结束后,该代码会根据存储在字符数组 `a` 中的字符,计算对应的十进制数,并存储到整数变量 `n` 中。具体地,该代码使用一个循环遍历 `a` 中的每个字符,如果该字符是 `'0'` 到 `'9'` 中的一个,则将其转换成对应的数值,并加到 `n` 上;如果该字符是 `'A'` 到 `'F'` 中的一个,则将其转换成对应的数值(即 10 到 15),并加到 `n` 上;如果该字符是 `'a'` 到 `'f'` 中的一个,则也将其转换成对应的数值,并加到 `n` 上。
最后,该代码会根据 `a` 的第一个字符是否是负号,来输出最终的结果。如果 `a` 的第一个字符是负号且其中包含有效字符,则在输出结果之前先输出一个负号。最后,该代码使用 `printf` 函数输出转换后的十进制数,并返回值为 0。
因此,该代码的作用是将输入的十六进制数转换成对应的十进制数,并输出该十进制数。
阅读全文