| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1358 人关注过本帖
标题:望您多多包涵,请您为鄙人指点。
只看楼主 加入收藏
wangnengchao
Rank: 2
等 级:论坛游民
帖 子:90
专家分:55
注 册:2011-5-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:21 
望您多多包涵,请您为鄙人指点。
昨晚复习C语言看到这样的一道题,可是鄙人写的不通用且不大符合题意。故请多多指导!由衷感谢!
/* 设计一个程序来处理一批0~100之间的实验数据。处理内容如下。
(1)对所有的实验数据进行逐一的分类,分类标准如下:
A类:0~29
B类:30~49
C类:50~59
D类:60~79
E类:80~100
(2)每输入一个实验数据后,要显示该数据所属的类别。
(3)最后输出实验数据的平均值及处理实验数据的数量 */
#include <stdio.h>
#define N 5
int main(void)
{
    int data[N],i,count=0;
    float sum=0;
    printf("Please input some datas(0~100): ");
    for(i=0;i<=N-1;i++)
    {
        scanf("%d",&data[i]);
        
        
            if(data[i]>0&&data[i]<=29)
            {
                printf("%d is belongs to A类\n",data[i]);
                                 
            }
            if(data[i]>29&&data[i]<=49)
            {
                printf("%d is belongs to B类\n",data[i]);
                                 
            }
            if(data[i]>49&&data[i]<=59)
            {
                printf("%d is belongs to C类\n",data[i]);
                                 
            }
            if(data[i]>59&&data[i]<=79)
            {
                printf("%d is belongs to D类\n",data[i]);
                                
            }
            if(data[i]>79&&data[i]<=100)
            {
                printf("%d is belongs to E类\n",data[i]);
                                 
            }
            
    sum=sum+data[i];
    count++;
    }
    printf("Average=%.2f\n The number of data handled is %d",sum/count,count);
    return 0;
   
}
搜索更多相关主题的帖子: 好心情 朋友 通用 C语言 
2011-06-24 16:53
oszc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:111
专家分:154
注 册:2011-4-15
收藏
得分:5 
每条if后面在家几个变量统计需要的数据咯
程序代码:
int num1=0
int sum1=0
  if(data[i]>0&&data[i]<=29)
            {
                printf("%d is belongs to A类\n",data[i]);
                num1++;   //(0,29]的个数,数据量
                sum1+=data[i];   //(0,29]的总和                   
            }
//平均就是sum1/num1
2011-06-24 17:05
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:5 
程序代码:
#include <stdio.h>
#define N 5

int main (void) {

        float sum=0,num;
        int i,count=0;

        printf("Enter date[0~100]:\n");

        for(i=0;i<N;i++) {
                scanf("%f",&num);
                if(num>0&&num<30) {
                        count++;
                        sum+=num;
                        printf("%f is belongs to A\n",num);
                }
                else if(num>29&&num<50) {
                        count++;
                        sum+=num;
                        printf("%f is belongs to B\n",num);
                }
                else if(num>49&&num<60) {
                        count++;
                        sum+=num;
                        printf("%f is belongs to C\n",num);
                }
                else if(num>59&&num<80) {
                        count++;
                        sum+=num;
                        printf("%f is belongs to D\n",num);
                }
                else if(num>79&&num<101) {
                        count++;
                        sum+=num;
                        printf("%f is belongs to E\n",num);
                }
                else {
                        printf ("Out of rang\n");
                }
        }

        printf("The average is %.2f,Numbers of is %i\n",sum/count,count);

        return 0;

}

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-24 17:11
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
我写的好像不符题意。。。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-24 17:13
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:5 
输入非数字字符结束数据输入

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

int main() {
    int d, cnt = 0;
    double avg = 0;
    printf("Input experiment data. Any non-numerical character terminates inputting.\nDecimal fraction will be truncated.\n");
    while(scanf("%d", &d)) {
        if (d < 0 || d > 100) {
            while (getchar() != '\n');
            printf("The data should be between  0 and 100\n");
            continue;
        }
        cnt++;
        avg = d + avg;
        printf("Classification: %c\n",
            d < 30 ? 'A' : d < 50 ? 'B' : d < 60 ? 'C' : d < 80 ? 'D' : 'E');
    }
    avg /= cnt ? : 1;
    printf("Totaly %d pieces of data proccessed.\n", cnt);
    printf("The average of all data is %lf", avg);
    return 0;
}


[ 本帖最后由 voidx 于 2011-6-24 17:26 编辑 ]
2011-06-24 17:23
wangnengchao
Rank: 2
等 级:论坛游民
帖 子:90
专家分:55
注 册:2011-5-2
收藏
得分:0 
回复 5楼 voidx
您好,请问  avg /= cnt ? : 1;是什么意思?运行出错,谢谢。
2011-06-24 17:55
wangnengchao
Rank: 2
等 级:论坛游民
帖 子:90
专家分:55
注 册:2011-5-2
收藏
得分:0 
回复 5楼 voidx
在您的帮助下我解决了,可是还是不明白您  avg /= cnt ? : 1;这有何高超之处,望您指点?谢谢。
2011-06-24 18:14
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
回复 7楼 wangnengchao
如果你在程序运行后直接输入一个字母,那这时候 cnt == 0。如果不检查就会除以零~
2011-06-24 18:24
wangnengchao
Rank: 2
等 级:论坛游民
帖 子:90
专家分:55
注 册:2011-5-2
收藏
得分:0 
回复 8楼 voidx
哦,明白 是 avg /= cnt ? 0 : 1;就对了。。。。谢谢
2011-06-24 18:30
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
。。。。
你这理解错了
这么写的意思就是如果 cnt != 0 就让 avg 除以 0。这不是蛋疼么?
完整的形式这么写:avg /= cnt ? cnt : 1。
当冒号左边的表达式被省略时,如果判断条件为真,则返回条件表达式的值。
所以 avg /= cnt ? : 1 和 avg /= cnt ? cnt : 1 是完全一样的
2011-06-24 18:35
快速回复:望您多多包涵,请您为鄙人指点。
数据加载中...
 
   



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

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