标题:求助!求助!解一道c语言题,
只看楼主
V玩林
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-12-1
结帖率:66.67%
已结贴  问题点数:10 回复次数:5 
求助!求助!解一道c语言题,
#include <stdio.h>
int main()
{
    int i, PeopleTypes[50];
    int baby, child, teen, adult;
    baby = child = teen = adult= 0;
    printf("请输入1~4的数字,1代表婴儿,2代表儿童,3代表少年,4代表成人,负数终止\n");
    for(i=0;i<50;i++)
    {
        scanf("%d",&PeopleTypes[i]);
        if(PeopleTypes[i] < 0) break;
    }
    for(i=0;i<50;i++)
    {
        if(PeopleTypes[i] == 1) baby++;
        else if(PeopleTypes[i] == 2) child++;
        else if(PeopleTypes[i] == 3) teen++;
        else if(PeopleTypes[i] == 4) adult++;
        else continue;
    }
    printf("婴儿%d人,儿童%d人,少年%d人,成人%d人\n",baby,child,teen,adult);
    return 0;

}
为什么上面这样写最后错了??下面就对了??
#include <stdio.h>
int main()
{
    int i, n, PeopleTypes[50];
    int baby, child, teen, adult;
    baby = child = teen = adult = n = 0;
    printf("请输入1~4的数字,1代表婴儿,2代表儿童,3代表少年,4代表成人,负数终止\n");
    for(i=0;i<50;i++)
    {
        scanf("%d",&PeopleTypes[i]);
        if(PeopleTypes[i] < 0) break;
        n++;
    }
    for(i=0;i<n;i++)
    {
        if(PeopleTypes[i] == 1) baby++;
        else if(PeopleTypes[i] == 2) child++;
        else if(PeopleTypes[i] == 3) teen++;
        else if(PeopleTypes[i] == 4) adult++;
        else continue;
    }
    printf("婴儿%d人,儿童%d人,少年%d人,成人%d人\n",baby,child,teen,adult);
    return 0;

}
搜索更多相关主题的帖子: include c语言 baby 儿童 婴儿 
2016-04-15 22:48
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
得分:2 
因为第一个for如果是break出来的话实际输入的数据只有n个而不是50个;第一个程序假设输入数据都是对的,输出结果才是对的,并没有考虑到数据小于0的情况。

未佩好剑,转身便已是江湖
2016-04-15 23:34
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:2 
程序代码:
    for(i=0;i<50;i++)
    {
        scanf("%d",&PeopleTypes[i]);
        if(PeopleTypes[i] < 0) break;
    }

有break 所以 你的循环可能没有执行 50 次
所以 有一些PeopleTypes[i] 没有进行赋值
而你的PeopleTypes是一个局部非静态未初始化对象
不赋值就值无效
后面读取这写值无效的元素就会出错

https://zh.
2016-04-16 12:10
桑尼少年
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2016-4-16
得分:2 
都是大神啊
2016-04-16 12:12
Hitman丶
Rank: 1
等 级:新手上路
帖 子:3
专家分:7
注 册:2016-4-8
得分:2 
上面的输出for可以写成 for (i = 0; PeopleTypes[i] != -1; i++)  因为-1代表终止输入,但是-1已经赋给了数组里的元素,所以只要不等于-1就输出
2016-04-16 12:35
hfhnhf
Rank: 1
等 级:新手上路
帖 子:1
专家分:2
注 册:2016-4-16
得分:2 
大神级别的呀
2016-04-16 17:39



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




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

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