首页 > 代码库 > 第八次作业

第八次作业

一、实验内容       

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

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

  技术分享

附加题

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

#include<stdio.h>
int main()
{
	int numbers[10]={0},a,b,i;
	char number;
	printf("请输入一行任意长的数字。\n");
	while(number!=‘\n‘)
	{
		scanf("%c",&number);
		numbers[number-‘0‘]++;
	}
	for(i=0;i<10;i++)
		printf("%d出现了%d次。\n",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++)的循环,再输出,重要的是编程的思路,想清楚符合和不符合的情况。

第八次作业