谁能帮忙解一下下面得c语言啊 谢谢啦

来源:百度知道 编辑:UC知道 时间:2024/06/23 06:51:20
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。

#include "Stdio.h"
main()
{
int check(char);
char ch,newch[80];
int repeat,n,i;
double k;
while(1)
{
printf("Tn put repeat(1-10):");
scanf("%d",&repeat);
if(repeat>=1&&repeat<=10)break;
}
getchar(); /*接受回车符*/
for(i=0;i<repeat;i++)
{
k=0;
printf("The %dth:",i+1);
while((ch=getchar())!='\n')/*当接受的字符不是回车符*/
{
if((n=check(ch))!=-1)/*当是十六进制的字符*/
{
printf("%c",ch);/*输出新的字符串*/
k*=16;
k+=n;
}
}
printf(" %.0f\n",k); /*输出十进制数字*/
}
getch();
}
int check(char c) /*检测字符是否是十六进制的数字*/
{
if(c>=65&&c<=70)return c-55;
if(c>=97&&c<=102)return c-87;
if(c>=48&&c<=57)