标题:为什么程序结果和实际不一样?简单程序
只看楼主
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 6楼 Fate红Archer
这有啥不懂的呐,若输入
AAAAA
AAAAA
就是输入了11个字符,分别是 'A' 'A' 'A' 'A' 'A' '\n' 'A' 'A' 'A' 'A' 'A'
你取了前10个分别比较,就是
'A' 比 '\n'
'A' 比 'A'
'A' 比 'A'
'A' 比 'A'
'A' 比 'A'
相同的当然是4个

程序代码:
#include <stdio.h>
#define TOTAL 5

int main()
{
    int i, sum=0;
    char a[TOTAL],b[TOTAL];

    printf("The correct answer:\n");
    for(i=0;i<TOTAL;++i)
        scanf("%c",&a[i]);
    scanf( "%*c" );

    printf("The answer of student:\n");
    for(i=0;i<TOTAL;++i)
        scanf("%c",&b[i]);
    scanf( "%*c" );

    for(i=0;i<TOTAL;++i)
        sum += (a[i]==b[i]);
    printf("The number of correct answers: %d\n",sum);

    return 0;
}

2013-02-06 15:24
幽灵X
Rank: 5Rank: 5
等 级:职业侠客
帖 子:128
专家分:328
注 册:2013-1-28
得分:0 
第12行改为:scanf("\n%c",&b[j]);就好了。
2013-02-06 19:08
boqiang
Rank: 2
等 级:论坛游民
帖 子:9
专家分:12
注 册:2013-1-17
得分:0 

是这样的:
你是连着输了五个A,对不对
应该输一个A,按一次回车键
因为当输入的数据多于scanf函数要求的个数时,多余的数据将留在缓冲区作为下一次输入操作的输入数据
如果你连着输入五个A后,再按回车,再输入五个A,那么a[0]到a[4]就是'A'了,而b[0]='\n',b[1]到b[4]都是'A',你数数两个数组中有几个元素满足a[k]=b[k]

[ 本帖最后由 boqiang 于 2013-2-6 20:49 编辑 ]
2013-02-06 20:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-398390-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.007374 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved