C语言程序解读,如何得到的结果,最好详细点?
3个回答
展开全部
打印输出结果为:1115。
一、这里k循环条件是s[k],只要s[k]的值不为0,就一直循环。而s字符串最后一位隐藏位是0。
所以k循环的次数就是字符串s的长度8。
二、循环中的switch语句判断的是s[k]的值,也就是说比较了字符串的每一位。当k值为0,1,2,3时,s[k]为'1','2','3','4',对应i值为0,1,2,3,所以前4次循环分别执行了c[0]++,c[1]++,c[2]++,c[3]++,前4次循环后c数组的值为1111。
三、后4次循环,s[k]值为'5','6','7','8'。switch无对应case执行,因此后4次的i值都是3。
所以后4次循环执行了4次c[3]++。所以后4次循环后c数组的值为1115。
更多追问追答
追问
执行了c[0]++,c[1]++,c[2]++,c[3]++,是怎么得出值就为1111的?这是怎么算的我还是不太明白,后面执行了4次c[3]++,值为1115,这个C[i]++的值都是怎么算的?
追答
程序开始int c[0]={0};这句是把数组c所有元素都初值0。所以c每个元素开始都是0。上面那个初始化语句,数组给初值如没有对应数组个数,那么剩余元素取默认初值0。但是如一个初值都不给,就是随机数,后面++就不可控,所以必须给初值。
展开全部
开始:c[4]={0,0,0,0}
for走1次:i=0,c[4]={1,0,0,0}
for走2次:i=1,c[4]={1,1,0,0},
for走3次:i=2,c[4]={1,1,1,0},
for走4次:i=3,c[4]={1,1,1,1},
for走5次:i=3,c[4]={1,1,1,2},
for走6次:i=3,c[4]={1,1,1,3},
for走7次:i=3,c[4]={1,1,1,4},
for走8次:i=3,c[4]={1,1,1,5},
for走1次:i=0,c[4]={1,0,0,0}
for走2次:i=1,c[4]={1,1,0,0},
for走3次:i=2,c[4]={1,1,1,0},
for走4次:i=3,c[4]={1,1,1,1},
for走5次:i=3,c[4]={1,1,1,2},
for走6次:i=3,c[4]={1,1,1,3},
for走7次:i=3,c[4]={1,1,1,4},
for走8次:i=3,c[4]={1,1,1,5},
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当k等于0,1,2,3时,s[k]分别等于'1','2','3','4',对应于c[0],c[1],c[2],c[3],各执行一次自加,且i的值是3。
当k等于4,5,6,7时,s[k]分别等于'5','6','7','8',不会执行switch语句,但会执行c[3]++(此时i的值是3)。
所以,输出是:
1 1 1 5(最后也有一个空格)
当k等于4,5,6,7时,s[k]分别等于'5','6','7','8',不会执行switch语句,但会执行c[3]++(此时i的值是3)。
所以,输出是:
1 1 1 5(最后也有一个空格)
追问
不好意思,还是没懂,我初学,能不能说的易懂点,还是不知道1115到底怎么得来的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询