看看如何填
看看怎么填?
程序填空,不要改变与输入输出有关的语句。
连续输入一批以 # 结束的字符串(字符串的长度不超过80),遇 ## 则全部输入结束。
对每个字符串做如下处理:滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。
例:括号内是说明
输入:
10#Pf4+1#-+A## (连续输入3个字符串)
输出:
16
3905
10
#include "stdio.h "
#define MAXLEN 80
int main( )
{ int i,k;
long number;
char ch,oldch,str[MAXLEN], num[MAXLEN];
oldch= ' ';
while((ch=getchar())!= '# '||oldch!= '# '){
k=0;
while(ch!= '# '&& k < MAXLEN-1){
str[k++]=ch;
ch=getchar();
}
oldch= '# '; str[k]= '\0 ';
/*---------*/
printf( "%ld\n ",number);
}
}
------解决方案--------------------
#include "stdio.h "
#include <iostream.h>
#define MAXLEN 80
long HexToDec(char* p){
long lret = 0;
int val , i;
for(i=0;p[i]!=NULL;i++);
int n = 0;
while(i){
i--;
if (p[i] > = 'A ' && p[i] <= 'F ')
val = 'A ' - 10;
else
if (p[i] > = 'a ' && p[i] <= 'f ')
val = 'a ' - 10;
else
val = '0 ';
val = p[i] - val;
lret += val*(1 < <(4*n));
n++;
}
return lret;
}
int main( )
{ int i,k, j=0;
long number, num[MAXLEN];
char ch,oldch,str[MAXLEN];
oldch= '\0 ';
for(j = 0; j < MAXLEN; num[j++] = -1);
j = 0;
while((ch=getchar())!= '# '||oldch!= '# '){
k=0;
while(ch!= '# '&& k < MAXLEN-1){
if((ch> = '0 ' && ch <= '9 ')
|| (ch> = 'a ' && ch <= 'f ')
|| (ch> = 'F ' && ch <= 'F '))
str[k++]=ch;
ch=getchar();
}
oldch= '# ';
str[k]= '\0 ';
num[j++] = HexToDec(str);
}
// out result -----------------------------------------
for(j = 0; j < MAXLEN && num[j]!= -1 ;j++)
cout < < num[j] < < endl;
system( "PAUSE ");
}
程序填空,不要改变与输入输出有关的语句。
连续输入一批以 # 结束的字符串(字符串的长度不超过80),遇 ## 则全部输入结束。
对每个字符串做如下处理:滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。
例:括号内是说明
输入:
10#Pf4+1#-+A## (连续输入3个字符串)
输出:
16
3905
10
#include "stdio.h "
#define MAXLEN 80
int main( )
{ int i,k;
long number;
char ch,oldch,str[MAXLEN], num[MAXLEN];
oldch= ' ';
while((ch=getchar())!= '# '||oldch!= '# '){
k=0;
while(ch!= '# '&& k < MAXLEN-1){
str[k++]=ch;
ch=getchar();
}
oldch= '# '; str[k]= '\0 ';
/*---------*/
printf( "%ld\n ",number);
}
}
------解决方案--------------------
#include "stdio.h "
#include <iostream.h>
#define MAXLEN 80
long HexToDec(char* p){
long lret = 0;
int val , i;
for(i=0;p[i]!=NULL;i++);
int n = 0;
while(i){
i--;
if (p[i] > = 'A ' && p[i] <= 'F ')
val = 'A ' - 10;
else
if (p[i] > = 'a ' && p[i] <= 'f ')
val = 'a ' - 10;
else
val = '0 ';
val = p[i] - val;
lret += val*(1 < <(4*n));
n++;
}
return lret;
}
int main( )
{ int i,k, j=0;
long number, num[MAXLEN];
char ch,oldch,str[MAXLEN];
oldch= '\0 ';
for(j = 0; j < MAXLEN; num[j++] = -1);
j = 0;
while((ch=getchar())!= '# '||oldch!= '# '){
k=0;
while(ch!= '# '&& k < MAXLEN-1){
if((ch> = '0 ' && ch <= '9 ')
|| (ch> = 'a ' && ch <= 'f ')
|| (ch> = 'F ' && ch <= 'F '))
str[k++]=ch;
ch=getchar();
}
oldch= '# ';
str[k]= '\0 ';
num[j++] = HexToDec(str);
}
// out result -----------------------------------------
for(j = 0; j < MAXLEN && num[j]!= -1 ;j++)
cout < < num[j] < < endl;
system( "PAUSE ");
}