vc6.0编写的一个小程序的问题
题目是输入1个4位数字,输出这4个数字但每两个数字间空一个空格。这个是书上的答案,但我有些不明白。一是既然是4位数,那么i=strlen(str)就是4了,str[2*i...
题目是输入1个4位数字,输出这4个数字但每两个数字间空一个空格。
这个是书上的答案,但我有些不明白。一是既然是4位数,那么i=strlen(str)就是4了, str[2*i]=str[i]也就是把str[4]赋给str[8]。但是1 9 9 0总共才7个字符啊,哪来的第八个字符?还有就是为什么最后输出的时候不用手动加'\0'?请高人指导,希望能尽量详细点。 展开
这个是书上的答案,但我有些不明白。一是既然是4位数,那么i=strlen(str)就是4了, str[2*i]=str[i]也就是把str[4]赋给str[8]。但是1 9 9 0总共才7个字符啊,哪来的第八个字符?还有就是为什么最后输出的时候不用手动加'\0'?请高人指导,希望能尽量详细点。 展开
1个回答
展开全部
输入1990(enter)
后str[80]中存的字符是'1''9''9''0''/0'
strlen(str) --> 4 == i;
(str[2*i] = str[i] ) --> (str[8] = str[4]) --> ('NULL' = '/0')
(str[2*i - 1] = ' ')--> (str[7] = ' ')
i -- ;// i == 3
(str[2*i] = str[i] ) --> (str[6] = str[3]) --> ('NULL' = '0')
(str[2*i - 1] = ' ')--> (str[5] = ' ')
i -- ;// i == 2
(str[2*i] = str[i] ) --> (str[4] = str[2]) --> ('NULL' = '9')
(str[2*i - 1] = ' ')--> (str[3] = ' ')
i -- ;// i == 1
(str[2*i] = str[i] ) --> (str[2] = str[1]) --> ('NULL' = '9')
(str[2*i - 1] = ' ')--> (str[1] = ' ')
i -- ;//i == 0
For循环退出
str[1]本来就存储的 '1'
所以就是这样了...
后str[80]中存的字符是'1''9''9''0''/0'
strlen(str) --> 4 == i;
(str[2*i] = str[i] ) --> (str[8] = str[4]) --> ('NULL' = '/0')
(str[2*i - 1] = ' ')--> (str[7] = ' ')
i -- ;// i == 3
(str[2*i] = str[i] ) --> (str[6] = str[3]) --> ('NULL' = '0')
(str[2*i - 1] = ' ')--> (str[5] = ' ')
i -- ;// i == 2
(str[2*i] = str[i] ) --> (str[4] = str[2]) --> ('NULL' = '9')
(str[2*i - 1] = ' ')--> (str[3] = ' ')
i -- ;// i == 1
(str[2*i] = str[i] ) --> (str[2] = str[1]) --> ('NULL' = '9')
(str[2*i - 1] = ' ')--> (str[1] = ' ')
i -- ;//i == 0
For循环退出
str[1]本来就存储的 '1'
所以就是这样了...
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询