zoukankan      html  css  js  c++  java
  • 第八次作业

    一、实验内容       

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

    #include<stdio.h>
    #define N 100
    int main()
    {
    	int score[N],n,i,sum,max,min,grade,x;
    	double average;
    	printf("请输入学生的数量。
    ");
    	scanf("%d",&n);
    	sum=0;
    	for(i=1;i<=n;i++)
    	{
    		printf("请输入第%d个学生的成绩。
    ",i);
    		scanf("%d",&score[i]);
            sum=sum+score[i];
    	}
    	average=(double)sum/n;
    	printf("平均成绩为%.2lf
    ",average);
    	max=score[1];
    	min=score[1];
    	for(i=1;i<=n;i++)
    		if(score[i]>max)
    			max=score[i];
    		if(score[i]<min)
    			min=score[i];
    	}
    	for(i=1;i<=n;i++)
    	{
    		if(score[i]==max)
    			printf("第%d名学生成绩为最高分。
    ",i);
    	}
        for(i=1;i<=n;i++)
    	{
    		if(score[i]==min)
    			printf("第%d名学生成绩为最低分。
    ",i);
    	}
    	printf("输入你查询的成绩。
    ",i);
    	scanf("%d",&grade);
    	x=0;
    	for(i=1;i<=n;i++)
    	{
    		if(score[i]==grade)
    		{
    			printf("得这个成绩的学生是%d
    ",i);
    			x++;
    		}
    	}
    	printf("共有%d名学生。
    ",x);
    	return 0;
    }
    

      

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

    #include<stdio.h>
    #define N 11
    int main()
    {
        int numbers[N]={1,2,3,4,5,6,7,8,9,10},number,i,n;
    	printf("请输入一个数,插入到数组中。
    ");
    	scanf("%d",&number);
    	for(i=0;i<N-1;i++)
    	{
    		if(number<=numbers[i])
    		{
    			for(n=N-1;n>=i;n--)
    			{
    				numbers[n+1]=numbers[n];
    			}
    			numbers[i]=number;
    			break;
    		}
    	}
    	while(1)
    {
    numbers[N-1]=number;
    }
    for(i=0;i<=10;i++) { printf("%d ",numbers[i]); } return 0; }

      

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

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

      

    附加题

        输入一行任意长的数字,用数组元素作为计数器统计每个数字出现的次数。用下标为0的元素统计0出现的次数,用下标为1的元素统计1出现的次数…

    #include<stdio.h>
    int main()
    {
    	int numbers[10]={0},a,b,i;
    	char number;
    	printf("请输入一行任意长的数字。
    ");
    	while(number!='
    ')
    	{
    		scanf("%c",&number);
    		numbers[number-'0']++;
    	}
    	for(i=0;i<10;i++)
    		printf("%d出现了%d次。
    ",i,numbers[i]);
    	return 0;
    }
    

      

    二、知识点总结

    1.#define标识符,替换列表(替换列表可以是数,字符串,标点符号,运算符,标识符,关键字,字符常量。注意替换列表可以为空),典型的使用方法用宏观定义或自己习惯的C语言用法习惯。

    2.使用#define声明多行函数与声明单行函数没有本质区别。

    3.一维数组定义方式:数据类型  数组名[数组长度],数组的特点:数组中的每一个元素都属于同一种数据类型;数组一旦创建,不能改变大小;数组中的元素在内存中是连续依次排列的。数组:有序数列的集合,用数组名标识;元素:属同一数据类型,用数组名和下标确定。

    4.一维数组的使用,数组必须先定义,后使用;只能逐个引用数组元素,不能一次引用整个数组;每个数组元素是一个数组类型的变量。数组元素表示形式:数组名[下标](下标从0开始),引用时下标允许是int型变量或表达式。

    三、实验总结(实验中遇到的问题及解决方法) 

    1.第一道题使用标识符和一维数组,思路大致为先输入学生的数量,再输入成绩,求和求平均值,再求最大最小值,最后按照要求输入想要查询的成绩,以及得分者。编程过程中注意循环,输入输出,大括号的使用。

    2.第二道题在一组数组中插入数字,首先声明替换列表,当输入的数字插入时,要从第一个数开始做比较,找到位置后,后边的数要依次后移一位,就相当于numbers[n+1]=numbers[n],合理的使用循环。

    3.第三道题数组实现火柴棍等式,使用一维数组,利用循环,求三个数所需的火柴棍数量,做判断输出。

    4.附加题要求输入一行数字,判断各数字各出现了几次,利用for(i=0;i<10;i++)的循环,再输出,重要的是编程的思路,想清楚符合和不符合的情况。

  • 相关阅读:
    【Educational Codeforces Round 101 (Rated for Div. 2) C】Building a Fence
    【Codeforces Round #698 (Div. 2) C】Nezzar and Symmetric Array
    【Codeforces Round #696 (Div. 2) D】Cleaning
    【Codeforces Round #696 (Div. 2) C】Array Destruction
    【Educational Codeforces Round 102 D】Program
    【Educational Codeforces Round 102 C】No More Inversions
    【Good Bye 2020 G】Song of the Sirens
    【Good Bye 2020 F】Euclid's nightmare
    使用mobx入门
    requestAnimationFrame 控制速度模拟setinterval
  • 原文地址:https://www.cnblogs.com/mlj527/p/6099815.html
Copyright © 2011-2022 走看看