精华内容
下载资源
问答
  • (选做)输出学生成绩(动态分配):输入学生人数后输入每个学生的成绩,最后输出 学生的平均成绩、最高成绩和最低成绩。要求使用动态内存分配来实现。 分析 用指针的不断动态分配开辟空间存放数据代替定义数组存放...

    习题8-10 指针动态分配输出学生成绩

    题目

    1. (选做)输出学生成绩(动态分配):输入学生人数后输入每个学生的成绩,最后输出
      学生的平均成绩、最高成绩和最低成绩。要求使用动态内存分配来实现。

    分析

    用指针的不断动态分配开辟空间存放数据代替定义数组存放数据

    程序代码

    # include <stdio.h>
    # include <stdlib.h>
    int main ( )
    {
    int n, i;
    float *p, sum, max, min, avg;
    printf("input students’ number n: ");
    scanf("%d", &n);//先输入学生人数n
    
    //开辟n个空间
    if ((p=(float *)calloc(n, sizeof(float))) == NULL) {/*为数组 p 动态分配 n 个浮点数 float 类型大小的空间 */
    printf("Not able to allocate memory. \n");
    exit(1);
    }
        
    sum=0.0;
    max=-1; /*初始化 */
    min=1000;
    printf("input %d students’ scores: ", n); /* ᨀ示输入 n 个整数 */
    for (i = 0; i < n; i++){
    scanf("%f", p+i);//指针不断向右移动输入新数据
    sum=sum+*(p+i);
    if (min>*(p+i))
    min=*(p+i);
    if (max<*(p+i))
    max=*(p+i);
    }
    avg=sum/n;
    printf("The avg is %f, max is %f, min is %f\n",avg,max,min);
    free(p); /* 释放动态分配的空间 */
    return 0;
    }
    
    
    展开全文
  • 输出学生成绩(动态分配):输入学生人数后输入每个学生的成绩,最好输出学生的平均成绩,最高成绩和最低成绩。要求使用动态内存分配来实现。试编写相应程序 #include //输出学生成绩实验代码 #include int main()...

    输出学生成绩(动态分配):输入学生人数后输入每个学生的成绩,最好输出学生的平均成绩,最高成绩和最低成绩。要求使用动态内存分配来实现。试编写相应程序


    #include<stdio.h>                  //输出学生成绩实验代码
    #include<stdlib.h>
    int main()
    {
    	int n,i;
    	float *a,max,min,sum;
    	while(1)
    	{
    		printf("请输入学生人数:(输入0退出)\n");
    		scanf("%d",&n);
    		max=0,min=1000,sum=0;    //数据每次循环重置,以防上个循环结果影响下个循环的输出
    		if(n==0)
    		{
    			printf("程序运行结束\n");
    			break;
    		}
    		else if(n<0)
    		{
    			printf("学生人数输入错误!请重新输入\n");
    			continue;
    		}
    		else
    		{
    			a=(float*)malloc(n*sizeof(float));
    			printf("请输入%d个学生的成绩:\n",n);
    			for(i=0;i<n;i++)
    			{
    				scanf("%f",a+i);
    				if(a[i]<0)          //由于题目未对成绩上限作要求,故只考虑了下限
    				{
    					printf("学生成绩输入错误!请重新输入:\n");
    					i--;
    					continue;
    				}
    				else
    				{
    					if(a[i]<min)
    					    min=a[i];
    				    if(a[i]>max)
    					    max=a[i];
    				}
    				sum+=a[i];
    			}
    			printf("此%d位学生的平均成绩为%.2f\n",n,sum/n);
    			printf("此%d位学生的最高成绩为%.1f\n",n,max);
    			printf("此%d位学生的最低成绩为%.1f\n\n",n,min);
    		}
    	}
    	return 0;
    }
    


    要注意题目要求,变量范围控制好以保证代码健壮
    这里没有free,所以动态分配的这块内存好像在关了debug程序后会一直被占用....
    不过回不回收好像和操作系统有关系?
    C不像java会捡垃圾...唉

    结果:




    展开全文
  • 8-10 输出学生成绩(动态分配

    千次阅读 2018-09-24 11:49:07
    // 输出学生成绩(动态分配) #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main() { ...请输入学生人数:"); scanf("%d",&amp;n); if((p=(d...
    // 输出学生成绩(动态分配) 
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    	int n,i;
    	double sum = 0;
    	double aver;		//平均成绩 
    	double *p;
    	
    	printf("请输入学生人数:");
    	scanf("%d",&n);
    	
    	if((p=(double *)calloc(n, sizeof(double))) == NULL)
    	{
    		printf("分配内存失败\n");
    		exit(1);
    	}
    	printf("请输入%d个学生的成绩:\n",n);
    	for(i=0;i<n;i++)
    	{
    		scanf("%lf",p+i);
    	}
    	
    	double min = *(p+0);		//最低成绩 
    	double max = *(p+0);		//最高成绩 	
    	
    	for(i=0;i<n;i++)
    	{
    		sum = sum + *(p+i);
    		if(*(p+i)<min)
    		{
    			min = *(p+i);
    		}
    		if(*(p+i)>max)
    		{
    			max = *(p+i);
    		}		
    	}
    	aver = sum/n;
    	
    	printf("平均成绩是%f分\n",aver);
    	printf("最高成绩是%f分\n",max);
    	printf("最低成绩是%f分\n",min);
    	
    	free(p);
    	
    	return 0;
    }
    
    

     

    展开全文
  • 建议使用动态内存分配来实现。 输入格式: 输入第一行首先给出一个正整数N,表示学生的个数。接下来一行给出N个学生的成绩,数字间以空格分隔。 输出格式: 按照以下格式输出: average = 平均成绩 max = 最高成绩 ...

    本题要求编写程序,根据输入学生的成绩,统计并输出学生的平均成绩、最高成绩和最低成绩。建议使用动态内存分配来实现。

    输入格式:
    输入第一行首先给出一个正整数N,表示学生的个数。接下来一行给出N个学生的成绩,数字间以空格分隔。

    输出格式:
    按照以下格式输出:

    average = 平均成绩
    max = 最高成绩
    min = 最低成绩
    

    结果均保留两位小数。

    输入样例:

    3
    85 90 95      
    

    输出样例:

    average = 90.00
    max = 95.00
    min = 85.00
    

    我的答案

    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
      int n,i;
      float *p,sum=0,max=0,min=100,avg=0;//注意最小值初始化为100
      scanf("%d",&n);
      p=(float*)malloc(n*sizeof(float));/*动态内存分配,分配存放n个整数的连续内存块, sizeof函数用于获得float类型变量 占用内存大小(一个float变量占用多少字节)*/
      if(p==0)/*内存范培失败,返回值为0即空指针*/
      {
        return 0;
      }
      for(i=0;i<n;i++)
      {
        scanf("%f",p+i);
        sum+=*(p+i);
        if(min>*(p+i))
          min=*(p+i);
        if(max<*(p+i))
          max=*(p+i);
      }
      avg=sum/n;
      printf("average = %.2f\nmax = %.2f\nmin = %.2f",avg,max,min);
      free(p); /*用完要释放占用的内存*/
      return 0; 
    }
    

    关于malloc

    void *malloc(int num); 
      在堆区分配一块num个字节的内存块,用来存放数据。
      这块内存空间在函数执行完成后不会被初始化,它们的值是未知的。
    
     /*分配课存放n个整数的连续内存块, sizeof函数用于获得int类型变量 占用内存大小(一个int变量占用多少字节)*/ 
      int *p = (int *)malloc(n*sizeof(int));
    
    展开全文
  • 建议使用动态内存分配来实现。 输入格式: 输入第一行首先给出一个正整数N,表示学生的个数。接下来一行给出N个学生的成绩,数字间以空格分隔。 输出格式: 按照以下格式输出: average = 平均成绩 max = 最高成绩 ...
  • #include <iostream> using namespace std; int main() {  int i, n;  float mean = 0;  ... "输入学生人数:" ;   cin >> n;  } while (n <= 0)...
  • 动态分配内存

    2018-08-28 10:44:30
    1、 * 使用new分配内存 指针真正的用武之地:在运行阶段分配未命名的内存以存储...* 使用new创建动态分配的数组: int * intArray = new int[10]; * 使用delete释放内存 与new配对使用:delete [] intArray;...
  • 动态分配,结构,联合

    千次阅读 2016-05-15 15:01:50
    (一)动态内存分配: ...每个班的人数有可能并不相等,按多分配 ,那样多浪费;按少分配,不够。所以 动态内存分配就有自己的作用了~~ 2.动态内存分配函数: (1)void *malloc(unsigned int size);-------size
  • 2017-04-30输入学生成绩,输出高于平均成绩的学生序号和成绩。 其中学生人数不定,可能10个,可能1000。...考虑学生人数不定,用动态数组是个更适合的方案//项目1-学生人数没个准 #include #include <malloc.h> //
  • #include #include int main() { int number; //学生人数 int *score; //动态数组的首地址 int sum=0,ave;... //输入学生人数,为动态数组score分配合适大小的空间 printf("请输入学生人数
  • 返回:贺老师课程教学链接【项目1-学生人数没个准】输入学生成绩,输出高于平均成绩的学生序号和成绩。...考虑学生人数不定,用动态数组是个更适合的方案下面的程序结构供参考:#include #include_________ //
  • 动态内存分配

    2008-09-03 09:15:00
    准备:动态内存分配一、为什么用动态内存分配但我们未学习链表的时候,如果要存储数量比较多的同类型或同结构的数据的时候,总是使用一个数组。比如说我们要存储一个班级学生的某科分数,总是定义一个float型(存在...
  • 内存分配 程序在内存中是分段存储的。 代码段:存放语句转换的数字;程序运行时不可修改; 全局段:用来记录全局变量和静态变量的存储位置;不会随着程序的运行而改变; 栈:存放局部变量,块变量,形式参数和返回值...
  • 1、学生班级分配 各个专业都有一个录取的学生人数m,然后是学校要求这个专业的班级数n,我们将每个班级最少需要分配的人数(这是我的一个朋友给我的提示) h求出为m/n,然后将学生人数于班级数的余数j求出,再将这j...
  • 编程输入学生人数n及某门课成绩,计算并输出其平均分的整数部分(请用malloc和free进行动态内存分配)。 input: 5 90 80 70 60 50 output: 70 #include &lt;iostream&gt; #include &lt;malloc.h&...
  • 运用“函数”来表达:带有“动态分配”的“结构体数组”及“指针”的 学生信息管理系统,附加对结构体成员其一的“成绩”进行“冒泡排序” //运用“函数”来表达:带有“动态分配”的“结构体数组”及“指针”的 ...
  • 问题及代码:/* ...问题描述:学生人数没个准 输入描述:输入学生人数及学生成绩 程序操作:算出平均成绩 程序输出:输出成绩高于平均成绩的同学的学号以及成绩 */ #include&lt;stdio.h&gt; #incl...
  • C语言之动态内存分配

    2015-09-10 19:54:23
    准备:动态内存分配 一、为什么用动态内存分配 但我们未学习链表的时候,如果要存储数量比较多的同类型或同结构的数据的时候,总是使用一个数组。比如说我们要存储一个班级学生的某科分数,总是定义一个float型...
  • C语言动态内存分配

    2011-04-29 11:50:00
    //C语言动态内存分配 /* 伟大的Bill Gates 曾经失言: 640K ought to be enough for everybody. — Bill Gates 1981 */ //E:/ACM/ACM_Easy/Debug/ACM_Easy.exe ///测试数据 /** Microsoft Windows [版本 6.1...
  • /* ...*All rights reserved. ...*问题描述:项目1-学生人数没个准 *输入学生成绩,输出高于平均成绩的学生序号和成绩。 其中学生人数不定,可能10个,可能1000。在录入成绩之前,学生人数由键盘输入。 由于要先求出平均成
  • python练习-学生班级分配问题

    千次阅读 2020-04-22 21:58:50
    题目要求:四个班级,八个学生,随机将八个学生平均分配到四个班级中,也就是每一个班级有且只有两个学生。 在这里小编写了两种实现方法,如有错误,请大家多多指点,在此谢过。如果还有不同的实现方法,不如给小编...
  • 链表的C语言实现 含动态内存分配
  • 70行以内java代码实现,n个学生分配n个座位,随机分配,要求学号相邻座位不相邻。 我是采用二维数组来模拟问题! 本次没考虑先随机选学生,再随机分配座位,而是考虑的按顺序来给学生分配座位,座位是随机分配的,...
  • 随机分配座位,共n个学生,使学号相邻的同学座位不能相邻。座位肯定也是n个,如果座位多余学生个数,这种情况 没有考虑。!也是一种问题。。。 我的思路是,先定义50个拥有学号的学生并且该学生对象中保存他的学号...
  • 链表的C语言实现(含动态内存分配)

    万次阅读 2004-10-22 12:28:00
    链表的C语言实现(含动态内存分配)上 链表的C语言实现之动态内存分配 一、为什么用动态内存分配 但我们未学习链表的时候,如果要存储数量比较多的同类型或同结构的数据的时候,总是使用一个数组。比如说我们要存储...
  • 输入在第一行给出两个不超过 100 的正整数 N 和 M,分别是学生人数和判断题数量。第二行给出 M 个不超过 5 的正整数,是每道题的满分值。第三行给出每道题对应的**正确答案,0 代表“非”,1 代表“是”。**随后 N ...
  • 在main函数中,通过输入,创建N个学生,输入一个分组数m,将学生分配到m个组,要求女生尽量平均分配到每个组中,最后输出分组情况。
  • 首先定义一个学生结构体,再直接定义一个全局指针变量stu,让下面的函数都可以访问到这个动态内存 学生类结构体的信息大家可以自己添加。 struct Student{ int no; //学号 char name[4...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,341
精华内容 4,536
关键字:

动态分配学生人数