精华内容
下载资源
问答
  • “要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万中无一”——包租婆这道理放在C语言学习上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要...

    “要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万中无一”

    ——包租婆这道理放在C语言学习上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。那么如何学习呢?当然是每天都练习一道C语言题目!!

    92f461d5c5ac5fb7e4f4ee41a4d75096.png

    作者

    闫小林

    白天搬砖,晚上做梦。我有故事,你有酒么?

    例12:在全系1000个学生中,征集慈善捐款,当总数达到10万元时就结束,统计此时的捐款人数,以及平均每人捐款的数目。解题思路:显然应该用循环来处理。实际实际循环的次数事先不能确定,可以设置为最大值(1000)在循环体中累计捐款总数,并用if语句检查是否达到10万元,如果达到就不再继续执行循环,终止累加,并计算人均捐款数。源代码演示:
    #include//头文件 int main()//主函数 {float amount,aver,total;//定义浮点型变量 float sum=100000; //定义浮点型变量且赋初值 int i;//定义整型变量 for(i=1,total=0;i<1001;i++)//循环条件 
      {printf("请依次输入捐款钱数:");//提示语句 scanf("%f",&amount); //键盘输入
        total=total+amount;if(total>sum)break;//跳出循环
      }
      aver=total/i;printf("第%d个人捐款之后达到10万+\n平均每人捐款:%5.2f\n",i,aver);return 0;//函数返回值为0
    }
    编译运行结果如下:
    请依次输入捐款钱数:1000
    请依次输入捐款钱数:45678
    请依次输入捐款钱数:34521
    请依次输入捐款钱数:7000
    请依次输入捐款钱数:456.3
    请依次输入捐款钱数:15689
    第6个人捐款之后达到10万+
    平均每人捐款:17390.72--------------------------------Process exited after 23.79 seconds with return value 0
    请按任意键继续. . .
    break的作用是使流程跳到循环体之外,接着执行循环体下面的语句。注意:在C语言中break语句只能用于循环语句和switch语句之中,而不能单独使用。C语言学习路线    C语言开发工具C++学习路线    C#学习路线长按关注

    6ae22a1181256896612f2a89839c7528.png

    学习C/C++不迷路 
    展开全文
  • 例12:在全系1000个学生中,征集慈善捐款,当总数达到10万元时就结束,统计此时的捐款人数,以及平均每人捐款的数目。解题思路:显然应该用循环来处理。实际实际循环的次数事先能确定,可以设置为最大值(1000)在...

    68efb8a54edc602727f5a9979526e03f.png

    例12:在全系1000个学生中,征集慈善捐款,当总数达到10万元时就结束,统计此时的捐款人数,以及平均每人捐款的数目。

    解题思路:显然应该用循环来处理。实际实际循环的次数事先不能确定,可以设置为最大值(1000)在循环体中累计捐款总数,并用if语句检查是否达到10万元,如果达到就不再继续执行循环,终止累加,并计算人均捐款数。

    源代码演示:

    #include<stdio.h>//头文件 
    int main()//主函数 
    {
      float amount,aver,total;//定义浮点型变量 
      float sum=100000; //定义浮点型变量且赋初值 
      int i;//定义整型变量 
      for(i=1,total=0;i<1001;i++)//循环条件 
      {
        printf("请依次输入捐款钱数:");//提示语句 
        scanf("%f",&amount); //键盘输入 
        total=total+amount;
        if(total>sum)
        break;//跳出循环 
      }
      aver=total/i;
      printf("第%d个人捐款之后达到10万+n平均每人捐款:%5.2fn",i,aver);
      return 0;//函数返回值为0 
    }

    编译运行结果如下:

    请依次输入捐款钱数:1000
    请依次输入捐款钱数:45678
    请依次输入捐款钱数:34521
    请依次输入捐款钱数:7000
    请依次输入捐款钱数:456.3
    请依次输入捐款钱数:15689
    第6个人捐款之后达到10万+
    平均每人捐款:17390.72
    
    --------------------------------
    Process exited after 23.79 seconds with return value 0
    请按任意键继续. . .

    break的作用是使流程跳到循环体之外,接着执行循环体下面的语句。

    注意:在C语言中break语句只能用于循环语句和switch语句之中,而不能单独使用。

    C语言 | 统计捐款人数及捐款mp.weixin.qq.com
    94706421f24fc6438d5b91523ce71361.png
    展开全文
  • 上一篇文章中的分组,都是通过新建列的方式实现的,直观上比较容易理解。不过这样都修改了原始...依然按照上篇文章的数据,统计优秀、良好、及格和不及格的学生分别有多少?成绩表中的数据结构不做任何更改,我们先...

    74f32566be1dd33a49eba8513942f9d7.png

    上一篇文章中的分组,都是通过新建列的方式实现的,直观上比较容易理解。不过这样都修改了原始数据的结构,如果我们不在源表上进行修改,直接通过度量值的方式来进行分组,是否可以实现呢?

    答案当然是肯定的。

    采用度量值的方式首先定义好分组的类别和标准,然后把需要分组的数据分别统计到指定的分组中。

    依然按照上篇文章的数据,统计优秀、良好、及格和不及格的学生分别有多少?

    成绩表中的数据结构不做任何更改,我们先创建一个分组表,

    498a5d132828c19adcedf2272fc611db.png

    如果成绩落在最小值和最大值之间,就归属于该分组。

    编写度量值如下:

    成绩分组统计 =

    CALCULATE(

        DISTINCTCOUNT('成绩'[姓名]),

        FILTER('成绩',

           AND(

             '成绩'[数学成绩]<=SELECTEDVALUE('分组表'[最大值]),

             '成绩'[数学成绩]>=SELECTEDVALUE('分组表'[最小值])

           )

        ) 

    )

    使用度量值和新建列的不同之处就是,新建列的行上下文是确定的,可以直接使用行字段,而度量值的外部上下文是动态的,所以无法直接和某个具体指标匹配,这时就要用到SELECTEDVALUE函数,它根据外部上下文的环境来进行动态匹配运算。

    编写度量值的表达式时,不知道如何查找外部上下文时,一定不要忘了SELECTEDVALUE函数。

    利用矩阵来看看度量值的结果,

    1cae0e0cd70f675358544f414c5187f3.png

    这样每个类别的人数就统计出来了,不过有个问题是,总计行没有计算出来。原因是由于SELECTEDVALUE函数函数只查找了分组表中的类别,而该表并没有总计这个值,所以无法计算显示为空。

    为了使总计正常显示,可以再加个判断函数ISFILTERED,如果分组列中有该分类,就正常执行上面的度量值计算,否则返回成绩表中人数合计。

    更改后的度量值如下:

    成绩分组统计 =

    IF(ISFILTERED('分组表'[分组]),

      CALCULATE(

        DISTINCTCOUNT('成绩'[姓名]),

        FILTER('成绩',

          AND(

            '成绩'[数学成绩]<=SELECTEDVALUE('分组表'[最大值]),

            '成绩'[数学成绩]>=SELECTEDVALUE('分组表'[最小值])

          )

        )

      ),

      DISTINCTCOUNT('成绩'[姓名])

    )

    然后总计行会正常显示。并且源数据发生变化,度量值返回的结果也会同步更新。

    以上就是使用度量值进行分组的做法,DAX看起来很长,其实逻辑上比较简单,理解它对进一步掌握DAX有很大帮助。

    利用度量值,进行数据分析时可以更灵活的使用,下篇文章介绍度量值分组的应用场景。

    加入知识星球,随时问题答疑,更多资源分享

    dfe38f4454f265b9bbeee6b0ee792e85.png

    展开全文
  • 频率函数的典型应用是计算不同分数和不同年龄组的人数。应用程序相对简单,需要与其他功能结合。但是,要实现水平统计或连续发生统计,需要结合转置、最大值和行函数,如转置+频率+行来实现水平统计。一、 Excel...

    Frequency函数用于计算值范围内值出现的频率,并在Excel中以垂直数组的形式返回统计结果。它不计算某个值在指定间隔内出现的频率,而是计算指定间隔内有多少个数字。频率函数的典型应用是计算不同分数和不同年龄组的人数。应用程序相对简单,不需要与其他功能结合。但是,要实现水平统计或连续发生统计,需要结合转置、最大值和行函数,如转置+频率+行来实现水平统计。

    一、 Excel频率函数的语法

    1、表达式:频率(Data_Array,Bins_Array)

    2、说明:

    A、 如果数据数组中没有值,则Frequency函数只返回一个零数组。此外,Frequency函数忽略空白和文本。

    B、 如果Bins_数组中没有值,Frequency函数将返回数据_数组中的元素数。

    C、 Frequency函数返回比Bins_数组多一个元素的数组,额外的元素是大于最大间隔值的计数,如下例所示。

    D、 如果希望Frequency函数返回数组,则必须将其作为数组输入,即输入公式后,按Ctrl+Shift+enter键。例如,要将不同间隔的统计信息填充到相邻单元格中,选择相邻单元格后,需要按Ctrl+Shift+Enter组合键,有关详细信息,请参见下面的示例。

    二、 Excel频率函数实例

    (一) 如何在excel中使用Frequency函数:Frequency函数忽略空白和文本,返回的数组比Bins数组多一个元素

    1、双击单元格C2,将公式=INDEX(频率(A2:A6,B2:B3)复制到C2,按Ctrl+Shift+Enter(Excel 2016及以后版本也可以直接按Enter),返回2;按住Alt键,依次按M和V键,打开“求值公式”窗口,按Enter键求值,频率函数返回数组{1;2;0};操作步骤如图1所示:

    bc98d97648f9e67ad3b4708c8036f59b.gif

    图1

    2、公式=指数(频率(A2:A6,B2:B3),2)说明:

    A、 A2:A6是频率函数的一个单元格范围的引用,其中有空单元格和文本,但忽略它们;B2:B3是一个间隔数组,可以分为三个间隔,第一个间隔小于或等于5,第二个间隔大于5且小于或等于10,第三个间隔大于10。

    B、 执行时,首先,在A2:A6中计算第一个间隔(即小于或等于5)内的值出现的频率,该间隔只有一个5,其出现频率为1,因此返回1。

    第二,在A2:A6中计算第二个间隔内(即大于5小于等于10)值出现的频率,间隔有8和10个数字,出现的频率为1,所以返回2(返回的结果是间隔内每个值的频率之和)。

    第三,值在第三个间隔(即大于10)内出现的频率在A2:A6中计算,因为没有大于10的值,所以返回0。

    C、 然后FREQUENCY(A2:A6,B2:B3)最后返回{1;2;0},Bins懔Array B2:B3只有两个元素,返回Array{1;2;0}有三个元素,最后一个元素0是计算第三个间隔(即大于10)中的值的频率。

    D、 公式变为=INDEX({1;2;0},2),最后返回数组中第一列和第二行相交处单元格中的值,即返回2。此处使用索引函数的原因是,如果未选择相邻单元格,则频率函数无法返回数组。

    (二) excel中文本的计数频率

    1、双击单元格A8,将公式=FREQUENCY(A2:A7,A2:A7)复制到A8,按回车键,返回0,操作步骤如图2所示:

    07e64e777e037c5aa93fa81ceb119344.gif

    图2

    2、公式=频率(A2:A7,A2:A7)说明:

    公式的两个参数是A2:A7。因为区域都是文本,而Frequency函数忽略文本,所以返回0。

    (三) 存在重复的数字,并将不同间隔的统计结果填充到相邻单元格中

    1、选择C2:C3,输入等号=,然后按Ctrl+V键将公式频率(A2:A7,B2:B3)粘贴到=,按Ctrl+Shift+enter键,所选单元格由相应的统计结果填充;操作过程步骤如图3所示:

    368eedfcead88cdeb11eaa2879b80619.gif

    图3

    2、公式说明:

    A、 C2中的结果3是A2:A7中小于或等于5的值的数目。间隔中有两个5和一个3,加起来正好是3个值。可以看出,频率函数计算的是区间值的个数,而不是个数的个数。

    B、 C3中的结果8是A2:A7中大于5且小于或等于10的值的数目。间隔有6、8和10,这也是三个值。

    C、 由于C2:C3同时被选中,公式同时被填充,所以它们已经形成一个组,不能单独修改或删除。只有在选中时才能修改或删除它们。

    三、 Excel频率函数(Excel频率计数)的应用实例

    (一) 按不同的分数计算人数

    1、如果你想计算不及格或分数在60-69,70-79,80-89,90-99和100分的学生人数。选择D2:D7,输入等号=,将公式频率(B2:B18,C2:C6-1)复制到=,按Ctrl+Shift+enter可统计不同分数段的学生数,操作步骤如图4所示:

    6ce780bf0cbad03012a0c910668df04e.gif

    图4

    2、公式=频率(B2:B18,C2:C6-1)说明:

    A、 因为C2:C6中的值是60,70,你想计算60-69中失败或得分的人数,所以使用C2:C6-1,实际上C2:C6中的每个值减去1。如果不减1,可以在C2:C6中直接填写59、69、79、89、99。

    B、 D2中的统计结果0为不及格人数,D3中的1为60-69分段人数,D4中的4为70-79分段人数,D5中的6为80-89分段人数,D6中的6为90-99分段人数,D7中的0为100分人数。

    小贴士:如果你没有具体计算100分的人数,而是给90分以上的分数分配100分,你可以将C6中的100改为101。此外,计算不同年龄段的人数也是同样的方法。

    (二) 转置+频率+行组合实现水平统计

    1、如果要计算从0到7的每个数字的频率,并水平显示统计结果。选择A10:H10,输入等号=,将公式TRANSPOSE(FREQUENCY(A1:F7,ROW(1:8)-1))复制到=,按Ctrl+Shift+enter键统计A1:F7中1到7个数字的出现频率,操作步骤如图5所示:

    8c68f1f0d476c3b30f73079e07fe734d.gif

    图5

    2、公式=转置(频率(A1:F7,行(1:8)-1))说明:

    A、 行(1:8)-1用于返回0到7之间的数字作为数组,行(1:8)返回1到8之间的数字作为数组,然后从每个数字中减去1,并返回0到7之间的数字。

    B、 Transpose函数将Frequency函数返回的结果从一列转换到另一行。如果不使用转置功能,尽管同时选择了A10:H10,但只能计算0的频率。

    (三) Max+Frequency+Row组合计算最连续的

    1、如果你想计算最持续增长的月份数。双击单元格C2,将公式=MAX(FREQUENCY(ROW(1:12),(B2:B13<>1)*ROW(1:12))-1)复制到C2,按Enter键,返回4;处理步骤如图6所示:

    14bba4c34b37751a12af82ad212a5405.gif

    图6

    2、公式=MAX(频率(行(1:12),(B2:B13<>1)*行(1:12))-1说明:

    A、 ROW(1:12)以数组形式返回从1到12的数字,即{1;2;3;4;5;6;7;8;9;10;11;12}。

    B、 B2:B13以数组形式返回B2:B13中的所有数字,即{1;1;0;1;1;1;0;0;1;1;1;1};然后B2:B13<>1变成{1;1;0;1;1;1;0;0;1;1;1}<1,然后从数组中取出每个元素并与1进行比较,如果不等于1,则返回TRUE,否则返回FALSE,则最后返回{FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;FALSE;FALSE;FALSE;假}。

    C、 然后(B2:B13<>1)*行(1:12)变成{FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE}*{1;2;3;4;5;6;7;8;9;10;11;12},然后将两个数组中的相应元素相乘(相乘时,TRUE变成1,FALSE变成0),最后返回{0;0;3;0;0;8;9;0;0;0;0;0;0},从而得到频率间隔,每个间隔的分裂点正好是B2:B13中的0。

    D、 然后公式变为=MAX(频率({1;2;3;4;5;6;7;8;9;10;11;12},{0;0;3;0;0;0;8;9;0;0;0;0;0}))-1,进一步计算,在第一个数组中计算大于0且小于等于3或大于3且小于等于8、大于8且小于等于9或大于9的位数,结果为{0;0;3;0;0;0;0;5;1;0;0;0;0;3}。

    E、然后公式变为max({ 0;0;3;0;0;0;0;5;1;0;0;0;0 })--,然后马克斯被用于使数组中的元素最大化,结果是α,5-1等于γ。之所以将其递减1,是因为频率函数对每个间隔中的位数进行计数,计数结果包含B2:B13中对应于0的数字。例如,数字大于或等于0且小于3的间隔的计数结果包含3,并且3对应于B4中的0。

    此外,Sum+If+频率组合也可以在不跳过数字的情况下进行排名。有关详细信息,请参阅文章“如何使用Excel排名函数(11个示例,带有rank.EQ和rank.AVG,不跳过数字)”。

    展开全文
  • 数据统计,我们并陌生,但是在实际的工作或应用中,数据统计都是附加条件的,而且大多情况下是“多条件”的,此时,我们必须掌握“Ifs”系列函数。一、多条件判断:Ifs函数。功能:判断指定的值是否符合指定的一个...
  • 20年有点缩招,具体人数等三四月份出来拟录取名单后再来更新一下。总体来说北理应统性价比还是比较高的,结合地理位置,就业质量,还有学费情况等来说。学制是两年,学费15000/年(一线985高校里面所很低的了,良心...
  • c语言 统计学生平均成绩与及格人数

    千次阅读 2020-03-15 10:39:43
    **本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩低于60分)的人数。题目保证输入与输出均在整型范围内。...count = 及格人数 其中平均值精确到小数点后一位。 输入样例: 5 77 54 92 73 60 ...
  • #include int main() { double a[10],sum=0,var; int i,k=0; printf(“请输入10名学生的成绩:”); for(i=0;i;i++) { scanf("%lf",&a... printf(“不及格人数:%d\n”,k); printf(“平均分:%lf\n”,var); return 0; }
  • 在该代码中,以输入成绩为负数时停止输入 ... printf("请输入成绩(输入负数时停止录入成绩,且输入成绩的人数不超过40人):\n"); do{ i++; scanf("%d",&score[i]); }while(score[i]>=0); return i; } int
  • /例4-2输入一批学生的成绩,以负数作为结束标志,计算平均成绩,并统计不及格人数/#include int main(void) { int count,num; double grade,total; num=0; total=0; count=0; printf("Enter grades:"); scanf...
  • 本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩低于60...count = 及格人数 其中平均值精确到小数点后一位。 输入样例: 5 77 54 92 73 60 输出样例: average = 71.2 count = 4 #include<stdio.h>
  • 本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩低于60...count = 及格人数 其中平均值精确到小数点后一位。 输入样例: 5 77 54 92 73 60 输出样例: average = 71.2 count = 4 #include<stdio.h>
  • #include<stdio.h> #define MAX_LEN 100 int main() { int i,step,Stu_Sum=0,Fail_Chinese_sum=0,Fail_Math_sum=0,Fail_English_sum=0; float Score_Chinese[MAX_LEN],Score_Math[MAX_LEN],Score_English[MAX_...
  • 本题要求编写程序,计算学生们的平均成绩,并统计不及格(成绩低于60分)的人数。题目保证输入与输出均在双精度范围内。 输入格式: 输入在第一行中给出非负整数n,即学生人数。第二行给出n个非负实数,即这n位学生...
  • 练习3-3 统计学生平均成绩与及格人数 本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩低于60分)的人数。题目保证输入与输出均在整型范围内。 输入格式: 输入在第一行中给出非负整数N,即学生人数。第...
  • 练习3-3 统计学生平均成绩与及格人数 (15分) 本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩低于60分)的人数。题目保证输入与输出均在整型范围内。 输入格式: 输入在第一行中给出非负整数N,即学生...
  • 题目 本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩低于60分)的人数。题目保证输入与输出均在整型范围内。...count = 及格人数 其中平均值精确到小数点后一位。 输入样例: 5 77 54 92 73 6...
  • 练习3-3 统计学生平均成绩与及格人数 (15 分) 本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩低于60分)的人数。题目保证输入与输出均在整型范围内。 输入格式: 输入在第一行中给出非负整数N,即学生...
  • 练习3-3 统计学生平均成绩与及格人数 (15 分) 本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩低于60分)的人数。题目保证输入与输出均在整型范围内。 输入格式: 输入在第一行中给出非负整数N...
  • 练习3-3 统计学生平均成绩与及格人数 浙大版《C语言程序设计(第3版)》 题目 本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩低于60分)的人数。题目保证输入与输出均在整型范围内。 输入格式: 输入在...
  • 大学生计算机C语言编程练习题
  • 练习3-3 统计学生平均成绩与及格人数 (15分) 本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩低于60分)的人数。题目保证输入与输出均在整型范围内。 输入格式: 输入在第一行中给出非负整数N,即学生...
  • c语言 按等级统计学生成绩

    千次阅读 2020-04-03 22:08:34
    本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。 函数接口定义: int set_grade( struct student *p, int n ); 其中p是指向学生信息的结构体数组的指针,该结构体的定义为: struct student...
  • 本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。 函数接口定义: int set_grade( struct student *p, int n ); 其中p是指向学生信息的结构体数组的指针,该结构体的定义为: struct student{...
  • 本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。 函数接口定义: int set_grade( struct student *p, int n ); 其中p是指向学生信息的结构体数组的指针,该结构体的定义为: struct student...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 131
精华内容 52
关键字:

c语言统计不及格人数

c语言 订阅