• 第八次作业


     1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。

    #include<stdio.h>
    #define N 1000
    int main()
    {
    	int sum=0,a=1,b=1,c,d,e=0,i,max,min,score[N];
    	float average;
        i=0;
        printf("请输入学生的成绩,输入负数时退出
    ");
    	scanf("%d",&score[i]);
    	e++;
    	while(score[i]>=0)
    	{
    		sum=sum+score[i];
    	    i++;
    	printf("请输入学生的成绩,输入负数时退出
    ");
    	scanf("%d",&score[i]);
    	e++;
    	}
    	average=(float)sum/i;
    	printf("平均分为%.2f
    ",average);	
    	i=0;
    	max=score[0];
        min=score[0];
    	while(score[i]>=0&&i<=e)
    	{
    		if(score[i]>max)
    		{
    		   	max=score[i];
    	    }
    	    if(score[i]<min)
    		{
    		    min=score[i];
    	    }
    	    i++;
    	}
    	i=0;
    	while(score[i]>=0&&i<=e)
    	{
    		if(score[i]==max)
    		{
    			printf("最高分是第%d个学生
    ",i+1);
    		}
    		if(score[i]==min)
    		{
    			printf("最低分是第%d个学生
    ",i+1);
    		}
    		i++;
    	}
    	printf("最高分为%d
    最低分为%d
    ",max,min);
    	printf("请输入一个学生的成绩
    ");
    	scanf("%d",&c);
    	for(i=0;i<N;i++)
    	{
    	    if(score[i]==c)
    	    {
    	    	d=i+1;
    			printf("这是第%d个学生
    ",d);
    	    }
        }
    	return 0;
     } 
    

      

    2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。

    #include<stdio.h>
    #define N 11
    int main()
    {
    	int a,b,c,d,i;
    	int number[10]={2,4,6,8,10,12,14,16,18,20};
    	printf("请输入要插入的数
    ");
    	scanf("%d",&a);
    	for(i=0;i<N;i++)
    	{
    		if(a<number[i])
    		{
    			b=i;
    			printf("插入到第%d位
    ",b+1);
    			break;
    		}
    	}
    	if(a>=number[i])
    	{
    		b=10;
    	    printf("插入到第%d位
    ",b+1);
    				
    	}
    	for(i=9;i>b-1;i--)
    	{
    		number[i+1]=number[i];
    	}
    	number[b]=a;
    	for(i=0;i<=10;i++)
    	{
    		printf("% d",number[i]);
    	 } 
    	return 0;
    }
    

      

    3.用数组实现火柴棍等式

    #include<stdio.h>
    #define N 10
    int main()
    {
    	int x,y,z,a,b,c,i;
    	int number[10]={6,2,5,5,4,5,6,3,7,6};
    	for(x=0;x<=9;x++) 
    	{   
    	    a=number[x];
    	    for(y=0;y<=9;y++)
    	    {   
    		    b=number[y];
    	        for(z=0;z<=9;z++)
    			{
    				c=number[z];
    				if(z==x+y)  
    		        {    	
    				    if(a+b+c==12)
    					{    
    						printf("%d+%d=%d ",x,y,z);
    					}	
    				} 
    			}
    		}
    	}
    	return 0;
    }
    

      

    知识点总结:

    1.数组先定义后使用,最好用#define宏定义,只能逐个引用数组元素

    2.数组的表示方式  数组名[下标]  下标是从零开始的

    3.数组中的每一个元素都属于同一种数据类型

    4.数组创建后不能改变大小,元素在内存中按顺序排列

    实验总结:

    1.输出学生成绩时对应数组下标要加一,因为下标是从零开始

    2.输出最高分和最低分时,有可能有多个学生

    3.在一个数组中插入数时,先将数组中的元素向前或向后移动

  • 相关阅读:
    斐波那契数列 (一些公式)
    TreeMap的应用
    Maximum Depth of Binary Tree,求树的最大深度
    Minimum Depth of Binary Tree,求树的最小深度
    层序遍历二叉树的两种方法
    Binary Tree Zigzag Level Order Traversal,z字形遍历二叉树,得到每层访问的节点值。
    Binary Tree Level Order Traversal,层序遍历二叉树,每层作为list,最后返回List<list>
    Symmetric Tree,对称树
    Same Tree,判断两个二叉树是不是相同的树,结构相同,每个节点的值相同
    Recover Binary Search Tree,恢复二叉排序树
  • 原文地址:https://www.cnblogs.com/jg666666/p/6103173.html
Copyright © 2020-2023  润新知