一道计算机二级C语言真题 求解 如图 这是笔试题 有答案了 求过程

这道题看不懂,请详解,答案是213
2025-05-07 18:52:34
推荐回答(3个)
回答(1):

while((k=getchar()) != 'a')这句以'a'为循环结束条件,所以输入ABCACCa回车才能结束输入。

初始c[0],c[1],c[2]都为0.
while((k=getchar())!='a')
c[k-'A']++;
while循环: 第一次k='A', c[k-'A']++即为c[0] ++,初始值为0,所以++之后为c[0]=1;
第二次k='B',c[k-'A']++即为c[1]++,同理执行之后c[1] = 1;
第三次k='C',c[k-'A']++即为c[2]++,同理执行之后c[2] = 1;
第四次k='A',c[k-'A']++即为c[0]++,c[0]为1,执行++之后c[0] = 2;
第五次k='C',c[k-'A']++即为c[2]++,c[2]为1,执行++之后c[2] = 2;
第六次k='C',c[k-'A']++即为c[2]++,c[2]为2,执行++之后c[2] = 3;
第七次k='a',while循环结束。
所以最后c[0] = 2, c[1] =1, c[2] = 3

回答(2):

何等奇葩的题目,大小写不分也就不去计较了
竟然会有while((k=getchar())!='a'),输入还没有小写a,根本不会有输出啊

应该是while((k=getchar())!='\n')吧
这样的话,结果为213,也就是依次输出输入的字符串中ABC字母的个数

回答(3):

第一次输入A不等于a,所以c[k-'A'],即c[0]++;等于1
同理第二次。。。。。