| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 699 人关注过本帖
标题:关于计算机二级的问题,请帮忙看一下程序哪里出错了
只看楼主 加入收藏
Bailey_27
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2012-5-11
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
关于计算机二级的问题,请帮忙看一下程序哪里出错了
统计个年龄段的人数,要求函数把0至9岁年龄段的人数放在d[0]中,把10至19年龄段的人数放在的d[1]中,其余依此类推,把100岁(含100)以上的人数放在d[10]中。
请问红色字体部分哪里错了??为什么不能输出正确的结果??
#include
#define  N  50
#define  M  11

void fun(int *a, int *b)
{[color=#ff0000]int i,j,c;
for(i=0;i
搜索更多相关主题的帖子: 计算机二级 include 年龄段 
2012-08-29 10:31
Bailey_27
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2012-5-11
收藏
得分:0 
程序在这里
#include <stdio.h>
#define  N  50
#define  M  11

void fun(int *a, int *b)
{int i,j,c;
for(i=0;i<M;i++)
b[i]=0;
for(j=0;j<N;j++)
{if(a[j]>=100)
b[10]=a[j];
else
c=a[j]/10;}
switch(c)
{case 0: b[0]++;break;
case 1: b[1]++;break;
case 2: b[2]++;break;
case 3: b[3]++;break;
case 4: b[4]++;break;
case 5: b[5]++;break;
case 6: b[6]++;break;
case 7: b[7]++;break;
case 8: b[8]++;break;
case 9: b[9]++;break;}


}

double rnd()
{
    static t=29, c=217, m=1024, r=0;
    r=(r*t+c)%m;
    return((double)r/m);
}

main()
{
    int  age[N], i, d[M];
    FILE *out ;
    for(i=0;  i<N; i++)
        age[i]=(int)(115*rnd());
    printf("The original data :\n");
    for(i=0; i<N; i++)
        printf((i+1)%10==0?"%4d\n":"%4d",age[i]);
    printf("\n\n");
    fun( age,  d);
    out=fopen ("out.dat","w");
    for(i=0;i<10;i++)
    {
        printf("%4d---%4d  :  %4d\n", i*10, i*10+9, d[i]);
        fprintf(out, "%4d---%4d  :  %4d\n", i*10, i*10+9, d[i]);
    }
    printf("  Over  100  :  %4d\n", d[10]);
    fprintf(out, "  Over  100  :  %4d\n", d[10]);
    fclose (out );
}
2012-08-29 10:32
silent_world
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:258
专家分:1138
注 册:2011-9-24
收藏
得分:0 
好像是c=a[j]/10;}
多个‘}’

这个‘}’移到整个switch模块后面即可。

没有调试,你自己再确定下。
2012-08-29 11:19
Bailey_27
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2012-5-11
收藏
得分:0 
回复 3楼 silent_world
我试了下  可以出结果了  不过只有部分结果是正确的  还有一部分好像计算错误了  为什么呀??
2012-08-29 11:31
Bailey_27
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2012-5-11
收藏
得分:0 
请大家帮帮忙啊
2012-08-29 16:41
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
收藏
得分:15 
给你改了改,你在fun函数中,不是用for循环判断每一个age吗
还分了if>100的情况,所以else语句中必须包含了switch啊,因为那是<100情况的。
还有if中直接b[10]++,你求的是人数
程序代码:
#include <stdio.h>
#define  N  50
#define  M  11

void fun(int a[], int b[])
{
    int i,j,c;
    for(i=0;i<M;i++)
        b[i]=0;
    for(j=0;j<N;j++)
    {
        if(a[j]>=100)
            b[10]++;                        //here
        else
        {                                   //here
            c=a[j]/10;
            switch(c)
            {
                case 0: b[0]++;break;
                case 1: b[1]++;break;
                case 2: b[2]++;break;
                case 3: b[3]++;break;
                case 4: b[4]++;break;
                case 5: b[5]++;break;
                case 6: b[6]++;break;
                case 7: b[7]++;break;
                case 8: b[8]++;break;
                case 9: b[9]++;break;
            }
        }                                    //and here
    }


}

double rnd()
{
    static t=29, c=217, m=1024, r=0;
    r=(r*t+c)%m;
    return((double)r/m);
}

main()
{
    int  age[N], i, d[M];
    FILE *out ;
    for(i=0;  i<N; i++)
        age[i]=(int)(115*rnd());
    printf("The original data :\n");
    for(i=0; i<N; i++)
        printf((i+1)%10==0?"%4d\n":"%4d",age[i]);
    printf("\n\n");
    fun( age,  d);
    out=fopen ("F:\\out.txt","w");
    for(i=0;i<10;i++)
    {
        printf("%4d---%4d  :  %4d\n", i*10, i*10+9, d[i]);
        fprintf(out, "%4d---%4d  :  %4d\n", i*10, i*10+9, d[i]);
    }
    printf("  Over  100  :  %4d\n", d[10]);
    fprintf(out, "  Over  100  :  %4d\n", d[10]);
    fclose (out );
}


2012-08-29 16:43
包头师范学校
Rank: 2
等 级:论坛游民
帖 子:26
专家分:51
注 册:2012-8-24
收藏
得分:0 
六楼完全正确,学习了。
2012-08-29 16:46
Dua瀚狼
Rank: 2
来 自:湖南长沙
等 级:论坛游民
帖 子:59
专家分:78
注 册:2012-3-11
收藏
得分:5 
b[10] = a[j]; 改成 b[10]++;
else{      //加括号
c=a[j]/10; //去掉括号
switch(c)
{case 0: b[0]++;break;
case 1: b[1]++;break;
case 2: b[2]++;break;
case 3: b[3]++;break;
case 4: b[4]++;break;
case 5: b[5]++;break;
case 6: b[6]++;break;
case 7: b[7]++;break;
case 8: b[8]++;break;
case 9: b[9]++;break;}
}
}//加


我怀旧,因为我看不到未来。
2012-08-29 17:31
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
void fun(int *a, int *b)
{int i,j,c;
for(i=0;i<M;i++)
b[i]=0;
for(j=0;j<N;j++)
{if(a[j]>=100)
b[10]=a[j];           这个地方本来是放100以上人数的个数 怎么放了 别人的岁数
else
c=a[j]/10;}
switch(c)
{case 0: b[0]++;break;
case 1: b[1]++;break;
case 2: b[2]++;break;
case 3: b[3]++;break;
case 4: b[4]++;break;
case 5: b[5]++;break;
case 6: b[6]++;break;
case 7: b[7]++;break;
case 8: b[8]++;break;
case 9: b[9]++;break;}


}


我要成为嘿嘿的黑客,替天行道
2012-08-29 20:01
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
是只有1个错赛

我要成为嘿嘿的黑客,替天行道
2012-08-29 20:01
快速回复:关于计算机二级的问题,请帮忙看一下程序哪里出错了
数据加载中...
 
   



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

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