求一道C语言问题,求高手详解,谢谢!

2024-11-12 05:23:58
推荐回答(2个)
回答1:

for(i=0;str[i]!='\0';i++)
if(str[i]>='0'&&str[i]<='7')
number=number*8+str[i]-'0';
printf("%d\n",number);
先看这个循环;
第一次;i=0,str[0]="2"!='\0',执行循环体内语句
str[0]="2">='0'&& <='7'
number=0*8+str[0]-'0'=2;
第二次循环;i=1;str[1]="7"!='\0',执行循环体内语句
str[1]="7">='0'&& <='7'
number=2*8+str[1]-'0'=16+7=23;
第三次循环;i=2,str[2]='\0',跳出循环
执行输出语句;输出 23
看这个循环 for(i=0;str[i]='\0';i++)
if(str[i]>='0'&&str[i]<='5')
number=number*6+str[i]+str[i]-'0';
第一次;i=0,str[0]="2"!='\0',执行循环体内语句
str[0]="2">='0'&& <='5'
number=0*8+str[0]-'0'=2;
第二次循环;i=1;str[1]="7"!='\0',执行循环体内语句
str[1]="7">='0'&& <='5'为假
执行第三次循环
第三次循环;i=2,str[2]='\0',跳出循环
执行输出语句;输出 2
最后屏幕输出 23
2

回答2:

第2个循环语句中的条件是个错误的 要不是!= 要么就是==
是!= 就输出23 和190
是==就输出23 和23