#define MAXLEN 80
int main(void)
{
int k=0,number=0;
char str[MAXLEN];
while((str[k]=getchar())!='#')
k++;
str[k]='\0';
for(k=0;str[k];k++)
if(str[k]>='0'&&str[k]<='9'||str[k]=='A'||str[k]=='B')
if(str[k]>='0'&&str[k]<='9')
number=number*12+str[k]-'0';
else if(str[k]=='A'||str[k]=='B')
number=number*12+str[k]-'A'+10;
else ; /*第15行*/
else break; /*第16行*/
printf("%d\n",number);
return 0;
}
---- 分析如下 ----
第17題
程序輸入10#,
第壹步 number=0*12+1=1
第二步 number=1*12+0=12
第18題
程序輸入1a0#
第壹步 number=0*12+1=1
因為 a 不在 A 和 Z範圍內,所以跳出循環,此時number=1
第19題,程序修改第16行
程序輸入a*0#
因為a和*都不是 0到9,A 和 B 範圍內,所以不能進行計算 number 值
所以 number=0*12+0=0
第20題,程序刪除第15行,恢復第16行
這時的作用和第19題差不多,因為不會執行 else break;LZ自行分析
第壹步:num=0*12+1=1
第二步:num=1*12+6=18
第三步:num=18*12+0=216
LZ自己再好好思考下。。。