| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 677 人关注过本帖
标题:为什么程序结果和实际不一样?简单程序
只看楼主 加入收藏
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册: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
快速回复:为什么程序结果和实际不一样?简单程序
数据加载中...
 
   



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

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