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++)的循环,再输出,重要的是编程的思路,想清楚符合和不符合的情况。

  • 相关阅读:
    公式编辑器mathtype中一些符号显示方框的解决方法
    I got my first job
    我的第二个面试通知
    清空visual studio2010的查找历史
    King Back
    IIS中“使用 XSL 样式表无法查看 XML 输入”问题的解决
    JDBC 各种连接方式[转载]
    力扣每日刷题(1)
    力扣每天刷题(3)
    力扣每天刷题(2)
  • 原文地址:https://www.cnblogs.com/mlj527/p/6099815.html
Copyright © 2011-2022 走看看