
C++滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。
输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。输入输出示例:括号内为说明输入:...
输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。
输入输出示例:括号内为说明
输入:
2 (repeat=2)
10
+A
输出:
Dec = 16
Dec = 10
#include "stdio.h"
#include "string.h"
#define MAXLEN 80
int main(void)
{
char ch;
char str[MAXLEN], num[MAXLEN];
int i, k;
int repeat, ri;
long number;
scanf("%d", &repeat);
getchar();
for(ri = 1; ri <= repeat; ri++){
i = 0;
while((ch = getchar()) != '\n'){
str[i]=ch;
i++;
}
str[i] = 0;
k=0;number=0;
for(i=0;str[i]!=0;i++)
if(str[i]>='0'&&str[i]<='9'||str[i]>='A'&&str[i]<='F'){
num[k]=str[i];
k++;
}
num[k]=0;
for(k=0;num[k]!=0;k++)
if(num[k]>='0'&&num[k]<='9')
number=number*16+(num[k]-'0');
else
number=number*16+(num[k]-'A'+10);
/*---------*/
printf("Dec = %ld\n",number);
}
return 0;
}
我哪里写错了呀!!!!
急求高手帮忙啊~~~~~~~!!!!!!
恩,定义部分应该没问题,这是个程序填空,定义的地方是题目给出的。。。。
k=0;number=0;
for(i=0;str[i]!=0;i++)
if(str[i]>='0'&&str[i]<='9'||str[i]>='A'&&str[i]<='F'){
num[k]=str[i];
k++;
}
num[k]=0;
for(k=0;num[k]!=0;k++)
if(num[k]>='0'&&num[k]<='9')
number=number*16+(num[k]-'0');
else
number=number*16+(num[k]-'A'+10);
这段是我自己写的。。。 展开
输入输出示例:括号内为说明
输入:
2 (repeat=2)
10
+A
输出:
Dec = 16
Dec = 10
#include "stdio.h"
#include "string.h"
#define MAXLEN 80
int main(void)
{
char ch;
char str[MAXLEN], num[MAXLEN];
int i, k;
int repeat, ri;
long number;
scanf("%d", &repeat);
getchar();
for(ri = 1; ri <= repeat; ri++){
i = 0;
while((ch = getchar()) != '\n'){
str[i]=ch;
i++;
}
str[i] = 0;
k=0;number=0;
for(i=0;str[i]!=0;i++)
if(str[i]>='0'&&str[i]<='9'||str[i]>='A'&&str[i]<='F'){
num[k]=str[i];
k++;
}
num[k]=0;
for(k=0;num[k]!=0;k++)
if(num[k]>='0'&&num[k]<='9')
number=number*16+(num[k]-'0');
else
number=number*16+(num[k]-'A'+10);
/*---------*/
printf("Dec = %ld\n",number);
}
return 0;
}
我哪里写错了呀!!!!
急求高手帮忙啊~~~~~~~!!!!!!
恩,定义部分应该没问题,这是个程序填空,定义的地方是题目给出的。。。。
k=0;number=0;
for(i=0;str[i]!=0;i++)
if(str[i]>='0'&&str[i]<='9'||str[i]>='A'&&str[i]<='F'){
num[k]=str[i];
k++;
}
num[k]=0;
for(k=0;num[k]!=0;k++)
if(num[k]>='0'&&num[k]<='9')
number=number*16+(num[k]-'0');
else
number=number*16+(num[k]-'A'+10);
这段是我自己写的。。。 展开
展开全部
i表示字符串长度
for(i=0;str[i]!=0;i++)
写成for(k=0;k<i;k++)
for(i=0;str[i]!=0;i++)
写成for(k=0;k<i;k++)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include "stdio.h"
#include "string.h"
#define MAXLEN 80
int main(void)
{
char ch;
char str[MAXLEN], num[MAXLEN];
int i, k;
int repeat, ri;
long number;
scanf("%d", &repeat);
getchar();
for(ri = 1; ri <= repeat; ri++){
i = 0;
while((ch = getchar()) != '\n'){
str[i]=ch;
i++;
}
str[i] = 0;
k=0;number=0;
for(i=0;str[i]!=0;i++)
if(str[i]>='0'&&str[i]<='9'||str[i]>='A'&&str[i]<='F'||str[i]>='a'&&str[i]<='f'){
num[k]=str[i];
k++;
}
num[k]=0;
for(k=0;num[k]!=0;k++)
if(num[k]>='0'&&num[k]<='9')
number=number*16+(num[k]-'0');
else if(num[k]>='A'&&num[k]<='F')
number=number*16+(num[k]-'A'+10);
else
number=number*16+(num[k]-'a'+10);
printf("Dec = %ld\n",number);
}
return 0;
}
#include "string.h"
#define MAXLEN 80
int main(void)
{
char ch;
char str[MAXLEN], num[MAXLEN];
int i, k;
int repeat, ri;
long number;
scanf("%d", &repeat);
getchar();
for(ri = 1; ri <= repeat; ri++){
i = 0;
while((ch = getchar()) != '\n'){
str[i]=ch;
i++;
}
str[i] = 0;
k=0;number=0;
for(i=0;str[i]!=0;i++)
if(str[i]>='0'&&str[i]<='9'||str[i]>='A'&&str[i]<='F'||str[i]>='a'&&str[i]<='f'){
num[k]=str[i];
k++;
}
num[k]=0;
for(k=0;num[k]!=0;k++)
if(num[k]>='0'&&num[k]<='9')
number=number*16+(num[k]-'0');
else if(num[k]>='A'&&num[k]<='F')
number=number*16+(num[k]-'A'+10);
else
number=number*16+(num[k]-'a'+10);
printf("Dec = %ld\n",number);
}
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |