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

#include<stdio.h>
int main()
{
char str[10]="27";
int i,number=0;
for(i=0;str[i]!='\0';i++)
if(str[i]>='0'&&str[i]<='7')
number=number*8+str[i]-'0';
printf("%d\n",number);
for(i=0;str[i]='\0';i++)
if(str[i]>='0'&&str[i]<='5')
number=number*6+str[i]+str[i]-'0';
printf("%d\n",number);
}

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
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-20
第2个循环语句中的条件是个错误的 要不是!= 要么就是==
是!= 就输出23 和190
是==就输出23 和23

C语言入门题目,求详细易懂的解答过程。
答案为第一行:Tony。解答:for循环共循环2次,然后strcpy(a,b)比较两串字符大小,如果strcpy值大于0,则a大于b。具体的比较是看字符串的字母的ASCII码的大小,如果相同,再继续比较第二个,这个不赘述。主要看一下name[],对于一维数组来讲,它是元素,对于二维数组来讲,它不是具体的元素,而是代...

c语言问题求解!!!谢谢!!!
2、字符串长度问题。字符串赋初值时,系统自动给字符串分配一个空间存储‘\\0’字符结束判定字符。他是一个隐藏字符。求字符长度时,strlen求字符长度时会自动忽略‘\\0’,但sizeof不会,所以求字符长度时,sizeof() = strlen() +1;3、自增运算符的运算机制问题。自增运算符放在变量后面,如a++,...

C语言问题,求大神解决,谢谢拉。。我是小白,解释下原因
所以a<b?a:c<d?c:d 可以看成 a<b?a: (c<d?c:d) 1 < 4 ? a : (c < d ? c:d)括号内的表达式也可以看做是一个元素 因为 a = 1 b = 4 所以 条件 a < b 成立 所以选前者 a 答案就是 A) 1

c语言有一道题不会做,求高手解,最好分析一下。
答案是:C 因为scanf("%c%c",&a,&b);接收的是1和2,在输入后按了“回车”这个回车符会传递到下一句,也就是:c=getchar(); ,这样 c 赋值为回车符了;d=getchar(); 接着就是这句,你输入34的时候,d 只接收单个字符,也就是 3 ;所以最后的输出是:12 3 ...

C语言问题,求解析,谢谢
此题第一个考察点是优先级,即算术运算符大于逻辑运算符,第二个考察点是两个整数相除仍然是整数,即舍掉小数点后面的部分,第三个也是最重要的一个考察点是逻辑的运算,即在C语言里,非0的数我们认为它的逻辑值是1,就是它是真的,而整数0的逻辑值是0,就是它是假的,所以本题左边是1 ,右边...

C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因..
第一项的结果不正确。第二项和第四项结果等同都是指向指针的指针操作。可以将二维数组看成一个双重指针,第一个中括号是一个一重指针。比如说a[n][m]中a[0]是一个指向a[0][m]数组首位a[0][0]的指针,而a则是指向指针数组*a[n]的首位a[0]的指针。这样我们来看B选项,*(a+2)表示一...

求C语言题,我是初学者,请讲详细点
C)x=n=1 \/\/很明显,缺少分号,一个语句的最基本要求就是,以分号结束。如果做为一个表达式是合法的,x=n=1同等于 x=1,n=1;D)x=5=4=1;\/\/错误,赋值的最基本要求,被赋值的一定是变量,不能是常量,也就是说左边是变量,右边可以是常量,或者已经被赋值的变量, 因为5 4 都不是变量...

一个C语言指针问题。求大佬解答?
j = 0; j < n; j++){ scanf("%d", &matrix[i][j]);} } \/\/ 求对角线元素之和 int sum = 0;for (int i = 0; i < n; i++){ \/\/ 对角线上的元素的指针 int *p = matrix[i] + i;sum += *p;} printf("Sum of the diagonal elements: %d", sum);return 0;} ...

一个C语言的问题,求大神解答原因!
1、sub1中的变量a,b是其所在文件中定义的,其中a是静态全局变量,b是全局变量 a会默认初始化为0,因此第一次执行sub1()时输出结果中a=0+2=2, b=3+3=6。sub2中的变量a是其所在文件中定义的静态全局变量,因为与sub1()所处不同文件,因此变量a是不同的;而变量b是与另一个文件共享的全局...

c语言 低级问题 求权威答案
所以 x%=x+5 也就是 x= x%(x+5) = 8%13 = 8 为取余运算,也就是为8除以13的余数。所以表达式的值为 8.第二个: 一步一步算。a-=a%6 相当于 a=a-a%6 = 8 - 8%6 = 8-2 =6(a变成6了)a+=6 相当于 a= a+6 = 12 所以 a为12.

相似回答